qt6.5.0MySQL驱动手动编译以及数据库连接详细教程以及注意事项附资源链接

qt MySQL驱动编译以及注意事项

开发项目我们难免会碰上使用数据库的需求,在qt项目中也是如此。在qt中提供了访问数据库的方法但是这是需要相关数据库的驱动的。我们可以尝试把qt当前支持的驱动打印出来。

    qDebug() << QSqlDatabase::drivers();

这个打印结果不唯一,因为打印结果取决于当前环境的QtSQL驱动有哪些。笔者环境如下:
SQL驱动

可以看见笔者当前环境下有QSQLITE, QODBC,QPSQL三个驱动。笔者用的Qt版本是Qt6.5.0。但是在实际开发中我们有可能会有需要其他数据库的需求,比如有个项目需要MySQL来当数据库。但是现在我们的Qt环境并不支持MySQL数据库。上面的打印结果就显而易见了。根本没QMySQL字样。接下来我们共同来解决Qt连接MySQL的问题。

Qt6.5.0它并不自带QMySQL的驱动,我们根据刚才打印出来的驱动信息结果也能得知此事。我们还可以在Qt安装目录进一步确认。首先确定你用的编译器是哪个,是mingw还是msvc(Qt Creater用的是mingw编译器,Visual Studio用的是msvc编译器)。
编译器

如果你用的是Qt Creator那么在计算机的资源管理器中按照如下路径去寻找。
Qt按装目录\Qt\6.5.0\mingw_64\plugins\sqldrivers
笔者把Qt安装在了D盘所以笔者的路径是D:\Qt\6.5.0\mingw_64\plugins\sqldrivers
在这里插入图片描述
如果你用的是Visual Studio那么在计算机的资源管理器中按照如下路径去寻找。
Qt按装目录\Qt\6.5.0\msvc2019_64\plugins\sqldrivers
笔者把Qt安装在了D盘所以笔者的路径是D:\Qt\6.5.0\msvc2019_64\plugins\sqldrivers
在这里插入图片描述
显然笔者的这两处都没有关于MySQL的任何文件。这也恰好证实了我们刚才的打印结果,目前开发环境确实没有MySQL驱动。
Qt6.5.0并没有给我们编译好的MySQL驱动,但是他给我们提供了MySQL驱动的代码,我们可以手动去编译MySQL的驱动。
首先我们需要下载MySQL驱动的源码。如果已经有了Qt源码的朋友可以忽略本步骤。打开Qt维护工具,推荐用CMD打开这样可以更换下载源。在有MaintenanceTool.exe工具的文件夹路径地址栏中输入cmd即可。如果提示权限不中足之类的错误可以尝试管理员身份运行CMD。或者使用终端也可以。笔者使用的是终端。

在打开后的CMD输入

MaintenanceTool.exe --mirror https://mirrors.tuna.tsinghua.edu.cn/qt/

–mirror 参数意思是更换下载源,后面跟着的是下载源
一些Qt下载源:
中国科学技术大学:http://mirrors.ustc.edu.cn/qtproject/
清华大学:https://mirrors.tuna.tsinghua.edu.cn/qt/
北京理工大学:http://mirror.bit.edu.cn/qtproject/
中国互联网络信息中心:http://mirror.bit.edu.cn/qtproject/

在这里插入图片描述

如果提示以下内容,请检查一下当前路径是否正确,是否有MaintenanceTool.exe工具。

'MaintenanceTool.exe' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

成功打开MaintenanceTool.exe工具登录账号后进入如下界面。
在这里插入图片描述
点击下一步,来到选择组件界面
在这里插入图片描述
点击Qt
在这里插入图片描述
展开Qt找到相应版本的Qt勾选Sources选项在这里插入图片描述
然后点击下一步安装即可。(因为Qt Sources笔者已经安装过了所以笔者图上的下一步灰色无法点击)没有安装过Qt Sources的话勾选了Sources的话下一步就会亮起来,可以点击。
在这里插入图片描述
安装完源码之后就可以进行正式的MySQL编译工作了。
来到Qt安装目录寻找这个路径。Qt安装目录\Qt\6.5.0\Src。笔者的路径是D:\Qt\6.5.0\Src。
在此目录中找到qtbase文件夹。把它复制一份到你的工作目录(要保证你的路径中没有空格)。
在这里插入图片描述
复制好了
在这里插入图片描述
进入以下路径文件夹,当前路径\qtbase\src\plugins\sqldrivers,记住这里有一个CMakeList.txt文件等会要用。
在这里插入图片描述

