物联网
您现在所在的位置:首页>企业动态>物联网

技术文章分享|Qt下Mysql驱动的编译添加

编辑:学到牛牛IT培训    发布日期: 2023-07-07 09:14:03  

一、Qt数据库驱动默认添加使用情况简介


在Qt5.9以后的Qt版本中减少了默认数据驱动支持,比如mysql数据库的驱动(相应的插件库),Qt5.9以前的版本大多都是有的,无需进行驱动添加,直接参考该文档第三部分内容进行操作即可;其它没有对应驱动库的情况,我们就需要自己手动编译添加,具体操作参考本文第二部分内容。


Qt中默认可包含的数据库操作驱动类型有:


QPSQL :PostgreSQL Driver


QMYSQL :MySQL Driver


QOCI :Oracle Call Interface Driver


QODBC :ODBC Driver (includes Microsoft SQL Server)


QDB2 :IBM DB2


QTDS :Sybase Adaptive Server


QSQLITE :SQLite version 3 or above


QIBASE :Borland InterBase Driver


除了这些已有驱动类型还可以通过registerSqlDriver()注册定制的数据库驱动类型,然后动态加载其他第三方驱动程序。


虽然Qt默认包含的数据库操作驱动类型有上述的那些,但当在Qt5.9以后就减少了默认驱动的添加,而是只提供了对应的数据库操作接口源码,比如当我们在Qt5.15中我们调用QSqlDatabase::drivers()去查看我们当前QtCreator中包含的驱动时我们只能得到如下类型:


1.png


所以当我们想去添加使用mysql驱动时


QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");


就会出现如下错误:


2.png


这里就可以看到当前可用的驱动类型中是没有QMYSQL的,所以我们只能通过驱动源码自行编译添加插件库使用。


二、Qt中添加MYSQL驱动具体的操作步骤:


Qt中默认包含的数据库驱动源码路径:Qt安装目录Srcqtbasesrcpluginssqldrivers


如:D:QtQt5.15.15.2Srcqtbasesrcpluginssqldrivers


3.png


这里我们想添加的是mysql的驱动,所以我们就进入这下面的mysql目录


4.png


打开mysql驱动工程配置编译器套件


5.png


1. 在mysql.pro工程文件中注释掉QMAKE_USE += mysql


6.png 


2. 在mysql.pro文件最后加上


INCLUDEPATH += $$quote(你的mysql安装目录/include/)


LIBS += $$quote(你的mysql安装目录/lib/libmysql.lib)


DESTDIR = ../mysql/mysqllib


如:


7.png


3. 在qsqldriverbase.pri中注释原有的include($$shadowed($$PWD)/qtsqldrivers-config.pri)


重新添加修改为include(./configure.pri),因为在qsqldriverbase.pri所在目录下的配置文件是configure.pri而不是qtsqldrivers-config.pri


8.png


4. 保存上述更改然后选择需要环境的编译器套件进行编译构建(若提供的mysql为32位则选择mingw32编译套件,提供的mysql为64位则选择mingw64编译套件,构建时可根据使用选择debug或release版),否则会由于库的位数不对应导致构建出错;在Qt5.15中构建成功后就会在mysql驱动工程目录下的mysqllib目录中出现以下文件


9.png


然后将生成的xxx.dll文件都拷贝至对应编译套件的数据库插件驱动目录下,方便后续该编译套件使用


10.png


注意:这里我们使用的是mingw编译套件编译的mysql.pro工程,生成的驱动库也只能供mingw编译套件使用,若想使用MSVC编译器套件则需将mysql.pro工程再用对应位数的MSVC编译器套件构建一次,此时生成的驱动库才能在MSVC构建套件下使用。


但切换到MSVC编译套件构建mysql.pro工程可能会出现如下错误


11.png


这是由于Qt中MSVC版本未设置或不正确造成的,需修改自己的编译套件目录msvc2019_64mkspecscommon目录下的msvc-version.conf文件做对应添加修改


12.png


具体的MSVC版本对应值可以在当前的msvc-version.conf文件中去找


13.png


修改完成后我们就可以使用MSVC编译套件重新编译构建mysql.pro工程,此时生成的的驱动库如下:


14.png


若需要在MSVC编译套件环境下使用操作与前面mingw编译套件添加驱动操作类似,到此在Qt中添加Mysql驱动模块操作就完成了。


三、添加编译套件构建运行所需的mysql动态库文件


在我们完成前两步操作后,接下来在我们的工程中继续使用添加QMYSQL驱动时仍然会有类似之前错误的如下问题


15.png


上述错误说明我们现在是有QMYSQL这个驱动的,只是我们的Qt编译套件中无法找到对应的mysql执行库文件,这就需要将对应安装的mysql库文件拷贝至对应编译器套件的bin目录下(如采用的是mingw81_64编译套件,就将libmysql.dll拷贝至Qt安装目录/mingw81_64/bin目录下,切记64位的库只能供64位的编译器套件使用)。


16.png

17.png


至此整个mysql驱动的问题就解决了,此时就可以在你的Qt工程中去使用mysql数据库了。


免费试学
课程好不好,不如实地听一听

封闭学习

2

1

联系我们

电话:028-61775817

邮箱:1572396657@qq.com

地址:成都市金牛区西城国际A座8楼

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
    物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

    扫一扫,免费咨询

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
    物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

    微信公众号

  • 物联网_物联网专题新闻_物联网IOT资讯-学到牛牛
物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

学一流技术,找高薪工作

物联网_物联网专题新闻_物联网IOT资讯-学到牛牛

7-24小时服务热线:

028-61775817

版权声明 网站地图

蜀ICP备2021001672号

课程问题轻松问