相信很多第一次在QT下链接MYSQL的朋友都会遇到这个问题:
读取不到QMYSQL的驱动,QSqlDatabase支持的驱动有:QSQLITE QODBC QODBC3 QPSQL QPSQL7 【就是没有QMYSQL】
那怎么解决呢?如果直接百度、或者在CSDN搜,会有一大堆教程,理论是基本一致的,但是实际的操作过程各不相同。通过我多次的尝试,发现我搜到的教程90%是行不通的。。。结合了多位博主及b站的教程,我成功将QT与MYSQL连接。感谢各位前辈的分享!才有了我这篇博文。
QT链接MYSQL的理论过程可参见B站up主甜筒味の冰棍的经验分享视频【经验分享】Qt连接Mysql 01:36-02:18
我是用的QT及MYSQL版本分别为:5.13.0及5.7.30
下载链接:
QT
MYSQL
在很多教程中看到,QT的编译器和MYSQL的位数要相同,也有的说要32位的。我装的QT和MYSQL都是64位的,也就按64位的来
主要步骤如上,没写出来的就是直接下一步,或者是accepted之后下一步。
选Developer Default(根据自己需要)。
基本是有execute就点execute,没有execute就下一步。execute后弹窗都是accepted+下一步。
设置好密码,一般就设置成123456就行了,方便记忆。【这个密码要记住,登入MYSQL都要用到的】
主要步骤如上,没写出来的就是直接Next,或者是Finish,或者是Execute后Next。
之后我习惯用Navicat进行数据库的管理,安装过程略,有需要的朋友可以直接网上搜教程。
基本就是缺少驱动MYSQL相关的libmysql.dll 、qsqlmysql.dll,编译一个给他就行了。理论方面也不多说了。按照以下的步骤走亲测是可以的。
0、开始之前将QT64位编译器和MYSQL的路径都0加入系统环境变量的path。
右键【此电脑】(win7就是【计算机】)---->【属性】---->【高级系统配置】---->【环境变量】---->双击系统变量里面的path,将对应路径添加进去
C:\Qt\Qt5.13.0\5.13.0\mingw73_64\bin
C:\Qt\Qt5.13.0\Tools\mingw730_64\bin
C:\Program Files\MySQL\MySQL Server 5.7\bin
此处以未修改安装位置的路径为例,如果修改了安装路径,请自行修改为对应的路径。
1、将C:\Program Files\MySQL\MySQL Server 5.7\lib
路径下的libmysql.dll文件复制至C:\Qt\Qt5.13.0\5.13.0\mingw73_64\bin
2、打开C:\Qt\Qt5.13.0\5.13.0\Src\qtbase\src\plugins\sqldrivers\mysql路径下的mysql.pro
此处以未修改安装位置的路径为例,如果修改了安装路径,请自行修改为对应的路径。
将第六行的QMAKE_USE += mysql
注释掉,修改为#QMAKE_USE += mysql
(前面加#)
加入mysql安装目录下的相关路径,因为有空格所以加入了$$quote()
win32:LIBS += -L$$quote(C:/Program Files/MySQL/MySQL Server 5.7/lib) -llibmysql
INCLUDEPATH += $$quote(C:/Program Files/MySQL/MySQL Server 5.7/include)
DEPENDPATH += $$quote(C:/Program Files/MySQL/MySQL Server 5.7/include)
此处以未修改安装位置的路径为例,如果修改了安装路径,请自行修改为对应的路径。
将qsqldriverbase下的qsqldriverbase.pri中的第4行include($$shadowed($$PWD)/qtsqldrivers-config.pri)
注释掉,修改为#include($$shadowed($$PWD)/qtsqldrivers-config.pri)
(前面加#)
然后在下面加入一行include(./configure.pri)
保存所有后退出
3、按"Win+X"再按A,启动Windows PowerShell (管理员模式)
通过命令行定位到sqldrivers文件夹
cd C:\Qt\Qt5.13.0\5.13.0\Src\qtbase\src\plugins\sqldrivers
此处以未修改安装位置的路径为例,如果修改了安装路径,请自行修改为对应的路径。
qmake一下
qmake -- MYSQL_INCDIR="C:/Program Files/MySQL/MySQL Server 5.7/include" MYSQL_LIBDIR="C:/Program Files/MySQL/MySQL Server 5.7/lib"
此处以未修改安装位置的路径为例,如果修改了安装路径,请自行修改为对应的路径。
确认MySql…后是yes,再依次输入
mingw32-make
mingw32-make install
会哗啦啦得跑出一大堆东西,别怕,正常的,因为是编译了所有数据库的驱动。
至此,MYSQL的驱动编译就完成了
在C:\Qt\Qt5.13.0\5.13.0\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers
下就能看到MYSQL的驱动文件了。
此处以未修改安装位置的路径为例,如果修改了安装路径,请自行修改为对应的路径。
//连接数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");//localhost
db.setDatabaseName("mysql");
db.setUserName("root");
db.setPassword("123456");
if(db.open())
{
qDebug()<<"QT successfully connected to MYSQL"<<endl;
db.close();
}
链接数据库的代码如上,连接成功了打印日志QT successfully connected to MYSQL。
另外记得在.pro里面加入QT += sql
当然这段代码不是直接复制进去就行的啦。小白的话还是建议参考其他的QT连接MYSQL的教程。
完结撒花,再次感谢前辈们的辛勤付出。
参考文档/视频:
https://www.cnblogs.com/dz-study/p/12382837.html
https://zhuanlan.zhihu.com/p/100669223
https://www.bilibili.com/video/BV1Jk4y167tt?from=search&seid=1642261007335545283