Qt6.3.1連接數(shù)據(jù)庫(kù)MySql8.0
前言?
由于這個(gè)學(xué)期比較少,空閑時(shí)間比較多。平時(shí)就是接接Python爬蟲(chóng)的單子,但一想到我將來(lái)不會(huì)往這個(gè)方向上發(fā)展,所以又想著怎么提高自己計(jì)算機(jī)最基礎(chǔ)的基本的幾門(mén)功課的實(shí)力。于是,就想著用Qt做一個(gè)能夠連接數(shù)據(jù)庫(kù)的學(xué)生成績(jī)管理系統(tǒng)的程序。既能提高自己對(duì)數(shù)據(jù)庫(kù)的熟練程度,又可以加深自己對(duì)C++的理解,何樂(lè)而不為之呢?
其實(shí),我是那種學(xué)的很雜的同學(xué),我不愿停留在學(xué)校教的那么點(diǎn)東西,什么都會(huì)一點(diǎn),又什么都不甚了解,知其然而不知其所以然。我深知這樣只會(huì)將路子越走越窄,但又苦于沒(méi)有明確的方向,所以能做的就只有不斷去提高自己對(duì)計(jì)算機(jī)最基礎(chǔ)的幾門(mén)課程的熟練程度和理解深度。這個(gè)系列應(yīng)該會(huì)有好幾期,感興趣的同學(xué)可以和我一起了解和討論這個(gè)系統(tǒng)開(kāi)發(fā)的詳細(xì)細(xì)節(jié),當(dāng)然也非常歡迎各位大佬對(duì)我文章的斧正。廢話(huà)說(shuō)了這么多下面開(kāi)始正題!
正題
我使用的是Qt6.3.1和MySql8.0版本,據(jù)網(wǎng)上說(shuō)Qt6以后的版本好像是不帶MySql的驅(qū)動(dòng),也沒(méi)有可以自己進(jìn)行編譯驅(qū)動(dòng)的文件了。只能去網(wǎng)上下載其他大佬已經(jīng)編譯好的驅(qū)動(dòng),這也是極好的。一想到我當(dāng)初用CMake編譯OpenCV的.dll文件,然后配置到Qt上就后怕,我感覺(jué)那玩意純靠運(yùn)氣,反正我不知道失敗了多少次,最后終于在改了無(wú)數(shù)次參數(shù)后終于編譯成功。
Qt的MySql驅(qū)動(dòng)下載地址:
大家可以根據(jù)自己Qt的版本進(jìn)行選擇下載那個(gè)驅(qū)動(dòng),Qt版本查看方式如下圖所示

順便說(shuō)一下MySql版本的查看方式,當(dāng)然前提是你已經(jīng)配置了環(huán)境變量,否則就需要進(jìn)入到MySql的bin目錄下,按住Shift然后鼠標(biāo)右鍵點(diǎn)擊在此打開(kāi)Poweshell窗口

輸入命令行:
mysql -V

還有一個(gè)注意事項(xiàng)就是注意編譯器的位數(shù)和MySql的位數(shù)要是相同的,我的就都是64位的。
下載好后你會(huì)得到一個(gè)壓縮包,將壓縮包解壓


這里注意,下載你對(duì)用編譯器的驅(qū)動(dòng),我這里用的編譯器是mingw,下載的也是對(duì)應(yīng)的驅(qū)動(dòng)。
然后將下面三個(gè)文件復(fù)制到mingw的bin路徑下


將子文件夾也就是sqldrivers中的兩個(gè)文件復(fù)制到mingw的sqldrivers下面

如果是qmake,再在你新建的Qt文件的加一句
QT += sql
如果是CMke
find_package(Qt6 COMPONENTS Sql REQUIRED)
target_link_libraries(test_QtConnectMySQL PRIVATE Qt6::Sql)
到這里配置就結(jié)束了。
創(chuàng)建數(shù)據(jù)庫(kù)和連接數(shù)據(jù)庫(kù)
想要連接數(shù)據(jù)庫(kù)就需要有對(duì)應(yīng)的數(shù)據(jù)庫(kù),所以見(jiàn)需要先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)

test就是我們接下來(lái)要用到的數(shù)據(jù)庫(kù)
然后就是在Qt新建項(xiàng)目里面連接數(shù)據(jù)庫(kù),直接上代碼
main.cpp
int main(int argc, char *argv[])
{
? ?QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
? ??????????????db.setHostName("127.0.0.1"); ?//連接本地主機(jī)
? ?
????? ? ?db.setPort(3306);//端口號(hào)如果安裝時(shí)沒(méi)有自己設(shè)置就是默認(rèn)的3306,如果設(shè)置了就是你自己設(shè)置的端口號(hào)
? ?
????? ? ?db.setDatabaseName("test");//你要連接的數(shù)據(jù)庫(kù)的名字我的是test
? ?db.setUserName("root");//你的用戶(hù)名我的是root
? ?db.setPassword("123456");//你的密碼我的是123456
? ?
????? ???bool ok = db.open(); ? ?
????? ? ?if (ok){ ? ? ? ? qDebug() << "link success";
? ?} ? ?
????? ? ?else { ? ? ? ? qDebug() << ?"link failed";
? ?} ? ?
????? ? ?QApplication a(argc, argv);
? ?
????? ? ?MainWindow w;
??
????? ? ??w.show(); ? ?
????? ???return a.exec();?
}
然后直接點(diǎn)擊運(yùn)行,如果連接成功就會(huì)如下圖所示

注意事項(xiàng)
注意MySql的位數(shù)和編譯器的位數(shù)盡量保持一致,不然可能出錯(cuò)
注意下載對(duì)應(yīng)編譯器的驅(qū)動(dòng),是mingw就下mingw的驅(qū)動(dòng),是msvc就下msvc的驅(qū)動(dòng)
如有錯(cuò)誤,歡迎各位同學(xué)指正。
此文章僅用于學(xué)習(xí),請(qǐng)勿用于違法犯罪。