JDBC连接Mysql8.0注意事项.(ClassNotFoundException,SQLException)

一、配置文件方面

1.首先确定项目内是否已经导入mysql的jar包。

(1)右键项目–>Build Path–>Configure Build Path
在项目中导入jar文件1
(2)Libraries–>Add External JARs–>找到本地存储的jar包–>打开–>Apply and Close
在项目中导入jar文件2

2.注意:当我们的项目需要使用tomcat服务器启动时,还必须将对应jar包加到在tomcat服务器的lib文件夹下。

找到自己本地的tomcat服务器的lib文件夹,并将mysql的jar包粘贴进去
在tomcat服务器的lib文件夹下添加mysql的jar包

二、代码方面

1.Class.forName()导致的ClassNotFoundException问题

注意,当我们mysql是8.0版本时,驱动与旧版本不同。Class.forName()的参数应该不再是com.mysql.jdbc.Driver,而是改为com.mysql.cj.jdbc.Driver,代码如下:

//配置驱动信息
String driver = "com.mysql.cj.jdbc.Driver";
//加载驱动
Class.forName(driver);

以上内容即可解决mysql8版本的ClassNotFoundException问题。

2.mysql8.0版本所带来的其他问题(SQLException)。

问题1:SSL连接

mysql8.0是不需要建立SSL连接的,我们需要显式关闭(useSSL=false),若不显式关闭将会出现红色的warn提示,但通常不会导致程序停止运行。

问题2:CST(时区)

我们还必须要设置CST(时区)(serverTimezone=GMT%2B8)。该属性若不设置,代码很大概率将会产生SQLException。设置以上两个属性的代码如下:

//配置数据库信息
String url = "jdbc:mysql://localhost:3306/jspdemo?&useSSL=false&characterEncoding=utf-8&serverTimezone=GMT%2B8";
//获取连接
Connection con = DriverManager.getConnection(url,"root","123456");

注意:上面代码中,url中的jspdemo字段为数据库的名字,getConnection方法中的参数root为登录数据库的用户名参数123456为登录数据的密码

三、JDBC连接Mysql8.0数据库Demo

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBTest {
	public static void main(String[] args) {
		//配置驱动信息
		String driver = "com.mysql.cj.jdbc.Driver";
		//配置数据库信息
		String url = "jdbc:mysql://localhost:3306/jspdemo?"
				+ "&useSSL=false&characterEncoding=utf-8&serverTimezone=GMT%2B8";
		try {
			//1.加载驱动
			Class.forName(driver);
			//2.数据库连接
			Connection con = DriverManager.getConnection(url,"root","123456");
			//3.获取连接状态
			Statement sts = con.createStatement();
			//4.执行SQL语句
			ResultSet rs = sts.executeQuery("select password from user where username = 'zfc'");
			//5.遍历结果集
			while(rs.next()) {
				if("123456".equals(rs.getString(1))) {
					System.out.println("存在此用户");
				}
			}
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值