使用JDBC連接Mysql數(shù)據(jù)庫時需要注意哪些事項

使用JDBC連接MySQL數(shù)據(jù)庫時需要注意哪些事項?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

公司主營業(yè)務:成都網(wǎng)站設計、網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出信宜免費做網(wǎng)站回饋大家。

首先理清幾個概念:

  • JDBC:java數(shù)據(jù)庫連接,是Orical公司的指定的一套規(guī)范接口

  • java數(shù)據(jù)庫驅(qū)動:JDBC的實現(xiàn)類,由相應的數(shù)據(jù)庫廠商提供,可以通過驅(qū)動去操作不同的數(shù)據(jù)庫

  • 在java-數(shù)據(jù)庫這里,jdbc-api中的所有包都是java.sql或者javax.sql

JDBC的操作步驟:

 (1)建立數(shù)據(jù)庫和表

 (2)創(chuàng)建項目

 (3)導入驅(qū)動jar包

 (4)注冊驅(qū)動

  Class.forName("com.mysql.jdbc.Driver");

 (5)獲取連接

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:端口號/項目名", "登錄名", "密碼");

前言

最近安裝了一個 mysql 8.0 版本的數(shù)據(jù)庫,在程序中連接的時候可謂是狀況不斷。之前也會遇到一些問題,這里就對使用 JDBC 連接mysql 會出現(xiàn)的問題做一個匯總。

在此之前說明一下環(huán)境:

  • 開發(fā)工具:IDEA

  • mysql版本: 8.0.12 for Win64 on x86_64 (MySQL Community Server - GPL)

  • mysql驅(qū)動包:8.0.12

驅(qū)動包URL 的改變

異常信息

Loading class com.mysql.jdbc.Driver. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

原因

通過異常我們可以發(fā)現(xiàn),新的驅(qū)動url是com.mysql.cj.jdbc.Driver,經(jīng)過在網(wǎng)上查閱資料發(fā)現(xiàn),從 mysql6開始,驅(qū)動包開始使用新的驅(qū)動 url。如果使用舊的 5.0 版本的驅(qū)動包,則不用驅(qū)動URL,但是如果使用舊的驅(qū)動可能會出現(xiàn)一些意想不到的問題。所以還是建議將驅(qū)動包升級,然后改變 驅(qū)動 URL 的值。

解決方法

將驅(qū)動 URL 由com.mysql.jdbc.Driver 換成 com.mysql.cj.jdbc.Driver

SSL 警告

警告信息

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.

原因

對警告信息翻譯如下。

不建議在沒有服務器身份驗證的情況下建立SSL連接。根據(jù)MySQL 5.5.45+,如果未設置顯式選項,則默認情況下必須建立5.6.26+和5.7.6+要求的SSL連接。對于不使用SSL的現(xiàn)有應用程序,ValuyServer證書屬性設置為“false”。您需要通過設置useSSL=false來顯式禁用SSL,或者設置useSSL=true并提供用于服務器證書驗證的信任庫`。

解決方法

一般在開發(fā)中基本不需要使用 SSL 連接,在連接字符串后添加useSSL=false參數(shù)就行。但是如果真的有 SSL 連接的需要,則在驅(qū)動 URL 后添加useSSL=true參數(shù)。

jdbc:mysql://localhost:3306/dbname?characterEncoding=UTF-8&useSSL=false

時區(qū)問題

異常信息

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.

原因

同樣也是由于版本升級后,新的版本數(shù)據(jù)庫和系統(tǒng)之間有了時區(qū)差異,需要指定時區(qū)serverTimezone

解決方法

連接字符串后添加參數(shù)&serverTimezone=GMT%2B8,最終連接字符串如下:

jdbc:mysql://localhost:3306/dbname?characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8

修改數(shù)據(jù)庫時間。先通過命令行連上數(shù)據(jù)庫,依次輸入命令及其輸出如下

mysql> show variables like "%time_zone";
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone |  |
| time_zone  | SYSTEM |
+------------------+--------+
2 rows in set, 1 warning (0.04 sec)

mysql> set global time_zone="+8:00";
Query OK, 0 rows affected (0.01 sec)

XML 配置文件中 & 的轉(zhuǎn)義

異常信息

org.mybatis.generator.exception.XMLParserException: XML Parser Error on line 16: 對實體 “useSSL” 的引用必須以 ‘;' 分隔符結(jié)尾。

原因

這是我在使用mybatis generator時出現(xiàn)的錯誤。當時我想在連接字符串后加上useSSL參數(shù),但是由于在 XML 文件中,&是被禁止的,所以需要使用 &的時要用它的轉(zhuǎn)義&來代替。

解決方法

將連接字符串中的 &符號改成&

詳細連接字符串參考

jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&serverTimezone=GMT%2B8&verifyServerCertificate=false&autoReconnct=true&autoReconnectForPools=true&allowMultiQueries=true

當然如果是使用 XML 作為配置文件,需要將 連接字符串中的 &符號改成&

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

網(wǎng)站名稱:使用JDBC連接Mysql數(shù)據(jù)庫時需要注意哪些事項
文章源于:http://muchs.cn/article34/isjope.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、網(wǎng)站排名、服務器托管、網(wǎng)頁設計公司、用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)