windows系統下解決Qt鏈接MySQL數據庫時出現的問題:QMYSQL driver not loaded

在學習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數據庫。

相關文章
相關標籤/搜索