Java連接MySQL簡單步驟及常見問題解析


這篇文章跟讀者們介紹Java語言如何連接到MySQL數據庫相關操作,及FAQ(Frequently Asked Questions)介紹。

選擇工具和准備數據集

IDE:Eclipse

數據庫:使用的是MySQL 8.0

驅動程序包:mysql-connector-java-8.0.12.jar

驅動程序類名:com.mysql.cj.jdbc.Driver

提前准備工作:筆者使用MySQL Workbench 工具來進行數據庫CRUD各種操作,在數據庫中建立了一個test數據庫,接着在test數據庫中建立teacher表格和往向表格中增加數據。

 

並且已經往表中插入了6項數據。

 

在Eclipse中建立一個數據庫操作的Java project。並且在project里面引入(配置)驅動程序jar包

 

主要步驟

1.導入所需要的包

 

2.注冊JDBC驅動

 

3.建立連接到數據庫

 

 

4.執行 CRUD 操作

 

5.處理得到的結果

 

6.關閉資源,釋放連接

 

提供源代碼參考:

 1 //STEP 1:導入包
 2 //大多數情況下,使用import java.sql.*;就足夠了。
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7 import java.sql.Statement;
 8 
 9 public class DBConnettion {
10     
11     //不同版本的數據庫驅動,名字會不相同同。
12     //數據庫驅動 mysql-connector-java 6.0以上的版本, 驅動名是:"com.mysql.cj.jdbc.Driver"
13     //舊版本驅動名是:"com.mysql.jdbc.Driver"
14     private static final String JDBC_DEIVER = "com.mysql.cj.jdbc.Driver";
15     //筆者查看本機數據庫進程,默認使用3306端口,大家根據自己數據庫進程端口號來相應修改。
16     //比如我要訪問MySQL的test數據庫, 主機ip:端口號/數據庫名稱  數據庫URL格式:---"jdbc:mysql://localhost:3306/test
17     private static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false";//?useUnicode=true&characterEncoding=utf8&useSSL=false
18     private static final String USER = "****"; //"****"替換成自己的數據庫用戶名
19     private static final String PASS = "****"; //"****"替換成自己的數據庫密碼
20     
21     public static void main(String[] args) {
22         Connection conn = null;
23         Statement stmt = null;
24         
25         try {
26             //STEP 2:注冊 JDBC 驅動
27             Class.forName(JDBC_DEIVER);
28             
29             //STEP 3:建立連接到數據庫
30             System.out.println("正在連接數據庫......");
31             conn = DriverManager.getConnection(DB_URL, USER, PASS);
32             stmt = conn.createStatement();
33             
34             //STEP 4:執行 CRUD 操作
35             System.out.println("正在查詢數據:");
36             String sql = "select * from teacher;";
37             ResultSet rs = stmt.executeQuery(sql);
38             
39             //STEP 5:處理得到結果
40             System.out.println("Department   ID     Name");
41             while (rs.next()) {
42                 int id = rs.getInt("id");
43                 String name = rs.getString("name");
44                 if (!rs.isLast())
45                     System.out.println("\t    " + id + "   " + name);
46                 else
47                     System.out.println( "   " + id + "   " + name);
48             }
49             
50             //STEP 6:關閉資源,釋放連接。
51             rs.close();
52             stmt.close();
53             conn.close();
54         } catch (ClassNotFoundException e) {
55             e.printStackTrace();
56         } catch (SQLException e) {
57             e.printStackTrace();
58         } finally {
59             try {
60                 if (stmt != null)
61                     stmt.close();
62                 if (conn != null)
63                     conn.close();
64             } catch (SQLException e) {
65                 // TODO Auto-generated catch block
66                 e.printStackTrace();
67             }
68         }
69         System.out.println("釋放數據庫連接......");
70     }
71 }

 

運行結果:

 

常見問題解析及解決方法

出現問題:

java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

解析:

從錯誤提示可知道是時區的錯誤,因此只要將數據庫系統的時區設置為你當前系統時區即可。

解決方法:

因此使用root用戶登錄mysql,按照如下圖所示操作即可。

查看數MySQL據庫系統的時區設置

show variables like '%time_zone%';

筆者電腦系統時區設置為GMT+8:北京時間。而數據庫系統時區默認為GMT+0(格林尼治時間),因此修改數據庫系統時區跟我的系統時區相互一致。

set global time_zone = '+8:00';

 

對數據庫系統時區變量做修改,不會立即發生改變。退出本次黑窗命令行(客戶端)后

重新登錄數據庫,再次進行數據庫系統時區查詢,發現已經做出更改。

show variables like '%time_zone%';

 

 

出現問題:

Sat May 04 19:01:08 CST 2019 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

 

解析:

從MySQL數據庫 5.5.45+ 以后,對數據庫的訪問都要求建立SSL加密連接。我們只是做一個簡單的數據庫訪問實例,因此訪問數據庫不進行SSL加密連接。

解決方法:

可以在數據庫URL連接語句末尾加上"?useSSL=false"來取消數據庫的警告。

或者可以給數據庫服務器提供證書驗證的信任庫,進行SSL加密連接。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM