你要做的
首先确定好自己的Qt版本是32位还是64位,MySql是32位还是64位,防止后续操作出现问题,这里我Qt是32位,MySQL是64位,所以我去官网下载了对应版本号的32位的ZIP。https://downloads.mysql.com/archives/community/

先找到qt源码里的mysql的源码,例如我的路径是
Z:\QT\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql,双击打开mysql.pro,添加下面的三行代码:
INCLUDEPATH += Z:\mysql-5.5.40-win32\include # 添加你自己的mysql安装目录下的include文件夹
LIBS += Z:\mysql-5.5.40-win32\lib\libmysql.lib # 添加你的mysql安装目录下的lib文件夹下的libmysql.lib文件
DESTDIR = ../mysql/mysqlDll # 设置编译好的qmysql.dll放置的目录,不然你可能不知道会生成在哪。
- 点击qt左下角的小锤子构建,出现如下的两个错误:
Cannot read Z:/qtsqldrivers-config.pri: No such file or directory
Project ERROR: Library 'mysql' is not defined.
解决错误1:找到sqldrivers路径下,我的是
Z:\QT\5.14.2\Src\qtbase\src\plugins\sqldrivers下的文件configure.pri,在qt的左侧栏里,双击qsqldriverbase.pri打开该文件,CTRL+/将第四行注释掉,然后添加include(./configure.pri),保存。
解决错误2:Library ‘mysql’ is not defined,在qt左侧栏中双击打开mysql.pro,将第六行注释掉,即
#QMAKE_USE += mysql


6. 点击左下角编译,完成后去上面设置的编译目录里找qsqlmysql.dll和qsqlmysqld.dll,一个是release版,一个是debug版
这里我只需要release版。
- 将生成这两个dll文件,复制到qt的编译器下的sqldrivers文件夹里,我的是:
Z:\QT\5.14.2\mingw73_32\plugins\sqldrivers - 将自己的MySQL安装目录下的lib文件夹下的
libmysql.dll,复制到qt的编译器的bin目录下,我的是:Z:\QT\5.14.2\mingw73_32\bin
- 打开需要使用MySQL的Qt项目,在项目的pro文件里添加
QT += sql
- 注意,当编译项目生成可执行文件时,你除了需要
windeployqt 程序名添加库文件外(参考这里),还需要拷贝libmysql.dll到exe文件所在目录,拷贝qsqlmysql.dll在exe文件目录下的sqldrivers文件夹中。 - 关于怎么用QtSql,可以参考这篇文章:C++与Qt实现MySQL数据库的增删
这里给出示例代码
db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhsot");
db.setDatabaseName("tablename");
db.setUserName("root");
db.setPassword("abc123456!");
db.setPassword("123456");
ok=db.open();
if (ok){
std::cout<<"数据库连接成功";
}else{
std::cout<<"数据库连接失败";
}
if (ok){
//增加一条数据
QSqlQuery* query = new QSqlQuery(db);
QString strCmd = QString("insert into compress(str1,str2,str3) values('%1','%2','%3')")
.arg(Qstring1)
.arg(Qstring2)
.arg(QString::fromStdString(string1));
query->prepare(strCmd);
if (query->exec())
{
return true;
}
else
{
return false;
}
}else{
return false;
}
db.close();
背景知识
- Qt连接到mysql的过程:app->Qt的数据库插件->mysql动态库->mysql服务。
- Qt的数据库插件位于
Z:\QT\5.14.2\mingw73_32\plugins\sqldrivers* 其中Z:\QT是安装路径,5.14.2是库,mingw73_32是编译器,plugins插件,sqldrivers数据库驱动。 - 其中的
qsqlmysqld.dll(debug版本用) ,qsqlmysql.dll(release版本用). - mysql动态库位于
Z:\mysql-5.5.40-win32(mysql安装路径)\lib下的libmysql.dll - 不同版本的mysql里面包含不同的
libmysql.dll, 不同的libmysql.dll必须跟配套的qsqlmysqld.dll和qsqlmysql.dll一起才能正常工作. - 找到libmysql.dll,用Qt去重新编译对应版本的qsqlmysqld.dll和qsqlmysql.dll,再放到对应的位置。
参考文章
最有用的:qt连接mysql报错:QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC…
其他:
https://blog.csdn.net/CatEatApple/article/details/52279168
https://blog.csdn.net/m15814478834/article/details/49902077