您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

java连接数据库的常见问题及解决办法

时间:2022-08-06 10:39:35  来源:今日头条  作者:重庆源码时代

前言:JAVA连接数据库时,同学们容易出现一些问题。这里把jdbc连接实现过程写出来以及列举一些常见的问题。
简介:
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
 

一、准备:


1 在进行数据库连接之前,需要准备一个对应版本的数据库驱动,那么我们首先需要找到电脑上MySQL的版本是多少
怎么查看?如果你的安装目录上写有版本号,就不用再看了
1) 找到安装的mysql,进入bin目录,在路径上输入cmd,回车

 


 


 


2) 输入登录mysql的命令:mysql -u root -p,回车,输入正确密码,回车,这个时候我们就可以看到mysql的版本是8.0.28

 


 


3) 根据版本选择驱动下载,我们是8.0以上的版本,所以选择8.0以上版本的驱动,去官网进行下载

 


2 准备一个数据库

        create database jdbc;
        use jdbc;
        
        create table user
        (
          id   int primary key auto_increment not null,
          name varchar(20)  not null,
          pwd  varchar(20)  not null
        );
                
        insert into user(name,pwd) values('小白','123');
        insert into user(name,pwd) values('小黑','987');
                
        select * from user;

 


二、写代码


1 创建一个Java项目

 


2 创建一个类

 


3 把jar包复制到项目中,然后构建路径

 


 


4 编写连接数据库的代码,需要用到操作数据库的各种接口和类型:

 


5 开始编写代码,查询全部数据

