1. 程式人生 > >JAVA JDBC使用mysql8.0.jar包連線資料庫的小坑

JAVA JDBC使用mysql8.0.jar包連線資料庫的小坑

喜歡用新不用久,所以我裝軟體基本都是遵循去下載安裝最新版本的軟體,畢竟新的軟體功能多,雖然小坑和小問題也多,但是大部分坑你搜一搜網上都有前人給你填平了,這裡記錄一下自己學習JAVA JDBC連線資料庫時的一個小問題

就是連線資料庫驅動的時(使用了mysql-connector-java-8.0.11.jar驅動包),如下

 //驅動類com.mysql.jdbc.Driver
			Class.forName("com.mysql.jdbc.Driver");
			System.out.println("資料庫載入成功!"); 
// 建立與資料庫的Connection連線
 Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8","root","admin");    

會出現警告①

Establishing SSL connection without server's identityverification 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 optionisn't set. For compliance with existing applications not using SSL theverifyServerCertificate property is set to 'false'. You need either toexplicitly disable SSL by setting useSSL=false, or set useSSL=true and providetruststore for server certificate verification.

原因

驅動程式的描述字串com.mysql.jdbc.Driver是mysql5.0及以前的老寫法

而mysql6.0以後 包括我用的8.0需要這樣寫com.mysql.cj.jdbc.Driver

警告②

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.
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.

原因

MySQL在高版本需要指明是否進行SSL連線。解決方案: 在mysql連線字串url中加入ssl=true或者false即可,如下所示

"jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong"

完整的程式碼如下

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

