Qt 連接MySQL數據庫,沒有匹配的qsqlmysql.dll, 需要我們跟進自己Mysql 以及QT版本自行編譯的。異常如下圖:
安裝環境為
-
VS2019
-
Qt5.12.12(msvc2017_64、以及源碼) 我的安裝地址:D:\Qt\Qt5.12.12
-
Mysql 8.1.0? 默認安裝地址C:\Program Files\MySQL\MySQL Server 8.1
步驟:
step 1:
找到 D:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql
用Qt Creator 打開項目
選擇64bit configure project
step2:
修改mysql.pro 項目文件
如圖修改4處
注釋一行
構建==》》build all project
完成編譯
在D:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\build-mysql-Desktop_Qt_5_12_12_MSVC2017_64bit-Debug\lib
就可以得到生成的dll、lib、pdb文件
step 3:
將生產的qsqlmysql.dll、qsqlmysqld.dll文件copy到 D:\Qt\Qt5.12.12\5.12.12\msvc2017_64\plugins\sqldrivers? 目錄
step 4:
將C:\Program Files\MySQL\MySQL Server 8.1\lib下的libmysql.dll、libmysql.lib copy到
D:\Qt\Qt5.12.12\5.12.12\msvc2017_64\bin 下
step 5:
測試demo程序
#include <QtCore/QCoreApplication>
#include <QSqlDatabase>
#include <Qdebug>
#include <QSqlError>
?
int main(int argc, char *argv[])
{
??? QCoreApplication a(argc, argv);
??? //輸出可用數據庫
??? qDebug() << "available drivers:";
??? QStringList drivers = QSqlDatabase::drivers();
??? foreach(QString driver, drivers)
??????? qDebug() << driver;??? QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
??? db.setHostName("127.0.0.1");
??? db.setPort(3306);
??? db.setDatabaseName("mysql");
??? db.setUserName("root");
??? db.setPassword("root");
??? bool ok = db.open();
??? if (ok) {
??????? qDebug() << "OK" << db.lastError().text();??? }
??? else {
?
??????? qDebug() << "error open database because" << db.lastError().text();
??? }
??? return a.exec();
}