public class JDBCTest {
	public static void main(String[] args) {
		try {
			/*
			 * 加载驱动,这里需要注意:
			 * mysql5.0版本使用com.mysql.jdbc.Driver
			 * mysql8.0版本使用com.mysql.cj.jdbc.Driver
			 */
			Class.forName("com.mysql.cj.jdbc.Driver");
			//获取连接 
			//这里要注意jdbc:mysql://127.0.0.1:3306/前面是固定写法,jdbc是数据库名字
			//root是mysql的用户名,123456是密码,根据实际情况编写
			Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbc","root","123456");
			//获取语句执行对象
			Statement statement = conn.createStatement();
			//定义sql语句
			String sql="select * from user";
			//执行得到结果
			ResultSet resultSet = statement.executeQuery(sql);
			//循环结果,打印字段
			while(resultSet.next()){
				//获取id,数据类型与字段类型一致
				Integer id = resultSet.getInt("id");
				//获取用户名
				String name = resultSet.getString("name");
				//获取密码
				String pwd = resultSet.getString("pwd");
			    //打印
				System.out.println(name+"-----"+pwd);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


6 模拟登录操作,条件查询

public class JDBCTest {
	public static void main(String[] args) {
		try {
			/*
			 * 加载驱动,这里需要注意:
			 * mysql5.0版本使用com.mysql.jdbc.Driver
			 * mysql8.0版本使用com.mysql.cj.jdbc.Driver
			 */
			Class.forName("com.mysql.cj.jdbc.Driver");
			//获取连接
			Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbc","root","123456");
                        //定义sql语句
			String sql="select * from user where name=? and pwd=?";
			//获取语句执行对象
			PreparedStatement ps = conn.prepareStatement(sql);
			//传参
			//方法的参数有两个,第一个表示第几个参数,从1开始;第二个是参数内容
			ps.setString(1, "小白");
			ps.setString(2, "123");
			//执行获取结果
			ResultSet resultSet = ps.executeQuery();
			//判断是否存在数据
			if(resultSet.next()){
				System.out.println("登录成功...");
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


7 分页查询
首先添加数据

 

public class JDBCTest {
	public static void main(String[] args) {
		try {
			/*
			 * 加载驱动,这里需要注意:
			 * mysql5.0版本使用com.mysql.jdbc.Driver
			 * mysql8.0版本使用com.mysql.cj.jdbc.Driver
			 */
			Class.forName("com.mysql.cj.jdbc.Driver");
			//获取连接
			Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbc","root","123456");

			String sql="select * from user limit ?,?";
			//获取语句执行对象
			PreparedStatement ps = conn.prepareStatement(sql);
			//传参,表示第一个参数是0,第二个参数是5
			//sql语句:select * from user limit 0,5 ; 从第一条开始,查询五条数据
			ps.setInt(1, 0);
			ps.setInt(2, 5);
			ResultSet resultSet = ps.executeQuery();
			//判断是否存在数据
			while(resultSet.next()){
				//获取id,数据类型与字段类型一致
				Integer id = resultSet.getInt("id");
				//获取用户名
				String name = resultSet.getString("name");
				//获取密码
				String pwd = resultSet.getString("pwd");
			    //打印
				System.out.println(id+"------"+name+"-----"+pwd);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

剩下的其他操作类似,就不一一列举了

三、总结


总结一下,连接数据库容易出问题的地方
1 连接数据库驱动错误,数据库驱动需要选择数据库对应版本的驱动,目前是5.0和8.0版本的。解决办法:更换为正确版本的驱动
2 连接数据库时,数据库名,数据库的用户名和密码,填写错误,这样会导致连接不上数据库。解决办法:填写正确的数据库名,用户名和密码
3 sql语句错误,sql语句错误一般是语法错误或者符号错误。解决办法:打印一下sql语句,把sql语句拿到数据库里去执行,看是否有问题,数据库能够执行成功,就可以了
4 传参错误,传参方法与传参类型一致,int类型使用setInt方法,以此类推。解决办法:修改方法与类型一致
5 如果你们还遇到了其他问题,可以联系源妹儿。



Tags:数据库   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
背景2021年6月1日,蚂蚁集团开源 OceanBase 代码,这款连续两年占领 TPC-C 榜首的数据库产品再次拥抱开源。而此时,在开源社区国产数据库的赛道上还有另外一位明星选手:TiDB。同为...【详细内容】
2022-10-24  Tags: 数据库  点击:(4)  评论:(0)  加入收藏
SQLite 是一个被大家低估的数据库,因为有很多人认为它是一个不适合生产环境使用的玩具数据库。但事实上,SQLite 是一个非常可靠的数据库,它可以处理 TB 级的数据,虽然它没有网络...【详细内容】
2022-10-11  Tags: 数据库  点击:(11)  评论:(0)  加入收藏
读写数据库大多数情况下,海量的数据是使用数据库进行数据库进行存储的,这主要是依赖于数据库的数据结构化、数据共享性、独立性等特点。因此,在实际生产环境中,绝大多数的数据都...【详细内容】
2022-09-23  Tags: 数据库  点击:(25)  评论:(0)  加入收藏
有时候部署服务器正式版与测试版数据库的时候总会有人忘记某些字段同步更新的问题不管是字段类型 或是字段名称. 然后等待着的就是一堆的错误日志.所以一直想找一款可以查找...【详细内容】
2022-09-12  Tags: 数据库  点击:(46)  评论:(0)  加入收藏
步骤一:设置sql server数据库1.以新建一个新用户名test作为远程连接登录名。在本地登录sql server数据库,安全性->右键用户名 2.点击根目录右键,选择属性 选择安全性 选...【详细内容】
2022-09-11  Tags: 数据库  点击:(53)  评论:(0)  加入收藏
数据库更改是开发过程中一个棘手的部分。我们能否像对待代码一样对待数据库,将其作为 CI/CD 周期的一部分?数据库更改是应用程序开发过程中一个棘手的部分:它通常涉及来自不同...【详细内容】
2022-09-03  Tags: 数据库  点击:(67)  评论:(0)  加入收藏
在日常开发中,经常会需要进行数据库操作,如执行一些 SQL 查询、或者执行一些 SQL 命令等,如果每次执行操作都按照 Delphi 数据库操作的步骤一步一步地组织语句去执行的话,又显得...【详细内容】
2022-09-01  Tags: 数据库  点击:(72)  评论:(0)  加入收藏
尊敬的客户:非常荣幸地通知您,华为认证HCIE-GaussDB-OLTP V1.0(中文版)预计将于2022年09月30日正式对外发布。为了帮助您做好学习、培训和考试计划,现进行预发布通知,请您关注。一...【详细内容】
2022-08-30  Tags: 数据库  点击:(185)  评论:(0)  加入收藏
开发中经常说到数据入库,我们在实现时需要知道使用何种技术,连接哪个数据库,连接数据库的账号和密码等等。今天要跟大家分享的是spring web项目中使用mybatis连接到postgresql...【详细内容】
2022-08-29  Tags: 数据库  点击:(60)  评论:(0)  加入收藏
摘要:区别于PostgreSQL和Oracle,MariaDB采取的是一种现代的云原生的方法,在低成本、耐用的云存储上管理几乎无限量的地理空间数据,并提供基于OGC(开放地理空间信息联盟)标准的REST...【详细内容】
2022-08-29  Tags: 数据库  点击:(42)  评论:(0)  加入收藏
▌简易百科推荐
1、原理:基于javaAgent和Java字节码注入技术的java探针工具技术原理 2、原理分析动态代理功能实现说明,我们利用javaAgent和ASM字节码技术开发java探针工具,实现原理如下:jdk1.5...【详细内容】
2022-10-24  马士兵Java架构  今日头条  Tags:Java探针   点击:(4)  评论:(0)  加入收藏
简单描述java虚拟机内存分配与GC触发场景堆内存中,新生代和老年代分区图解 堆空间的参数设置-XX: +PrintFlagsInitial :查看所有的参数的默认初始值-XX: +PrintFlagsFinal :...【详细内容】
2022-10-21  chost-jie    Tags:java虚拟机   点击:(5)  评论:(0)  加入收藏
概述最近项目上反馈某个重要的定时任务突然不执行了,很头疼,开发环境和测试环境都没有出现过这个问题。定时任务采用的是 ScheduledThreadPoolExecutor,后来一看代码发现踩了一...【详细内容】
2022-10-21  Java架构学习指南  今日头条  Tags:   点击:(7)  评论:(0)  加入收藏
Java 流不能很好地处理已检查的异常。在本文中,深入探讨如何管理此类问题。 Java 引入了检查异常的概念。与早期的方法相比,强制开发人员管理异常的想法是革命性的。如今,Java...【详细内容】
2022-10-21  qaseven     Tags:Lambda   点击:(1)  评论:(0)  加入收藏
Java强大的功能需要依托在软件工具上实现,所以Java编程开发需要用到编程工具,市面上有哪些Java编程工具呢?那种编程工具好呢?该怎么选择呢?接下来罗列了一系列的Java编程开发工具...【详细内容】
2022-10-17  farsightCD  搜狐号  Tags:Java编程   点击:(11)  评论:(0)  加入收藏
Java是一门用来开发软件的计算机语言,如同汉语是在中国进行交流你的语言,西班牙语是在西班牙交流的语言,编程自然适合计算机沟通,就需要使用计算机认识的语言,那么Java就是其中一...【详细内容】
2022-10-15  添甄  今日头条  Tags:Java   点击:(6)  评论:(0)  加入收藏
相信很多学生 在 学习英语的时候都有这样那样的问题 ,因此 也 困扰着太多 想要学习编程的小伙伴。其实学习编程,常用的单词就那么多,只要把必备的单词学会,你的代码也能写的很6,...【详细内容】
2022-10-14  风云教育  今日头条  Tags:Java   点击:(12)  评论:(0)  加入收藏
JVM 内存有以下区域: Young Generation Old Generation Metaspace Others region 图:JVM 内存区域 要查看哪些对象存储在哪个区域,您可以参考此视频剪辑。有时您的应用程序...【详细内容】
2022-10-04  qaseven   今日头条  Tags:Java   点击:(19)  评论:(0)  加入收藏
属性文件乱码通常是中文乱码,在英文下通常没有这个问题。 如上图显示的,中文字符在属性文件中读取后会显示为乱码.问题和解决导致这个问题的主要原因是属性文件如果你不进行设...【详细内容】
2022-10-04  松鼠工厂  今日头条  Tags:Java   点击:(14)  评论:(0)  加入收藏
JoinerGuava Joiner顾名思义就是将字符串连接起来 Joiner joiner = Joiner.on("; ").skipNulls(); System.out.println(joiner.join("Harry", null, "Ron", "Hermione"));...【详细内容】
2022-10-03  小盒子的技术分享    Tags:Java   点击:(26)  评论:(0)  加入收藏
站内最新
站内热门
站内头条