public class TestJDBC {
	public static void main(String[] args) {
		//初始化驅動
		try {
            //老版驅動類com.mysql.jdbc.Driver
            //如果忘記了第一個步驟的導包,就會丟擲ClassNotFoundException
			Class.forName("com.mysql.cj.jdbc.Driver");
			System.out.println("資料庫載入成功!");
			
			Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?"
					                                 + "useUnicode=true&characterEncoding=utf8&"
					                                 + "useSSL=false&serverTimezone=Hongkong","root","admin");
			System.out.println("連線成功,獲取連線物件: " + c);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
}

其中test是本機資料庫名,root和admin是mysql安裝時建立的賬戶和密碼。

serverTimezone=HongKong 是設定時區,可以填UTC、Asia/Shanghai等等,UTC要比中國時區早8個小時。

待更新。。

相關推薦

JAVA JDBC使用mysql8.0.jar連線資料庫

喜歡用新不用久,所以我裝軟體基本都是遵循去下載安裝最新版本的軟體,畢竟新的軟體功能多,雖然小坑和小問題也多,但是大部分坑你搜一搜網上都有前人給你填平了,這裡記錄一下自己學習JAVA JDBC連線資料庫時的一個小問題 就是連線資料庫驅動的時(使用了mysql-connecto

引入jar操作資料庫連線

commons-dbutils-1.6.jar 1.commons-dbutils-1.6.jar 操作JDBC連線資料庫 並且執行sql語句 處理返回的結果集 三個核心類 DbUtils: 關閉資源的方法(安靜的關閉 不用異常處理) QueryR

Java中一些jar的作用

span 緩存 cxf 6.0 pri tag like servlet license axis.jar SOAP引擎包 commons-discovery-0.2.jar 用來發現、查找和實現可插入式接口,提供一些一般類實例化、單件的生命周期管理的常用方法. j

Java】修改jarclass文件小記

加密 返回 .cn 代碼 要求 ges 命令 文件 定位 今天被瑤瑤要求幫忙了 他現在用的軟件裏有一個bug,因為是外國的開發者,所以要求修改是很麻煩的事。要改的東西很簡單,就是將一個函數裏錯誤的返回值修改。 拿到手的有軟件直接能運行的jar包。 一開始的想法比較簡單,就想

java命令執行jar的方式

運行 -c 必須 loader 自定義 pan ati tcl stat 大家都知道一個java應用項目可以打包成一個jar,當然你必須指定一個擁有main函數的main class作為你這個jar包的程序入口。 具體的方法是修改jar包內目錄META-INF下的MA

Java 讀取Excel2007 jar沖突的問題(org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException)

cati targe com cat lec 報錯 刪除重復 nta ava 1.jar包沖突報錯問題 2.使用的jar包,以及重復jar包 3.刪除重復jar包 Java 讀取Excel2007 jar包沖突的問題(org.apache.poi.POIXMLExce

JAVA導入jar

引入 .org com 拷貝 bsp onf ges 右擊 rar 新建的java項目,想要引用別的jar包中的方法,需要將.jar文件引入自己的project中。 例如: org.apache.commons.codec.binary.Base64; 1.下載jar包

java中常用jar

中一 2.6 jdb jxl obj 串行化 分析 lean tag commons-io.jar:可以看成是java.io的擴展,用來幫助進行IO功能開發.它包含三個主要的領域:Utilityclasses-提供一些靜態方法來完成公共任務.Filters-提供文件過濾器的

java web的jar衝突導致NoSuchMethodError報錯

 在測試指令碼編寫和應用部署時,經常遇到的一 個問題是:java.lang.NoSuchMethodError。這個問題產生的根本原因是執行時應用載入的jar包版本不是應用程式碼真正需要的版本。要解決這個問題,就要讓應用載入真正“HasSuchMethod"的類所在的jar包。解

檔案在Java工程和 jar統一處理

default.ini配置檔案,希望在程式碼開發過程中和打成jar包釋出過程中都能夠讀取到。 File file = new File("default.ini"); InputStream fis;

Java 獲取當前jar執行的路徑

1.應用根據需求來,直接上程式碼 //獲取當前jar 的執行路徑 ApplicationHome home = new ApplicationHome(getClass()); File jarFile = home.getSource();

Hbase的極限測試經驗之java專案的jar匯入

Hbase的極限測試的內容是把之前編過的網站的後臺資料庫改成hbase即可。 我很快就在hbase資料庫中建完表,也把關於操作資料庫的函式寫好了。 當我除錯時,發現在jsp中的操作資料庫的函式都不能用。 提示我與沒有找到與hbase的類,可是我當時已經通過Build Path的方式把與Hbase有關的所

C#調用java類、jar方法

需要 引用 form style 所有 wing .data part system 一、將已經編譯後的java中Class文件進行打包;打包命令JAR 如:將某目錄下的所有class文件夾全部進行打包處理; 使用的命令:jar cvf test.jar -C com/ .

java開發常用jar介紹(轉載)

jta.jar 標準JTA API必要 commons-collections.jar 集合類 必要 antlr.jar ANother Tool for Language Recognition 必要 asm.jar ASM位元組碼庫 如果使用“cglib” 則必要 asm

java jdbc配置檔案讀取連線資料庫

Java呼叫配置檔案連線資料庫         Java連線資料庫,通常需要建立一個類檔案來定義資料庫URL、使用者名稱、密碼並且還要負責載入jdbc驅動,如果只是在類檔案中定義字串型別的 URL(資料庫地址)、USER(使用者名稱)、PASSWORD

軟體或jar版本的知識---Beta版、Final版、Free版等

對於各種軟體或jar包,其後面總有不同的“尾巴”,如: 等,剛開始接觸的肯定有些不知道。那麼他們到底代表什麼意思呢?   0.Release:釋出版 1.Beta版:產品釋出之前的測試版, 2.Free版:免費版 3.Full版:完全版 4.Final版:正式版 5.Pr

java程式匯入jar中的介面或類

首先當我們在網上下載某些java程式碼的時候,會出現本地沒有該java程式所需的java包。最直接的提示會告訴你:如下圖 此時我們需要做的第一步就是看能不能在本地找到該匯入檔案          

一個java專案引入jar後,再把這個java專案打包,遇到的jar找不到的問題

參考文章: 步驟1:準備主清單檔案 “MANIFEST.MF”, 由於是打包引用了第三方jar包的Java專案,故需要自定義配置檔案MANIFEST.MF,在該專案下建立檔案MANIFEST.MF,內容如下: Manifest-Version: 1.0 Class-

Maven pom.xml配置引入依賴的oracle:ojdbc14-10.2.0.4.0.jar

專案使用Oracle資料庫時,需要引用Oralce的jdbc驅動,在maven上通過配置檔案pom.xml引用oracle驅動的jar包時出現下面這種情況 : <dependency> <groupId>oracle</groupId

idea打包java可執行jar

1,在專案上滑鼠右鍵 --> Open Module Settings 2, Artifacts --> + --> JAR --> From modules with dependencies... 3, Main Class是你這個專案