Qt - 配置MySQL驱动
一、下载并安装mysql
请前往mysql官方网站下载与安装:https://dev.mysql.com/downloads/mysql/
二、编译mingw版本
环境介绍:
系统:windows10
Qt版本:QT5.14.2 编译器MingGW64-bit
mysql版本:mysql 5.7.42-winx64
1. 拷贝libmysql.dll
1.1 复制mysql/lib
内的动态库文件libmysql.dll
,
拷贝到Qt5.14.2/5.14.2/mingw73_64/bin
的文件夹内,这一步是把MySQL的库拷贝到Qt下,让qt可以编译出mysql驱动。
2. 编译qsqlmysql.dll
2.1 需要利用QT的源码进行编译,所以QT在安装的时候需要选择source
选择来安装源码,安装好之后在QT目录下可以找到Src文件夹,里面就是Qt源码
2.2 然后我们找到Qt的mysql源码,源码在Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
目录,找到mysql.pro
文件并打开
2.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)
2.4 最好直接编译,如果出现如下图所示的对话框即为编译成功:
2.5 编译成功后在QT的同级目录下,若是默认地址则是在E盘中,会出现plugins
的文件夹,这就是我们刚刚编译出来的库文件。
2.6 打开 sqldrivers 文件夹,可以看到编译出来的库文件qsqlmysql.dll
2.7 拷贝库文件qsqlmysql.dll
到QT目录中Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers
目录下:
最后mysql的驱动即安装成功!
3. 添加测试代码
3.1 首先,确保你的.pro
文件中包含了对数据库的支持:
QT += sql
其次使用函数查看qt目前支持的驱动:
qDebug()<<"数据库驱动:"<<QSqlDatabase::drivers();//查看QT支持的数据库驱动
运行结果:
3.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();
}
运行结果:
三、编译msvc版本
环境介绍:
系统:windows10
vs版本:vs2019
Qt版本:QT5.14.2 编译器msvc
mysql数据库:mysql 5.7.42-winx64
注:编译msvc版本的数据库驱动方法
如果想要在vs+qt环境下连接mysql数据库,则需要编译一个msvc版本的数据库驱动,然后放到Qt5.14.2\5.14.2\msvs2017_64\plugins\sqldrivers
目录下。
操作方式和编译mingw64的方式差不多。
如下图所示:
1. 拷贝libmysql.dll
1.1 复制mysql/lib
内的动态库文件libmysql.dll
,
拷贝到Qt5.14.2/5.14.2/msvs2017_64/bin
的文件夹内,这一步是把MySQL的库拷贝到Qt下,让qt可以编译出mysql驱动。
2. 编译qsqlmysql.dll
注意:如果说没有msvc构建套件请手动添加。
2.1 qt构建套件的配置,分别有32位和64位的。如果自动检测没有显示构建套件,则可以手动添加一个。
32bit的配置:
64bit的配置:
2.2 添加msvc2017构建套件后,点击运行,编译出msvc版本的数据库驱动
如果编译的时候报了“如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用 /FS” 错误的话
如果你在使用 Qt 的 QMake 构建系统,可以在项目的 .pro 文件中添加以下代码:
QMAKE_CXXFLAGS += /FS
QMAKE_LFLAGS += /FS
如图所示:
2.3 打开 sqldrivers 文件夹,可以看到编译出来的库文件qsqlmysql.dll
3. 拷贝msvc版驱动
3.1 拷贝库文件qsqlmysql.dll
到QT目录中Qt5.14.2\5.14.2\msvc2017_64\plugins\sqldrivers
目录下:
最后使用vs创建一个qt项目,添加测试代码编译+运行即可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程