当前位置: 首页 > news >正文

Qt 连接 MySql 数据库

摘要:由于Qt6.x版本的源码工程存在qmake和cmake混用的情况,本文主要讲述如何在Qt 源码为 cmake工程的情况下,如何编译Mysql驱动插件并且连接MySql数据库的方式。

如果源码是qmake工程,可以参考这篇 教程

前言

在 Qt 6.x 版本使用 QSqlDatabase 去连接 MySQL 数据库的时候会出现失败的问题,经过检查发现是缺少 MySql 驱动的问题。这里用 Qt 6.9.3 版本进行演示

用如下代码可以检查:

    QStringList drivers = QSqlDatabase::drivers();for (QString driver : drivers) {qDebug() << driver;}

image

打印的结果显示,缺少MySql的驱动。

通过查阅资料得知,Qt内部会将所有的数据库驱动封装为 QSqlDriverPlugin 插件,Qt 通过加载插件来完成 驱动程序的加载。

驱动程序存放目录: Qt\6.9.3\mingw_64\plugins\sqldrivers

打开目录可以看到,确实没有 MySql 的驱动库。通过翻阅资料得知,Qt提供了MySql插件的代码,但是需要自己去编译链接。那么整体的大致流程如下: 下载Qt源码->找到MySql插件->编译->拷贝到插件目录(Qt\6.9.3\mingw_64\plugins\sqldrivers)

工程修改

找到 Qt 源码中 数据库插件目录 : Qt\6.9.3\Src\qtbase\src\plugins\sqldrivers ,在这个目录当中存放的就是驱动的源码

image

使用 vscode 或者 qtcreater打开这个目录,一定要打开这个目录,因为Qt的一些 cmake 自定义函数是在这个CMakeList中引入的,可以理解为这个CMakeList就是最小构建单元。

打开后,找到添加 mysql 的分支判断,直接强制添加MySQL分支。

if(QT_FEATURE_sql_mysql)add_subdirectory(mysql)
endif()### 改为如下
#if(QT_FEATURE_sql_mysql)add_subdirectory(mysql)
#endif()

 再进入MySQL目录,找到MySQL目录下的CMakeList.txt ,这里是Qt官方的写法,这里使用的 cmake的模块化构建,如果安装了MySQL的库,那么不需要修改。如果没有安装MySQL的库,那么需要手动去配置 MySQL::MySQL的路径

qt_internal_add_plugin(QMYSQLDriverPluginOUTPUT_NAME qsqlmysqlPLUGIN_TYPE sqldriversSOURCESmain.cppqsql_mysql.cpp qsql_mysql_p.hDEFINESQT_NO_CAST_FROM_ASCIIQT_NO_CAST_TO_ASCIIQT_NO_CONTEXTLESS_CONNECTLIBRARIESMySQL::MySQLQt::CoreQt::CorePrivateQt::SqlPrivate
)qt_internal_force_macos_intel_arch(QMYSQLDriverPlugin)

 这里直接展示配置后的结果

add_library(MySQL::MySQL INTERFACE IMPORTED)
set_target_properties(MySQL::MySQL PROPERTIESINTERFACE_INCLUDE_DIRECTORIES "D:/MySQL/mysql-9.2.0-winx64/include"INTERFACE_LINK_LIBRARIES "D:/MySQL/mysql-9.2.0-winx64/lib/libmysql.dll"
)qt_internal_add_plugin(QMYSQLDriverPluginOUTPUT_NAME qsqlmysqlPLUGIN_TYPE sqldriversSOURCESmain.cppqsql_mysql.cpp qsql_mysql_p.hDEFINESQT_NO_CAST_FROM_ASCIIQT_NO_CAST_TO_ASCIIQT_NO_CONTEXTLESS_CONNECTLIBRARIESMySQL::MySQLQt::CoreQt::CorePrivateQt::SqlPrivate
)qt_internal_force_macos_intel_arch(QMYSQLDriverPlugin)

代码编译与补丁加载

 配置完成后进行构建,单独构建即可

image

构建完成后进入 Qt\6.9.3\Src\qtbase\src\plugins\sqldrivers\build\plugins\sqldrivers 目录,其实这个目录就是构建产物目录,找到驱动

image

将所需的 qsqlmysql.debug 和 qsqlmysql.dll 两个文件拷贝到Qt工程的驱动文件夹 Qt\6.9.3\mingw_64\plugins\sqldrivers ,然后就可以正常使用了,使用之前的代码验证可得到如下结果

image

http://www.jsqmd.com/news/417861/

相关文章:

  • 新博客文章 - 法Q
  • 基于MATLAB的PAM通信系统仿真实现
  • 2026口碑出众的有机玻璃加工厂家排行榜出炉,亚克力制作/有机玻璃加工/有机玻璃定制,有机玻璃加工实力厂家找哪家 - 品牌推荐师
  • 以小身材融入场景,用大算力赢战AI!联想PGX工作站,做AI时代的小巨人 - 博客万
  • 2026年钢坝/翻板/铸铁/钢制水利闸门厂家推荐榜:新河县前进水工机械厂,适配防洪/灌溉/市政多场景水资源调控 - 品牌推荐官
  • 信号与系统2026(春季)作业要求及参考答案汇总
  • 257_尚硅谷_反序列化介绍和应用实例
  • 2026磁轴键盘哪个牌子好?实测五大热门款,迈从Ace 68 Turbo稳坐榜首 - 速递信息
  • 对拍,随机数
  • 2026年全国清洁设备厂家哪家靠谱? 技术先进服务到位 覆盖各类使用场景 - 深度智识库
  • 算法结构
  • 2026河南冷库行业数据盘点:权威发布TOP5运营格局现状 - 精选优质企业推荐榜
  • 2026年东莞手信推荐榜:广东特产/伴手礼精选,匠心工艺与地道风味的文化传承之选 - 品牌企业推荐师(官方)
  • 2026年,哪些有机玻璃制品厂家更受市场青睐?亚克力制作/亚克力制品/有机玻璃加工,有机玻璃制品源头厂家选哪家 - 品牌推荐师
  • 破解黄岛装修痛点:至善全龄全案整装方法论如何实现安心性价比装修? - 速递信息
  • 2026年2月四川省弱电工程厂家最新排行榜 - 深度智识库
  • 我想学习微服务项目,学习 Redis ES MQ 在项目中的作用,bilibili 上的黑马商城和谷粒商城如何选择
  • 2026年变电站控制柜选哪家?口碑厂商推荐来啦,紧凑型高压柜/高压电力施工/明装配电箱/模块化低压柜,控制柜制造企业排名 - 品牌推荐师
  • LeetCode3666:使二进制字符串全为1的最小操作次数
  • 2026年河南冷库保养服务商5强名单出炉,权威报告揭示一站式 - 精选优质企业推荐榜
  • 推荐一个微服务视频教程,用到了 Redis MQ ES
  • 少走弯路:10个AI论文写作软件测评!本科生毕业论文+开题报告必备工具推荐
  • 国产VS进口:氨气分析仪/氨气浓度分析仪品牌大盘点,到底谁更靠谱? - 品牌推荐大师1
  • python导入redis json数据,通过接口的方式
  • 储能海外营销代运营公司怎么选?上海、苏州B2B出海+社媒代运营服务商汇总 - 品牌2025
  • 导师严选!备受追捧的AI论文写作软件 —— 千笔·专业学术智能体
  • 2026年 东莞腊味/广东腊味厂家推荐排行榜:匠心传承与地道风味口碑之选 - 品牌企业推荐师(官方)
  • 企业级IT运维最佳实践:如何构建高效的软件资产与许可管控体系
  • 直接上结论:10个降AI率网站测评!专科生必看的降AI率工具推荐
  • 2026年河南冷库质量保障TOP5名单出炉,权威机构发布最新 - 精选优质企业推荐榜