最近在學(xué)習(xí)數(shù)據(jù)庫(kù),發(fā)現(xiàn)在實(shí)際運(yùn)用的過(guò)程中會(huì)遇到不少的問(wèn)題,所以寫(xiě)一篇文章來(lái)記錄利用 JDBC 使用 MySQL的全過(guò)程。除了寫(xiě)整個(gè)流程之外,還會(huì)有一些可能遇到的問(wèn)題的解決方法。
一、MySQL 的安裝和使用
下載
MySQL的下載請(qǐng)前往官網(wǎng):https://dev.mysql.com/downloads/mysql/
如圖,選擇版本后下載。下載過(guò)程可能需要登錄。

安裝
下完后安裝,根據(jù)自己的需求安裝。
安裝完成需要進(jìn)行服務(wù)器配置(不需要退出安裝界面),按默認(rèn)進(jìn)行下一步即可。之后要求設(shè)置密碼,再設(shè)置服務(wù)名稱(chēng)。最后完成,搞定。
這時(shí)打開(kāi)任務(wù)管理器可以看到 mysql 服務(wù)進(jìn)程(mysql.exe)。
手動(dòng)開(kāi)啟和關(guān)閉
一般情況下 mysql 服務(wù)是自動(dòng)開(kāi)啟的,如果需要手動(dòng)開(kāi)關(guān),可以使用命令行(win+r 輸入cmd,可能需要管理員權(quán)限,也可以利用 Windows PowerShell)開(kāi)啟。
開(kāi)啟代碼: net start MySQL,關(guān)閉代碼:net stop MySQL。
當(dāng)然,你也可以在 Windows 服務(wù)中找到相應(yīng)服務(wù)開(kāi)啟關(guān)閉。
登入數(shù)據(jù)庫(kù)
最好將 MySQL 配置的在環(huán)境變量 中(參考舊版 jdk 配置),這樣可以避免每次都要進(jìn)入相應(yīng)路徑中才能運(yùn)行。
配置好 path 后,在命令行中輸入 mysql -h localhost -u root -p按回車(chē)后輸入密碼即可進(jìn)入數(shù)據(jù)庫(kù)系統(tǒng)。
還可以利用MySQL自帶的程序登入數(shù)據(jù)庫(kù),找到程序 MySQL 8.0 Command Line Client (兩個(gè)版本都行),打開(kāi)之后直接輸入密碼就行了。第一次可能會(huì)一閃而過(guò)的現(xiàn)象,再試一次就好了(如果還會(huì)出現(xiàn),咨詢(xún)某度)
數(shù)據(jù)庫(kù)其他操作就不多說(shuō)了,這個(gè)是一定要好好學(xué)的。
二、JDBC 的使用
下載驅(qū)動(dòng)
要使用 JDBC 連接 MySQL 數(shù)據(jù)庫(kù),需要有相應(yīng)的驅(qū)動(dòng),可以前往官網(wǎng)下載:https://dev.mysql.com/downloads/connector/j/

導(dǎo)入驅(qū)動(dòng)
下載好之后解壓文件,記住目錄。
以 IDEA 為例,說(shuō)明如何導(dǎo)入驅(qū)動(dòng)程序。
打開(kāi) Project Structure (Ctrl + Shift + Alt +S),按圖示操作

然后找到剛才解壓目錄下的 mysql-connector-java-8.0.15.jar (版本號(hào)可能不一樣),ok 即可。
連接數(shù)據(jù)庫(kù)
當(dāng)前面的過(guò)程都完成之后,就可以上代碼了。
使用數(shù)據(jù)庫(kù)需要先連接,具體的連接等代碼參考如下,都是一個(gè)固定的模板,具體解釋見(jiàn)注釋。
/*
*相關(guān)的打包、導(dǎo)入等省略
*只含核心代碼
*/
Connection con;
private String driver="com.mysql.jdbc.Driver";//這是驅(qū)動(dòng)程序名,固定的,不同數(shù)據(jù)庫(kù)都有特定的寫(xiě)法
private String url="jdbc:mysql://localhost:3306/db_name";//除了最后的 db_name 替換成自己的數(shù)據(jù)庫(kù)名字外,其他一樣(是按默認(rèn)服務(wù)器配置來(lái)的)
prvate String user="root";//MySQL用戶(hù)名
prvate String password="XXXXXX";//密碼
try{
Class.forName(driver);//裝載驅(qū)動(dòng),固定寫(xiě)法(也有其他方法,但不推薦)
con = DriverManager.getConnection(url, user, password);//連接數(shù)據(jù)庫(kù)
}catch(XXXX){//后面省略
XXXX
}
上面就是一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)連接的模板,要使用數(shù)據(jù)庫(kù),都要先進(jìn)行連接。
第一次連接可能會(huì)有一個(gè)很奇怪的報(bào)錯(cuò),有一個(gè)“亂碼”,如下:
The server time zone value '?D1ú±ê×?ê±??' is unrecognized or represents more than one time zone
出現(xiàn)這個(gè)問(wèn)題的原因是時(shí)間沖突,數(shù)據(jù)庫(kù)系統(tǒng)的時(shí)間和本地時(shí)間對(duì)不上,解決方法如下:
使用 root 用戶(hù)登入數(shù)據(jù)庫(kù),先輸入代碼查看時(shí)間 show variables like '%time_zone%';可以看到使用的是它的系統(tǒng)時(shí)間,這個(gè)系統(tǒng)時(shí)間指的是美國(guó)的時(shí)間,所以我們要讓它和我們的一致,輸入代碼:set global time_zone='+8:00';。這時(shí)就可以了,再運(yùn)行 Java 代碼就沒(méi)有這個(gè)報(bào)錯(cuò)了
以上就是使用 JDBC連接 MySQL 數(shù)據(jù)庫(kù)的整個(gè)操作了,當(dāng)然 JDBC 的使用肯定不止這些,相關(guān)的還有怎么執(zhí)行 SQL 語(yǔ)句,使用完數(shù)據(jù)庫(kù)之后要進(jìn)行斷開(kāi)連接等等知識(shí),這些是 JDBC 的使用問(wèn)題了,在此就不詳述了。