JDBC连接Mysql8.0注意事项.(ClassNotFoundException,SQLException)
- 一、配置文件方面
-
- 1.首先确定项目内是否已经导入mysql的jar包。
- 2.注意:当我们的项目需要使用tomcat服务器启动时,还必须将对应jar包加到在tomcat服务器的lib文件夹下。
- 二、代码方面
-
- 1.Class.forName()导致的ClassNotFoundException问题
- 2.mysql8.0版本所带来的其他问题(SQLException)。
-
- 问题1:SSL连接
- 问题2:CST(时区)
- 三、JDBC连接Mysql8.0数据库Demo
一、配置文件方面
1.首先确定项目内是否已经导入mysql的jar包。
(1)右键项目–>Build Path–>Configure Build Path

(2)Libraries–>Add External JARs–>找到本地存储的jar包–>打开–>Apply and Close
2.注意:当我们的项目需要使用tomcat服务器启动时,还必须将对应jar包加到在tomcat服务器的lib文件夹下。
找到自己本地的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();
}
}
}