在學習Qt的過程當中,遇到了沒法鏈接數據庫的狀況:mysql
#include <QApplication> #include <QtSql> #include <QMessageBox> #include <QDebug> int main(int argc, char *argv[]) { QApplication a(argc, argv); //顯示已有的數據庫driver qDebug()<<QSqlDatabase::drivers(); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("dbname"); db.setUserName("root"); db.setPassword("password"); if (!db.open()) { QMessageBox::critical(0, QObject::tr("Database Error"), db.lastError().text()); } return a.exec(); }
控制檯的輸出爲:sql
如上所示,MySQL driver是存在的,可是仍然提示錯誤:QMYSQL driver not loaded。數據庫
緣由是程序中缺乏libmysql.dll。學習
這個動態鏈接庫在MySQL的安裝文件的lib目錄下,例如個人MySQl安裝在C盤,則libmysql.dll位於:spa
C:\MySQL\MySQL Server 5.7\lib\
找到libmysql.dll,將它複製到你的exe所在的目錄中,而後再運行程序,此時就能夠連上MySQL了。code
注意:32位的qt程序必須使用32位的libmysql.dll,不能用64位的。一樣64位的程序使用64位的libmysql.dll。get
libmysql.dll能夠從MySQL安裝文件的lib目錄下找到。qt
若是沒有對應的版本,也能夠這裏下載:it
鏈接:http://pan.baidu.com/s/1kVKwLuRio
密碼:v6uy
經過上面的方法已經能夠鏈接數據庫了, 可是每次都要把libmysql.dll複製到exe所在目錄,很麻煩,因此在日常寫程序時,可使用一個方便的方法:
將libmysql.dll複製到Qt安裝文件的bin目錄下,例如個人bin目錄:
D:\Qt\Qt5.7.0\5.7\mingw53_32\bin\
複製到bin目錄下後,之後就不須要往exe所在目錄複製libmysql.dll了,程序能夠正確鏈接MySQL數據庫。