首先是新建一个Qt工程,在pro文件中
QT += sql
#include <QSqlDatabase>
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //QMYSQL是固定的
db.setHostName("127.0.0.1");
db.setDatabaseName("testdatabase"); //测试的数据库名
db.setUserName("root"); //mysql数据库用户名
db.setPassword("sunshine"); //这里写你的MySql数据库密码
bool ok = db.open();
if (ok)
{
qDebug() << "connect ok";
}
else
{
qDebug() << "connect failed";
}
如果你现在connect ok则,恭喜你不用自己编译MySql库了。如果报出MySql的驱动没有加载,则耐心继续一步步往下看,困扰了我两天多,终于解决了。我把一些踩坑的过程记录下来,以及编译成功的步骤也详细写出来,希望能帮到和我有一样需求的人。
Qt的帮助文档有篇专门写数据库驱动如何编译的“SQL Database Drivers”,可以去仔细研究这个,如果没有这个精力,也没关系,我们继续往下看:
一、确认一些环境设置以及软件版本
Qt安装的时候勾选了安装Qt源码,否则就没有下面的自己编译数据库驱动这个过程。
安装的数据库版本和编译器的位数相同,如果是x64,则两者都是x64。举例:我的编译器是用的mingw73_64,x64位。
如何查看mysql是32位还是64位?
D:MySQL_Server_5_7in>mysql -V
mysql Ver 14.14 Distrib 5.7.29, for Win64 (x86_64)
mysql是64位的——win64
3. 环境变量
你的这个能出来,如果出不来,就去相应的目录去手动打开,建议最好右键管理员运行这个,不要用cmd。输入qmake,有以下输出,则没问题,可以继续。
4.其他一些非必须的环境变量设置
比如将MySql的bin目录,lib目录加入到环境变量中。这个应该是非必须的,我是前面踩坑多了,才安装网上的一些教程做的,后来编译成功发现这个应该是非必须的。
二、开始编译
步骤一
修改mysql.pro文件
D:QtQt5.14.15.14.1Srcqtbasesrcpluginssqldriversmysql
我的Qt安装路径是在D盘,你的也是按照这个路径格式去找
#QMAKE_USE += mysql
INCLUDEPATH += "D:/MySQL_Server_5_7/include"
LIBS += "D:/MySQL_Server_5_7/lib/libmysql.lib"
只需要注释掉一行#QMAKE_USE += mysql,前面加#号就是注释掉了。
加两行,一个是你的MySQL安装目录的include路径,一个是你的libmysql.lib路径位置。
我把完整的mysql.pro文件展示一下:
TARGET = qsqlmysql
HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
#QMAKE_USE += mysql
OTHER_FILES += mysql.json
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
INCLUDEPATH += "D:/MySQL_Server_5_7/include"
LIBS += "D:/MySQL_Server_5_7/lib/libmysql.lib"
include(../qsqldriverbase.pri)
这里要避免一些坑,你的MySql路径有空格,这是一个坑,处理方式有两种:方式一,加$$quote
方式二、重新安装MySql,这个代价比较大。
那就详细说说方式一怎么操作:
举例:引用自Qt在pro文件中加入带空格的路径
LIBS += -L$$quote(C:Program Files (x86)Microsoft SDKsWindowsv7.1ALib)
INCLUDEPATH += $$quote(C:Program Files (x86)Microsoft SDKsWindowsv7.1AInclude)
步骤二
最好是右键管理员运行这个,如果普通双击打开也可以,貌似也可以,后面可能要手动复制一些东西。
cd 到你的sqldrivers目录,qmake,这个是为了生成qtsqldrivers-config.pri
cd mysql
qmake
mingw32-make
mingw32-make install
如果你没看到任何报错信息,则应该会在这个目录
D:QtQt5.14.15.14.1Srcqtbasesrcpluginssqldriverspluginssqldrivers
中看到生成的一些dll
后缀.debug的是debug版本,这个我有纳闷,应该是qsqlmysqld.dll,才是debug版本的,这个先不去细究。
可以将这个目录中除.a的文件外的,都复制到以下路径中(如果没有的话,就手动复制进来吧,如果有的话,也是一样的,因为上面的mingw32-make install就是自动复制到下面这个路径中)
D:QtQt5.14.15.14.1mingw73_64pluginssqldrivers
步骤三、最后一步
将MySql安装目录中的这两个文件复制到D:QtQt5.14.1Toolsmingw730_64in中。
步骤四、测试方法
和开头的一样,Qt建工程,连接MySql数据库,看看是否连接成功,具体可以参考这个:
https://blog.csdn.net/m0_37194132/article/details/85043349
另外,如果你本机没有安装MySql,那就去官网下个C驱动的包,安装上面的步骤一样可以编译Qt的MySql库。
下载路径:https://downloads.mysql.com/archives/c-c/
选择对应的zip压缩包下载,自行解压。