Qt - 配置MySQL驱动
环境介绍:
windows10
QT5.14.2 编译器MingGW64-bit
数据库:5.7.42-winx64
1. 下载并安装mysql
请前往mysql官方网站下载与安装:https://dev.mysql.com/downloads/mysql/
2. 拷贝libmysql.dll
2.1 将mysql/lib
内的动态库文件libmysql.dll
复制,拷贝到Qt5.14.2/5.14.2/mingw73_64/bin
的文件夹内
3. 检查mysql驱动
3.1 检查QT目录中Qt5.14.2/5.14.2/mingw73_64/plugins/sqldrivers
目录下,观察是否存在qsqlmysql.dll
文件以下就是没有安装驱动的情况。
4. 编译qsqlmysql.dll
4.1 需要利用QT的源码进行编译,所以QT在安装的时候需要选择source
选择来安装源码,安装好之后在QT目录下可以找到Src文件夹,里面就是Qt源码
4.2 然后我们找到Qt源码所在的目录Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
,打开mysql.pro
4.3 然后修改mysql.pro文件:
示例1:
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
# mysql的include路径
INCLUDEPATH += $$quote(E:/mysql-5.7.42-winx64/include)
# mysql的include路径
DEPENDPATH += $$quote(E:/mysql-5.7.42-winx64/include)
# mysql的lib路径
LIBS += -L $$quote(E:/mysql-5.7.42-winx64/lib) -llibmysql
include(../qsqldriverbase.pri)
示例2:
TARGET = qsqlmysql
HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
#QMAKE_USE += mysql
#加上MySql路径
INCLUDEPATH += E:/mysql-5.7.36-winx64/include
DEPENDPATH += E:/mysql-5.7.36-winx64/include
win32:LIBS += -LE:/mysql-5.7.36-winx64/lib -llibmysql
OTHER_FILES += mysql.json
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)
4.4 然后直接编译,出现对话框即为编译成功:
4.5 然后在QT的同级目录下,若是默认地址则是在E盘中,会出现plugins
的文件夹,这就是我们刚刚编译出来的库文件。
4.6 打开 sqldrivers 文件夹,可以看到编译出来的库文件qsqlmysql.dll
4.7 拷贝库文件qsqlmysql.dll
到QT目录中Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers
目录下:
最后mysql的驱动即安装成功!
5. 添加测试代码
5.1 首先,确保你的.pro
文件中包含了对数据库的支持:
QT += sql
其次使用函数查看qt目前支持的驱动:
qDebug()<<"数据库驱动:"<<QSqlDatabase::drivers();//查看QT支持的数据库驱动
运行结果:
5.2 测试代码:
#include "widget.h"
#include <QApplication>
#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
// 初始化数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost"); // 数据库服务器地址
db.setDatabaseName("test"); // 数据库名
db.setUserName("root"); // 用户名
db.setPassword("123456"); // 密码
// 尝试打开数据库连接
if (!db.open())
{
qDebug() << "数据库连接失败:" << db.lastError().text();
return -1;
}
else
{
qDebug() << "数据库连接成功!";
}
// 在此处进行数据库操作...
// 关闭数据库连接
db.close();
w.show();
return a.exec();
}
运行结果:
6. 编译msvc版本驱动
(补充一个编译msvc版本的数据库驱动方法)
6.1 如果想要在vs+qt环境下连接mysql数据库,则需要编译一个msvc版本的数据库驱动,然后放到msvs2017_64目录下,如下图所示:
环境:
windows10
vs2019
QT5.14.2 编译器msvc
数据库:5.7.42-winx64
6.2 qt构建套件的配置,分别有32位和64位的。如果自动检测没有显示构建套件,则可以手动添加一个。
32bit:
64bit:
6.3 添加msvc2017构建套件后,点击运行,编译出msvc版本的数据库驱动
如果编译的时候报了“如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用 /FS” 错误的话
如果你在使用 Qt 的 QMake 构建系统,可以在项目的 .pro 文件中添加以下代码:
QMAKE_CXXFLAGS += /FS
QMAKE_LFLAGS += /FS
如图所示:
6.4 打开 sqldrivers 文件夹,可以看到编译出来的库文件qsqlmysql.dll
6.5 拷贝库文件qsqlmysql.dll
到QT目录中Qt5.14.2\5.14.2\msvc2017_64\plugins\sqldrivers
目录下:
最后使用vs创建一个qt项目,添加测试代码编译+运行即可。