qt连接mysql数据库:QSqlDatabase: QMYSQL driver not loaded

    技术2023-11-08  74

    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”文件

    配置完成,直接编译就行了。

    Processed: 0.021, SQL: 9