可能是全網(wǎng)最詳細(xì)的Qt連接MySQL數(shù)據(jù)庫(kù)教程
被Qt連接數(shù)據(jù)庫(kù)折磨了三天之后終于連接成功了,記錄一下希望對(duì)看到的人有所幫助。
1.直接通過(guò)MySQL的驅(qū)動(dòng)加載數(shù)據(jù)庫(kù)
1)所需代碼
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("數(shù)據(jù)庫(kù)名");
db.setUserName("用戶名");
db.setPassword("密碼");
bool ok = db.open();
if (ok){
QMessageBox::information(this, "infor", "success");
}
else {
QMessageBox::information(this, "infor", "open failed");
qDebug()<<"error open database because"<<db.lastError().text();
}當(dāng)然要在.pro文件中添加一行引入
QT += sql
如果顯示:

那么恭喜你太幸運(yùn)了,你已經(jīng)成功連接MySQL數(shù)據(jù)庫(kù)了,快去使用吧。
如果顯示:

也不要灰心接著往下看我的電腦就一直顯示失敗

沒(méi)有QMYSQL的驅(qū)動(dòng),這是怎么回事呢?
2)解決QMYSQL driver not loaded
Qt連接到mysql的過(guò)程:app->Qt的數(shù)據(jù)庫(kù)插件->mysql動(dòng)態(tài)庫(kù)->mysql服務(wù)。
Qt的數(shù)據(jù)庫(kù)插件位于“C:\Qt(安裝路徑)(Qt版本)\版本號(hào)(庫(kù))\mingw49_32(編譯器)\plugins(插件)\sqldrivers(數(shù)據(jù)庫(kù)插件)” 下的qsqlmysqld.dll(debug版本用) qsqlmysql.dll(release版本用).
mysql動(dòng)態(tài)庫(kù)位于“C:\Qt\MySQLServer5.5(mysql安裝路徑)\lib”下的“libmysql.dll“
i:將mysql下的ilbmysql.lib和libmysql.dll復(fù)制到Qt的bin目錄下
ii:查看自己的qt中有沒(méi)有qsqlmysqld.dll(debug版本用) qsqlmysql.dll(release版本用)
如果都有:
運(yùn)行一下代碼:
//輸出可用數(shù)據(jù)庫(kù)
qDebug()<<"available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug()<<driver;
如果輸出中含有MySQL,那么恭喜你說(shuō)明你的qt有MySQL驅(qū)動(dòng)了:

如果沒(méi)有,不要灰心,因?yàn)槲业木褪且恢睕](méi)有MySQL驅(qū)動(dòng):

大家可以重新下載一些不同的版本嘗試一下,我嘗試了無(wú)數(shù)次后不得不放棄,就選擇了另一條路,通過(guò)ODBC連接MySQL數(shù)據(jù)庫(kù)。
2.通過(guò)ODBC連接MySQL數(shù)據(jù)庫(kù)
1)官方解釋:
ODBC(Open Database Connectivity,開放數(shù)據(jù)庫(kù)互連)提供了一種標(biāo)準(zhǔn)的API(應(yīng)用程序編程接口)方法來(lái)訪問(wèn)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)。這些API利用SQL來(lái)完成其大部分任務(wù)。ODBC本身也提供了對(duì)SQL語(yǔ)言的支持,用戶可以直接將SQL語(yǔ)句送給ODBC。ODBC的設(shè)計(jì)者們努力使它具有最大的獨(dú)立性和開放性:與具體的編程語(yǔ)言無(wú)關(guān),與具體的數(shù)據(jù)庫(kù)系統(tǒng)無(wú)關(guān),與具體的操作系統(tǒng)無(wú)關(guān)。
簡(jiǎn)單的說(shuō)就是我的qt中含有ODBC的驅(qū)動(dòng):

所以利用ODBC去使用MySQL的數(shù)據(jù)庫(kù).
2)下載ODBC

選擇和qt編譯器相同的字節(jié)比如我的qt使用的是64字節(jié)的

下載的ODBC選擇的也是64字節(jié)的,選擇MSI類型的直接安裝就可以

下載一直點(diǎn)擊next即可:

查看點(diǎn)擊小娜,搜索ODBC,

3)連接MySQL數(shù)據(jù)庫(kù)
i添加MySQL的DSN

