1.前言
qt连接mysql数据库需要两个动态库。1:qt连接mysql的动态库--qsqlmysql.dll qsqlmysqld.dll;2:mysql的C connecor动态库--libmysql.dll。
缺少任何库都会提示:QSqlDatabase: QMYSQL driver not loaded,不过“QSqlDatabase: available drivers:QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7”这句会告诉你,有哪些qt的连接库是可以用的。如:没有qt连接mysql的动态库,就不会有“QMYSQL”这个提示。
本文记录下这两种dll的获取方式。
先直接放上所有的动态库:链接: https://pan.baidu.com/s/1IQM8QL-GXW_I71_-f5Nq_w 提取码: urub
包含qt连接mysql的动态库(MSVC32bit、MSVC64bit、MinGW32bit、MinGW64bit)和mysql的C connecor动态库。
qt的动态库要放在qt安装目录下。如我的qt路径:D:\Qt\Qt5.12.4\5.12.4\msvc2017_64\plugins\sqldrivers\,放入MSVC64bit版本的动态库。
mysql的动态库可以放在项目的生成目录、或者qt的bin目录,如:D:\Qt\Qt5.12.4\5.12.4\msvc2017_64\bin,放入64bit的libmysql.dll。
2.在哪下载libmysql.dll,即mysql C Connector
有两种方式
1.安装mysql后,会有libmysql.dll。不过32位的libmysql.dll要安装32位的mysql,64位的libmysql.dll同理。
2.直接下载:最终下载地址:https://downloads.mysql.com/archives/c-c/
从mysql官网进入下载地址的方式。官网地址:https://www.mysql.com/downloads/
1.进入网址后,向下滑动页面,点击“MySQL Community (GPL) Downloads »”;
2.进入页面后,点击“C API (libmysqlclient)”;
3.进入C API页面后,点击“MySQL Product Archives”,进入最终页面
3.编译qsqlmysql.dll 和qsqlmysqld.dll
1.源码路径:D:\Qt\Qt5.12.4\5.12.4\Src\qtbase\src\plugins\sqldrivers\mysql (需在安装Qt时选中安装 source);
2.打开项目,选择要编译的版本:
3.配置pro文件:
a)直接编译会报错,需要在mysql.pro中注释“QMAKE_USE += mysql”;
b)需要设置“DESTDIR”,不然生成的dll不知道在哪;
c)需要引用mysql的库,不然会提示“无法打开包括文件“mysql.h””
d)“qsqldriverbase.pri”可能需要注释“include($$shadowed($$PWD)/qtsqldrivers-config.pri)”,并添加“include(./configure.pri)”,如果报错和这个引用相关的话。
如图,是我在编译时的“mysql.pro”文件:其中,引用路径可以在项目上 右键—>添加库 进行添加。MSVC 32bit 和 MinGW 32bit都用32位的mysql库;64位同理。
下图是“qsqldriverbase.pri”文件
配置完成,直接编译就行了。