适合MinGW的驱动

打开Qt Creator 点击打开项目
在这里插入图片描述
找到刚才打开过的有CMakeList.txt的文件夹,打开CMakeList.txt。
在这里插入图片描述

Qt Creater会自动加载项目。加载项目时Qt Creater会让你选择你的编译器,选择你想用的编译器(Qt Creator 选择MinGW编译器)然后目点击Configure Project
在这里插入图片描述
Qt Creator 会自动配置好项目
在这里插入图片描述
现在再打开Windows资源管理器找到MySQL的安装文件夹(没有安装的朋友可以先去安装一下MySQL)注意:如果你的编译器是64位的那么MySQL也必须是64位的版反之亦然。
如何判断自己的编译器是否是64位的?很简单打开编译器所在文件夹如果编译器文件夹写着64那么这个编译器就是64位的(自己动手改的不算)
在这里插入图片描述
显然笔者编译器是64位的那么笔者就要下载64位的MySQL。MySQL Installer 下载地址:https://dev.mysql.com/downloads/windows/installer/8.0.html
安装MySQL数据库的步骤显然超出了本文的涉及范围,故不做太多赘述了。各位可以自行寻找相关资料查看。
安装完MySQL后找到MySQL的安装路径并打开。能看见MySQL Sever的文件夹。
在这里插入图片描述
进入MySQL Server文件夹,可以看见include和lib文件夹,把这两个文件夹复制到你的工作目录(要保证你的路径中没有空格)
在这里插入图片描述
复制完闭
在这里插入图片描述
现在重新回到Qt Creator中展开项目从项目文件中找到.cmake.conf文件
在这里插入图片描述
打开.cmake.conf文件
在这里插入图片描述
文件中加上下面三句:

SET(FEATURE_sql_mysql ON)
SET(MySQL_INCLUDE_DIR "刚才复制的include文件夹路径/include")
SET(MySQL_LIBRARY "刚才复制的lib文件夹/lib/libmysql.lib")

例如笔者的是如下:

SET(FEATURE_sql_mysql ON)
SET(MySQL_INCLUDE_DIR "E:/WorkSpace/tmp/include")
SET(MySQL_LIBRARY "E:/WorkSpace/tmp/lib/libmysql.lib")

在这里插入图片描述
然后Ctrl+S进行保存。
之后再构建。
在这里插入图片描述

构建成功
在这里插入图片描述
去项目的输出目录找到我们要的dll文件。
项目输出目录在哪?
点击Qt Creator的项目
在这里插入图片描述
进入项目模式后就能看见输出目录了
在这里插入图片描述
输出目录中有个plugins文件夹点击打开
在这里插入图片描述

里面有个sqldrivers文件夹点击打开
在这里插入图片描述
里面有我们编译完毕的驱动文件
在这里插入图片描述
那么还有一个问题那就是驱动编译时需要Debug模式还是Release模式?
在这里插入图片描述
Debug模式的驱动带有调试信息
Release模式的没有调试信息而且编译器优化过代码。
这俩个是众所周知的事情了。所以软件开发中你可以使用Debug模式编译的驱动软件发布时替换成Release模式编译的驱动。如果嫌麻烦直接用Debug模式的驱动即可不必折腾。影响不大。还有一种模式就是Release with Debug Information顾名思义带调试信息的Release版本这个就是Debug版本和Release版本的折中。我个人更推荐用Release with Debug Information模式进行编译驱动。
在这里插入图片描述

现在我们已经有了MySQL驱动了,现在把驱动复制到编译器的驱动插件文件夹即可。
Qt安装目录\Qt\6.5.0\mingw_64\plugins\sqldrivers
笔者的是D:\Qt\6.5.0\mingw_64\plugins\sqldrivers

