【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(二、编译连接)

本篇教程分为三个部分:

  1. 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(一、编译连接前准备)
  2. 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(二、编译连接)
  3. 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(三、问题整理)

阅读本文之前需要先查看我的第一篇文章:

【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(一、编译连接前准备)

 

一、测试结果(测试连接代码在第一篇文章中)

1.第一种:可用驱动中有QMYSQL这个驱动,但是不能加载(刚尝试qt连接mysql的没有复制文件到指定文件夹的不存在这种情况)

 

2.第二种:可用驱动中没有MYSQL驱动,并且不能加载(第一次尝试基本都是这种报错)

 

二、编译连接过程

从上述结果报错结果可以知道我们没有MYSQL驱动,那去哪找到mysql驱动呢?QT5.13.2和QT5.14.1两个版本都提供了编译MYSQL驱动的源码,只需要结合我们自己电脑上安装的MYSQL的库文件就可以编译属于自己的MYSQL驱动,MYSQL安装见前一篇文章。

1、找到QT上编译MYSQL驱动的源码

源码的位置在(以qt5.13.2版本为例):F:\Qt\Qt5.13.2\5.13.2\Src\qtbase\src\plugins\sqldrivers\mysql(小伙伴找到qt目录,安装这个文件夹顺序找)

可以看到有以下六个文件,mysql文件夹是我自己备份的文件夹,建议大家在操作之前也进行备份。要是没有这个文件夹可能是安装时选择的组件不足,可以重新安装选择所有组件。

 

2.用qt打开这个mysql.pro工程文件

打开以后会出现配置项目选择哪一种编译器的界面,这里就需要查看你自己安装的MYSQL是32位还是64位的,如果是64位的MYSQL,则需要用64位的编译器,即Desktop Qt 5.13.2 MinGW 64-bit,本文采用的是32位的。

 

 

3.右击项目选择重新构建项目如下图

 

会出现下面报错:

 

需要我们将 QMAKE_USE += mysql 这句话注释掉

 

4.注释掉后,再次进行重新构建项目

会出现以下错误:

 

主要是因为我们没有mysql.h这个文件,那么这个文件在哪?在我们自己安装的mysql里面,在sql安装目录的include下(我的路径:F:\MySQL\MySQL Server 5.5\include)。

 

所以需要我们在.pro文件添加这些路径,也即加上下面这两句话,路径是我自己的,需要改成你们自己的:

INCLUDEPATH+="F:\MySQL\MySQL Server 5.5\include"
LIBS+="F:\MySQL\MySQL Server 5.5\lib\libmysql.lib"

 

5.加上这两句话后再次进行重新构建

(1)出现下面的bug表示你用的qt MinGW 位数与MYSQL位数不一致

 

 

(2)若出现下面的bug,若是不出现可能就表示编译出驱动,直接看第六步。

 

这个bug下面图片上的这句话有关系,我测试的时候原来的相对路径不好用,所以我才用的绝对路径,大家可以自由选择,改成自己文件的路径即可。

 

我们按照这个路径打开这个文件(用记事本即可)可以看到include里面的qtsqldrivers-config.pri文件并不存在,而存在configgure.pri这个文件,所以我们将include包括的文件改成configgure.pri这个文件,即改为:include(./configure.pri)

 

 

 

6.再次进行重新构建,构建过程可以查看“4编译输出”这一栏的输出

出现下面的结果就表示我们编译成功了!

 

7.编译成功以后就可以直接去找我们编译成功后的驱动,因为我们没有设置输出目录所以默认在qt安装的盘下,比如我的qt在F盘,所以这个输出也在F盘,路径:F:\plugins\sqldrivers

 

 

8.将编译好的驱动(所有文件复制过去就行,省事)放到对应的MinGW编译器的文件夹中,我用的32位的就放在:F:\Qt\Qt5.13.2\5.13.2\mingw73_32\plugins\sqldrivers中,64位的就在F:\Qt\Qt5.13.2\5.13.2\mingw73_64\plugins\sqldrivers中。

 

9.编译测试代码,注意是测试代码,不是上边的mysql代码。测试代码见第一篇文章。注意编译也需要用对应的编译器,生成是32位的就要用32位的编译器,64位的就是64位的编译器。

 

结果如下,这表示已经存在驱动,但是还没有加载,还需要我们从mysql的安装目录复制文件到MinGW的文件夹中。

 

10.将F:\MySQL\MySQL Server 5.5\lib中的libmysql.dll与libmysql.lib复制到mingw的bin文件夹中即:F:\Qt\Qt5.13.2\5.13.2\mingw73_32\bin。

 

 

11.再次对测试代码进行测试发现成功!

 

部分报错问题请查看第三篇文章:【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(三、问题整理)

转载参考分享此篇文章请注明出处!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章