紅色的可以隨便填,是自己對(duì)于ODBC驅(qū)動(dòng)的描述,粉色的是MySQL的用戶名和密碼,數(shù)據(jù)庫(kù)選擇你在MySQL中創(chuàng)建的數(shù)據(jù)庫(kù)名字即可.

點(diǎn)擊test如果出現(xiàn)下圖說(shuō)明連接成功

4)qt通過(guò)ODBC連接MySQL
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("是你在ODBC中創(chuàng)建的Data source?。睿幔恚?);
db.setUserName("用戶名");
db.setPassword("密碼");
bool ok = db.open();
if (ok){
QMessageBox::information(this, "infor", "success");
}
else {
QMessageBox::information(this, "infor", "open failed");
qDebug()<<"error open database because"<<db.lastError().text();
}
運(yùn)行程序:

大功告成
3.qt通過(guò)ODBC操作數(shù)據(jù)庫(kù)
1)查詢數(shù)據(jù)
代碼:
//查詢數(shù)據(jù)庫(kù)中所有表的名稱
QStringList tables = db.tables();
foreach(QString table, tables)
qDebug()<<table;
//ODBC查詢數(shù)據(jù)
QSqlQuery result = db.exec(" select * from users");
while(result.next()){
qDebug()<<"user_id:"<<result.value("user_id").toInt();
qDebug()<<"name:"<<result.value("name").toString();
qDebug()<<"password:"<<result.value("password").toString();
qDebug()<<"score:"<<result.value("score").toInt()<<endl;
}
2)插入數(shù)據(jù)
//ODBC插入數(shù)據(jù)
result.clear();
bool result_successed = result.exec("insert into users(name,password,score) values ( 'joe2y','123456',0)");
if(result_successed){
qDebug()<<"插入成功!";
}else {
qDebug()<<"插入失??!";
}
3)更新數(shù)據(jù)
//ODBC更新數(shù)據(jù)
result.clear();
bool result_successed2 = result.exec("update users set score=10 where user_id=2");
if(result_successed2){
qDebug()<<"更新成功!"<<endl;
}else{
qDebug()<<"更新失敗!"<<endl;
}
總結(jié)
到此這篇關(guān)于Qt連接MySQL數(shù)據(jù)庫(kù)的文章就介紹到這了,更多相關(guān)Qt連接MySQL數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- QT連接MYSQL數(shù)據(jù)庫(kù)的詳細(xì)步驟
- QT連接Mysql數(shù)據(jù)庫(kù)的實(shí)現(xiàn)步驟
- QT5連接MySQL實(shí)現(xiàn)增刪改查
- qt首次連接MYSQL驅(qū)動(dòng)的各種問(wèn)題圖文詳解
- QT連接Mysql數(shù)據(jù)庫(kù)的詳細(xì)教程(親測(cè)成功版)
- Qt連接MySQL數(shù)據(jù)庫(kù)的實(shí)現(xiàn)(保姆級(jí)成功版教程)
- Qt6遠(yuǎn)程連接MySQL數(shù)據(jù)庫(kù)的簡(jiǎn)單易上手版
- QT5.12連接MySQL的實(shí)現(xiàn)
相關(guān)文章
C語(yǔ)言 CRITICAL_SECTION用法案例詳解
這篇文章主要介紹了C語(yǔ)言 CRITICAL_SECTION用法案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
C語(yǔ)言全面梳理結(jié)構(gòu)體知識(shí)點(diǎn)
結(jié)構(gòu)體是一些值的集合,這些值稱為成員變量,結(jié)構(gòu)體的每個(gè)成員可以是不同類型的變量。本文將通過(guò)示例為大家詳細(xì)講講C語(yǔ)言中結(jié)構(gòu)體的使用,需要的可以參考一下2022-07-07
C++ min/max_element 函數(shù)用法詳解
這篇文章主要介紹了C++ min/max_element 函數(shù)用法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
基于C++實(shí)現(xiàn)酒店管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了基于C++實(shí)現(xiàn)酒店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
C語(yǔ)言如何求整數(shù)的位數(shù)及各位數(shù)字之和
這篇文章主要介紹了C語(yǔ)言如何求整數(shù)的位數(shù)及各位數(shù)字之和,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11