在这里插入图片描述
OK
在这里插入图片描述
现在我们去打印一下驱动瞧瞧
在这里插入图片描述
有MySQL驱动了。那我们连接一下MySQL数据库试试吧!
在这里插入图片描述
很遗憾还是没有成功连接,我们不是有驱动了吗?为什么还是不行?诶!还有一个很重的操作我们还没做,那就是把MySQL的lib和dll文件还没给编译器呢。我们先找到MySQL的lib和dll文件。来到MySQL安装目录走以下路径:MySQL安装目录\MySQL\MySQL Server 8.0\lib
笔者的是C:\Program Files\MySQL\MySQL Server 8.0\lib。打开lib文件夹找到libmysql.dll和libmysql.lib文件。把它们两个复制到编译器的bin目录。bin目录在哪?找到Qt安装文件夹走以下路径:Qt安装文件夹\Qt\6.5.0\mingw_64\bin。笔者的是这个D:\Qt\6.5.0\mingw_64\bin。
在这里插入图片描述
OK
在这里插入图片描述
拷贝完了,我们再尝试连接数据库吧。
在这里插入图片描述
连接成功!We Get It!

适合MSVC的驱动

现在我们来编译MSVC也就是Visual Studio适合用的Qt MySQL驱动。首先第一步还是处理源码,不过我们下载的源码并不是Visual Studio项目,我们得把下载的源码转换成Visual Studio的项目。届时我们需要一个工具来帮助我们。那就是CMake。首先下载CMake,官网在此:https://cmake.org/,下载安装。打开CMake(cmake-gui),如图所示。
在这里插入图片描述
配置基本参数
在这里插入图片描述
源码文件指的其实就是刚才用Qt Creator 打开的有CMakeList.txt文件的目录。也就是刚才在工作目录拷贝进去的qtbase文件夹内走下面的路径qtbase\src\plugins\sqldrivers能找到那个CMakeList.txt。我们目标源码文件夹其实就是sqldrivers。
在这里插入图片描述
这个是笔者的文件路径。
在这里插入图片描述
输出路径就是生成出来的文件存放的位置。可以根据自己的情况进行配置。路径名最好是全英文且没有空格。然后点击Configure按钮。
在这里插入图片描述
选择好自己使用的编译器类型和位数,笔者用的是Visual Studio 2022 x64。最后点击Finish。
在这里插入图片描述
运行一段时间后会报错。这是正常的,因为我们还有很多东西没有配置。点击OK继续配置。
在这里插入图片描述
搜索一下编译器参数是否正确。
在这里插入图片描述
显然Qt编译器参数都没有。那我们自己创建一个。点击Add Entry。
在这里插入图片描述
写上相关参数:
Name:CMAKE_PREFIX_PATH
Type:PATH
Value:你自己计算机里的Qt6 Msvc编译器路径。
笔者的如下图:
在这里插入图片描述
选择文件夹在这里插入图片描述
写入参数
在这里插入图片描述

然后点击OK,搜索看看,显然我们创建成功了。
在这里插入图片描述
再次点击Configure。得到下面结果:
在这里插入图片描述
我们发现了一个问题那就是MySQL部分并没有开启。
在这里插入图片描述
那我们接下来,解决这个问题。
还记得我们前面的那三条命令吗?

SET(FEATURE_sql_mysql ON)
SET(MySQL_INCLUDE_DIR "E:/WorkSpace/tmp/include")
SET(MySQL_LIBRARY "E:/WorkSpace/tmp/lib/libmysql.lib")

我们这一步本质上其实就是在处理这几个命令。
首先我们搜索MySQL得到如下界面。
在这里插入图片描述
我们先处理SET(FEATURE_sql_mysql ON)命令,找到FEATURE_sql_mysql并勾选。

