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();
}
}
}