为Qt生成、安装MySQL数据库连接插件
一、概述
最近学习腾讯课堂奇牛学院的VIP课程项目,项目用到了Qt和MySQL数据库。
这篇文章记录了Qt项目因缺少相关插件,而无法连接MySQL的解决方案。用到的方法结合了奇牛学院老师给出的方案,以及Qt官方文档:SQL数据库驱动。
Qt的QSqlDatabase支持MySQL数据库连接,但程序运行时候需要一些动态库。
如果没有相关插件,程序运行会导致数据库连接不成功:
Qt官方没有直接提供这些动态库,但Qt提供了生成插件用的源代码,安装Qt的时候勾选上Source就能在Qt安装目录中找到相关源码。所以我们可以使用源码生成相关插件。
正常安装插件后,程序就可以正确连接到数据库:
注:如果你的程序如图所示,可以加载qsqlmysql驱动,但紧接着下一行提示qsqlmysql已卸载,那么可以直接跳到第五节查看libmysql.dll文件是否被加载。
二、插件生成环境
操作系统:WIN10 - 64位
Qt版本:5.15.0
Qt编译器(Qt安装时勾选):MSVC2019 - 64位
MySQL版本:8.0.20 - 64位
注:使用其它版本也应该可以正常生成,只要编译器版本(32、64位)和MySQL版本相同就行。
三、编译插件
1、打开插件项目
如图,进入Qt安装目录找到sqldrivers.pro项目文件,用QtCreator打开。
Qt安装目录\Qt\5.15.0\Src\qtbase\src\plugins\sqldrivers
2、修改项目设置
- 注释掉可能引起编译错误的代码行
- 添加编译时需要用到的头文件和库文件(有空格的路径需要用双引号括起来)
#注释掉可能引起编译错误的代码行
#QMAKE_USE += mysql
#添加编译时需要用到的头文件和库文件(有空格的路径需要用双引号括起来)
INCLUDEPATH += "C:/Program Files/MySQL/MySQL Server 8.0/include"
LIBS += "C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"
3、构建项目
- 鼠标右键mysql项目文件夹;
- 选择“构建mysql”;
- 等待构建成功。
四、安装插件
方法一:手动复制
直接复制生成好的动态库文件和调试文件到Qt插件目录。
Qt安装目录\Qt\5.15.0\msvc2019_64\plugins\sqldrivers
方法二:使用nmake指令复制
- 以项目环境打开控制台;
- 使用cd指令进入已经生成好的mysql目录;
- 输入 nmake install 指令,等待它自动安装(复制)。
五、驱动安装后,依然提示“QMYSQL driver not loaded”?
原因是程序加载了qsqlmysql驱动后,qsqlmysql驱动会自动加载libmysql.dll,如果程序运行时候没有找到这个动态库文件,就无法正常加载qsqlmysql驱动。
我个人没有遇到这样的问题,以下解决方法是课程老师提供的:
到mysql安装目录下,进入lib文件夹,找到libmysql.dll文件,复制到Qt对应版本编译器的bin文件夹中。
做完这一步后,问题应该就已经解决了。