在这里插入图片描述
再处理命令
SET(MySQL_INCLUDE_DIR “E:/WorkSpace/tmp/include”)
找到MySQL_INCLUDE_DIR,填入我们的include文件夹路径。哪个文件夹?就是我们从MySQL安装位置复制的那两个文件夹。
原来的位置
在这里插入图片描述
拷贝出来的位置
在这里插入图片描述
填入路径
在这里插入图片描述
得到如下界面
在这里插入图片描述
还有一种情况那就是有些朋友可能没有MySQL_INCLUDE_DIR这个变量。那这个时候该怎么为呢?
点击Add Entry添加相关变量即可。
在这里插入图片描述
添加参数如下
Name:MySQL_INCLUDE_DIR
Type:PATH
Value:MySQL的include路径。也就是上面所说的从MySQL安装位置复制的那两个文件夹之一,include文件夹。
在这里插入图片描述
填写好后点击OK即可。
在这里插入图片描述
再处理命令
SET(MySQL_LIBRARY “E:/WorkSpace/tmp/lib/libmysql.lib”)
找到MySQL_LIBRARY和MySQL_LIBRARY_DEBUG,填入我们的lib文件夹路径。lib文件在我们从MySQL安装位置复制的那两个文件夹之一,lib文件夹内。首先我们找到那个文件夹。

在这里插入图片描述
点击进入找到libmysql.lib文件。
在这里插入图片描述
把路径填入MySQL_LIBRARY和MySQL_LIBRARY_DEBUG 变量中
在这里插入图片描述
如果没有MySQL_LIBRARY 和MySQL_LIBRARY_DEBUG变量那么也是手动创建即可路径参数就和我们上面说的一一样,如下图。
注意这次的参数Type是FILEPATH不是PATH
在这里插入图片描述
在这里插入图片描述

填写写完成
在这里插入图片描述
目前MySQL还没配置,我看下面的输出框就能显而易见了。 所以需要点击Configure。
在这里插入图片描述
运行结束后会显示MySQL为yes且没有任何报错了。
在这里插入图片描述
最后点击Generate即可输出生成结果。

在这里插入图片描述
配置完毕,生成完毕
在这里插入图片描述
现在我们去输出文件夹看看吧。
在这里插入图片描述
输出文件中多了很多文件,里面还有我们熟悉的Visual Studio的项目启动文件(.sln文件)
在这里插入图片描述
现在用Visual Studio打开项目文件。
在这里插入图片描述
现在我们需要配置一下编译参数。先决定一下编译方式。Debug还是Release?

我们这次用RelWithDebInfo模式也就是带调试信息系的Release模式。
在这里插入图片描述

然后在QMYSQLDriverPlugin上鼠标右键。
在这里插入图片描述
选择这个属性
在这里插入图片描述
在弹出的窗口上更改如下几项
在这里插入图片描述

这里给大家补个小课:介绍一下编译dll时,运行库多线程dll(/MD),多线程调试(/MTd),多线程(/MD),多线程DLL(/MDd)都分别代表什么,都有什么区别?
这四种编译选项代表不同的运行库和调试方式,其区别如下:

  1. 多线程DLL(/MD):使用动态链接的多线程C运行时库。使用此选项时,需要使用动态链接库(DLL)来提供运行时支持。适用于需要将DLL与其他模块共享并且多个模块使用相同的C运行时库的情况。
  2. 多线程调试(/MTd):使用静态链接的多线程C运行时库,并且启用调试支持。使用此选项时,会将C运行时库的代码直接链接到生成的可执行文件中,而不是使用DLL。适用于需要在调试时使用独立运行时库的情况。
  3. 多线程(/MD):使用动态链接的多线程C运行时库。与多线程DLL类似,但是不启用调试支持。适用于需要将DLL与其他模块共享但不需要调试支持的情况。
  4. 多线程DLL(/MDd):使用动态链接的多线程C运行时库,并且启用调试支持。与多线程DLL类似,但是用于调试目的。适用于需要将DLL与其他模块共享并在调试时使用运行时支持的情况。

总体来说,/MD选项适用于需要将DLL与其他模块共享,而/MT选项适用于不需要共享DLL且需要直接链接到可执行文件中。使用调试选项(/d)则可以启用或禁用调试支持。

