Qt5.14.2 安装MySql驱动

Qt5.14.2 安装MySql驱动

最近申请了一个腾讯云数据库采用的是mysql,然后发现Qt5.14.2是不带mysql驱动,以安装在c盘为例,C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\plugins\sqldrivers中不含有下图中画横线的两个文件:
在这里插入图片描述
网上是可以下载到这两个dll文件,但是这两个文件要和对应的mysql库文件也就是C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin中的libmysql.dll相匹配才能正常工作,不然还是提示驱动无法载入。这个libmysql.dll文件可以在mysql的安装文件夹(去官网直接下载mysql-8.0.22-winx64.zip文件解压即可)的lib子文件夹中找到,并复制到C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin中,注意提前将C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin路径添加到环境变量PATH中,这样运行qt的时候,系统才知道去C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin中寻找库文件。
然后就是编译出上图的两个dll文件,这里需要用到Qt的源代码,源代码可以去Qt官网下载或者安装Qt的时候选择安装source code然后再安装文件夹中可以找到Src文件夹就是我们需要的源代码,注意源代码版本要和安装的Qt版本匹配。
进入源代码找到mysql的工程文件如下图:路径为"你的源代码文件夹“/qtbase/src/plugins/sqldrivers/mysql
在这里插入图片描述
用Qt打开mysql.pro文件如下图:
在这里插入图片描述
这时直接构建mysql会报错,需要做两处修改,一个是修改mysql.pro文件如下图:
在这里插入图片描述
将QMAKE_USE += mysql 前添加‘#’
添加红线圈中的三行代码,这里的路径要换成你自己安装的mysql文件夹中相应的lib子文件夹路径和include子文件夹路径。
然后修改qsqldriverbase.pri文件如下图:
在这里插入图片描述
这里可以直接照搬图中的代码,也就是将原本的include语句换成自己的include语句,不然会提示找不到"qtsqldrivers-config.pri"文件,实际上对应文件夹里确实没有看到这个文件,但是在mysql文件夹上层文件夹里有"configure.pri",所以换成include这个文件。
这时构建mysql工程,可以成功:
在这里插入图片描述
虽然上面几张图中下方的概要信息窗口一直提示:Cannot read C:/Qt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/configure.pri: No such file or directory, 这里应该是没有影响。
然后去mysql文件夹所在的目录中找到plugins文件夹
在这里插入图片描述
打开plugins后进入子文件夹sqlddrivers文件夹,就发现多了下图的几个文件:
在这里插入图片描述
图中的两个.dll就是文章开头提到的我们所需要的dll文件,也就是我们千辛万苦从mysql库文件编译获得的mysql驱动文件,将这两个文件复制到C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\plugins\sqldrivers(注意我是把Qt安装在c盘中),这样运行Qt的时候这两个dll配合C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin中的libmysql.dll(文章前面已经提到将mysql安装文件夹的子文件夹lib中的libmysql.dll复制到C:\Qt\Qt5.14.2\5.14.2\msvc2017_64\bin中)就可以成功连接到mysql数据库。
实例:
新建一个Qt的控制台程序读取腾讯云数据库中的student_password表中的内容:
注意在新建工程的pro工程文件开头添加"QT += sql";然后编写源文件:
在这里插入图片描述
这里要在控制面板搜索ODBC,添加mysql的odbc数据源“mysql”,将这个数据源的名字“mysql”填到setDatabaseName()源代码中,如果不知道如何添加mysql的odbc数据源,可以参考我的另一篇文章“如何添加odbc数据源”(目前还没写)。
在这里插入图片描述
最后就是程序运行结果了:
在这里插入图片描述
结果和预期完全一致。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值