Qt連接MySQL的問題解決方法


Qt5在連接MySQL數據庫時會出現一些問題,本文介紹兩種最常見的問題,以及其相對簡單的解決辦法。

Qt5數據庫支持列表里沒有MySQL

輸入以下代碼查看支持的數據庫類型

//打印支持的數據庫類型
qDebug()<<QSqlDatabase::drivers();

現象:

可以發現支持的數據庫列表里沒有"QMYSQL",打開Qt5.X.X\5.X.X\mingwXX_XX\plugins\sqldrivers會發現缺少下面兩個文件:

原因:較低版本的Qt5是不帶MySQL驅動的,也就是沒有qsqlmysql.dllqsqlmysqld.dll這兩個文件,需要自己手動編譯進行添加。

解決辦法1:從Qt5.8開始(具體有待考證)后就默認自帶MySQL驅動了(目前更新最快的5.1.4是不帶MySQL驅動的),所以大家可以自己升級到5.8以上的版本,問題就可以解決,推薦5.9這個長期支持版本。

解決辦法2:自己手動進行編譯驅動文件或者下載對應的別人編譯好的驅動文件添加進去。編譯可參考官網sql-driver

QMYSQL drive not loaded

輸入以下代碼進行數據庫連接

//連接數據庫
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setUserName("root");
db.setPassword("hll523811");
db.setDatabaseName("db");
if(db.open()==false){
    qDebug()<<"打開失敗"<<db.lastError().text();
}

現象:

出現經典問題:QMYSQL drive not loaded

原因:Qt5.X.X\5.X.X\mingwXX_XX\bin\缺少MySQL的lib文件,所以不可用

解決方法:打開mysql-X.X.XX-winxXX\lib復制libmysql.dllQt5.X.X\5.X.X\mingwXX_XX\bin\即可

注意:

1. libmysql.dll文件必須匹配相應使用的MySQL版本

2. 32位QT復制的是32位的MySQL里的libmysql.dll,64位也對應64位

3. 不同版本的MySQL里面包含不同的libmysql.dll, 不同的libmysql.dll必須和配套的qsqlmysqld.dll qsqlmysql.dll一起才能正常工作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM