【Qt】Qt5.12.12构建64位QMYSQL数据库驱动

本文详细介绍如何在Qt5.12.12环境下构建64位QMYSQL数据库驱动。包括环境变量设置、复制mysql.dll、修改mysql.pro文件、构建工程等步骤,并提供了测试连接数据库的方法。

背景

今天尝试使用Qt打开sql文件,在调用QSqlDatabase::open()时,会报错:“driver not loaded

原因实际上是mysql 的驱动 qsqlmysql.dll 没有成功加载。

所以本篇文章将详细介绍一下:Qt5.12.12如何构建64位QMYSQL数据库驱动。

执行

写在最前,以下出现的文件路径为我自己电脑安装的路径,可根据自己的路径对应修改。

步骤一 系统环境变量(非必须)

可以将Qt和MySQL的路径都加入到系统环境变量的path内

win10:【开始菜单】-->【控制面板】---->【系统和安全】-->【系统】---->【高级系统配置(左侧)】---->【环境变量】

win7:【计算机】---->【属性】---->【高级系统配置】---->【环境变量】

选中【系统变量】内的【Path】点击【编辑】,将对应路径添加进去

这是我的Qt和MySQL的安装路径,对应各位安装路径填入即可 。

步骤二 mysql.dll

为了使 Qt 5.12.12 64 版本能够连接 MySQL Workbench 8.0 64 数据库,需要确保开发环境中的构建工具和依赖项完整安装。以下是所需的主要构建工具及相关说明: ### 构建工具与依赖 - **MinGW-w64**:Qt 5.12.1264 版本通常搭配 MinGW-w64 编译器使用。需要安装 `mingw73_64` 工具链以支持 64 编译任务[^1]。 - **MySQL C Connector 开发库**:必须下载并安装 MySQL 官方提供的 C Connector 库文件,包含头文件(`.h`)和静态/动态链接库(`.lib`, `.dll`)。这些文件用于在 Qt 项目中配置 MySQL 数据库驱动程序[^1]。 - **qmake 和 .pro 文件配置**:在 Qt 项目中,需要通过 `.pro` 文件指定 MySQL 的头文件路径 (`MYSQL_INCDIR`) 和库文件路径 (`MYSQL_LIBDIR`),例如: ```qmake QT += sql TARGET = mysql_connector TEMPLATE = app SOURCES += main.cpp \ mainwindow.cpp HEADERS += mainwindow.h win32: LIBS += -L"D:/Program Files/MySQL/MySQL Server 8.0/lib" -lmysql INCLUDEPATH += "D:/Program Files/MySQL/MySQL Server 8.0/include" ``` 上述代码片段用于设置 MySQL 驱动编译路径和链接参数。 ### 配置步骤 1. **复制 MySQL 动态链接库**:将 MySQL 中的 `libmysql.dll` 文件复制到 Qt 编译器对应的 `bin` 目录下,例如 `D:\Qt\Qt5.12.12\5.12.12\mingw73_64\bin`,以便运行时加载相关依赖[^2]。 2. **构建 MySQL 插件**:如果需要自定义 MySQL 插件,可以进入 Qt 源码目录下的 `src/plugins/sqldrivers/mysql` 子目录,并执行以下命令进行插件编译: ```bash qmake -- "MYSQL_INCDIR=D:/Program Files/MySQL/MySQL Server 8.0/include" "MYSQL_LIBDIR=D:/Program Files/MySQL/MySQL Server 8.0/lib" mingw32-make ``` 此命令会生成适用于 QtMySQL 驱动插件文件 `qsqlmysql.dll`,需将其放置于 Qt 的插件目录 `sqldrivers` 中,例如 `D:\Qt\Qt5.12.12\5.12.12\mingw73_64\plugins\sqldrivers`。 ### 环境验证 完成上述配置后,可以在 Qt Creator 中创建一个简单的测试项目,尝试打开 MySQL 数据库连接,以验证是否成功配置驱动。示例代码如下: ```cpp #include <QCoreApplication> #include <QtSql/QSqlDatabase> #include <QtSql/QSqlQuery> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("testdb"); db.setUserName("root"); db.setPassword("password"); if (!db.open()) { qDebug() << "无法连接数据库:" << db.lastError(); } else { qDebug() << "成功连接数据库!"; QSqlQuery query; query.exec("SELECT * FROM test_table"); while (query.next()) { qDebug() << query.value(0).toString(); } } return a.exec(); } ``` ###
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值