QT 使用 Mysql 数据库
一、 安装Mysql
推荐参照:https://blog.csdn.net/m0_52559040/article/details/121843945
二、 QT连接Mysql
连接Mysql数据库时,出现QSqlDatabase: QMYSQL driver not loaded;QSqlDatabase:available drivers : QSQLITE …
在QT和MySQL首次联合使用时,大多数情况会出现这个上述情况,很可能是如下问题导致的:
(一)缺少Mysql驱动(在QT目录下没有qsqlmysql.dll文件)
看QT的安装路劲中(我的是D:\Qt\5.15.2\mingw81_64\plugins\sqldrivers),看是否包含qsqlmysql.dll,如果有就说明是不缺少Mysql驱动的。
如果上述路径中没有的话,就需要把qsqlmysql.dll拷贝到这个目录下。如果找不到这些驱动,就需要去编译源码,生成这些驱动,源码的路劲为:…\Src\qtbase\src\plugins\sqldrivers\mysql\mysql.pro。
编译源码生成qsqlmysql.dll驱动的方法
在QT安装目录下的src源码里找到MySQL文件夹
我的路径是:D:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql
双击打开mysql.pro文件
1.注释 QMAKE_USE += mysql
2.在mysql.pro文件的最后添加如下代码:
INCLUDEPATH +="D:\Program Files\MySQL\MySQL Server 8.0\include" #添加你的mysql安装目录下的include文件夹
LIBS +="D:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.lib" #添加你的mysql安装目录下的lib文件夹下的libmysql.lib文件
DESTDIR = ../mysql/myLib/ # 编译生成的qmysql.dll放置的目录,和mysql.pro所在目录一致
编辑mysql.pro文件后的代码如图:
此时,进行构建后,可能会出现如下的两个错误:
Cannot read D:/qtsqldrivers-config.pri: No such file or directory
Project ERROR: Library ‘mysql’ is not defined.
不要急,关关难过关关过,一个一个去解决,
3.解决Cannot read D:/qtsqldrivers-config.pri: No such file or directory和Project ERROR: Library ‘mysql’ is not defined.
这个错误是因为找不到qtsqldrivers-config.pri文件。双击打开D:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers目录下的qsqldriverbase.pri文件,注释掉 include($
s
h
a
d
o
w
e
d
(
shadowed(
shadowed( $PWD)/qtsqldrivers-config.pri),然后添加include(./configure.pri),最后保存。如图:
重新构建,构建成功后,在D:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql中找到并打开myLib文件夹就可以找到驱动文件了。
然后,将qsqlmysql.dll文件放到合适的文件夹下(我的是D:\Qt\5.15.2\mingw81_64\plugins\sqldrivers)
虽然我按照上面的操作,成功连接了Mysql,但参照网上很多的例子,生成的是qsqlmysql.dll和qsqlmysqld.dll两个dll文件,我这样只生成了qsqlmysql.dll一个,但是也成功连接了。至于为什么,希望能有大神能够
(二)缺少库
找到Mysql的安装路劲(我的是:D:\Program Files\MySQL\MySQL Server 8.0\lib)找到libmysql.lib文件(如图)
将其拷贝至QT相应路径(我的是:D:\Qt\5.15.2\mingw81_64\bin)下,然后重启QT。
上述问题,我是根据如下大神的不吝赐教予以解决的,链接如下:
https://blog.csdn.net/ss_0507/article/details/121373121
https://blog.csdn.net/zhangjianangyou/article/details/117018024
https://blog.csdn.net/weixin_39912368/article/details/113116866