一篇文章學(xué)會(huì)用 JDBC 連接 MySQL 數(shù)據(jù)庫(kù)(含常見(jiàn)問(wèn)題解決)

最近在學(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/

JDBC 版本選擇

導(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)題了,在此就不詳述了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容