点击确定保存修改
在这里插入图片描述
然后再次QMYSQLDriverPlugin上鼠标右键。
在这里插入图片描述
选择生成
在这里插入图片描述
生成成功,生成的文件路径编译器在输出框内标注好了,我们只需要按照它所说明的路径找到我们的驱动即可。
在这里插入图片描述
打开找到的驱动路径
在这里插入图片描述
驱动已经生成出来了。不过事情还没有结束,我们还需要生成Debug版本。重新回到Visual Studio。我们这次用Debug模式。
在这里插入图片描述

然后再次QMYSQLDriverPlugin上鼠标右键。
在这里插入图片描述
选择这个属性
在这里插入图片描述
在弹出的窗口上更改如下几项
在这里插入图片描述
点击确定保存修改

然后再次QMYSQLDriverPlugin上鼠标右键。
在这里插入图片描述
选择生成
在这里插入图片描述
生成成功,生成的文件路径编译器在输出框内标注好了,我们只需要按照它所说明的路径找到我们的驱动即可。
在这里插入图片描述
打开找到的驱动路径
在这里插入图片描述
驱动已经生成完毕了,下一步把它们复制进编译器驱动文件夹
Qt安装目录\Qt\6.5.0\msvc2019_64\plugins\sqldrivers
笔者的是D:\Qt\6.5.0\msvc2019_64\plugins\sqldrivers
在这里插入图片描述
OK
在这里插入图片描述
还有一个很重的操作我们还没做,那就是把MySQL的lib和dll文件还没给编译器呢。我们先找到MySQL的lib和dll文件。来到MySQL安装目录走以下路径:MySQL安装目录\MySQL\MySQL Server 8.0\lib
笔者的是C:\Program Files\MySQL\MySQL Server 8.0\lib。打开lib文件夹找到libmysql.dll和libmysql.lib文件。把它们两个复制到编译器的bin目录。bin目录在哪?找到Qt安装文件夹走以下路径:Qt安装文件夹\Qt\6.5.0\msvc2019_64\bin。笔者的是这个D:\Qt\6.5.0\msvc2019_64\bin。
在这里插入图片描述
OK

拷贝完了,我们再尝试连接数据库吧。
在这里插入图片描述
连接成功!We Get It Too!
本套教程到这里就结束了,完结撒花。
附带数据库连接测试代码

    // 所需头文件
    // #include <QSqlDatabase>
    // #include <QMessageBox>
    // #include <QDebug>
    // #include <QSqlError>
    
    qDebug() << QSqlDatabase::drivers(); // 打印支持的数据库驱动
    
    QSqlDatabase dbTest = QSqlDatabase::addDatabase("QSQLITE");//增加驱动
    
    // 临时数据库, 程序终止后会被自动销毁
    dbTest.setDatabaseName("memorydb");
    // 可以长期保存在db文件的数据库
    dbTest.setDatabaseName("mysql.db");

    if (dbTest.open()){
        QMessageBox::information(this, "infor", "success");
    }
    else {
        QMessageBox::information(this, "infor", "open failed");
        qDebug()<< dbTest.lastError();
    }
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    db.setDatabaseName("ry"); // 数据库名
    db.setUserName("root");   // 数据库登录用户名
    db.setPassword("root");   // 数据库登录密码
    bool ok = db.open();
    if (ok){
        QMessageBox::information(this, "MySQL_infor", "success");
    }
    else {
        QMessageBox::information(this, "MySQL_infor", "open failed");
        qDebug()<< db.lastError();
    }

下面是给大家准备的驱动程序已编译版本下载链接。不想要自己编译的朋友可以直接下载已编译版本,直接就能拿过来就能用不需要经过繁琐的编译过程。本驱动资源完全免费无任何下载门槛。
资源截图
在这里插入图片描述
资源树状图
在这里插入图片描述
Qt6.5.0MySQL驱动已编译版本下载链接https://download.csdn.net/download/m0_52072919/87685025

  • 66
    点赞
  • 156
    收藏
    觉得还不错? 一键收藏
  • 60
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 60
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值