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();
}