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

Qt 中使用 MySQL 数据库保姆级教程(下)

作者:billy
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

前言

上篇中我们安装好了 MySQL 数据库和 Navicat 软件,下面在 Qt 中尝试使用数据库

1. 在 Qt 中连接 MySQL 数据库,尝试一下是否可行

  1. 在 pro 中添加数据库模块
    QT += sql

  2. 测试代码如下:

#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>int main()
{QSqlDatabase database = QSqlDatabase::addDatabase("QMYSQL");database.setHostName("127.0.0.1");database.setPort(3306);database.setUserName("root");database.setPassword("12345678");database.setDatabaseName("swyl");if ( database.open() ) {qDebug() << "ok";} else {qDebug() << "ng";qDebug() << database.lastError().text();}return 0;
}
  1. 此时运行代码会报错,提示你 没有加载 QMYSQL 数据库的驱动
    在这里插入图片描述

  2. 上面提示了目前可用的数据库驱动,没有 MySQL 的,那就需要我们编译驱动并拷贝到 Qt 中

2. 编译 MySQL 代码并拷贝驱动

  1. 把下载的 源代码 mysql-8.0.34-winx64.rar 这个压缩包复制到 MYSQL 安装目录下并解压
    在这里插入图片描述

  2. 打开 Qt 自带的 mysql 工程
    路径:D:\Qt\Qt_5.15.2\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql
    在这里插入图片描述

  3. 修改 pro 文件
    在这里插入图片描述

  4. 修改 pri 文件
    在这里插入图片描述

  5. 用 mingw 编译器编译
    得到下图中3个文件,把 qsqlmysql.dll 拷贝到 D:\Qt\Qt_5.15.2\5.15.2\mingw81_64\plugins\sqldrivers
    在这里插入图片描述

  6. 用 msvc 编译器编译
    得到 debug 和 release 版本的 lib 和 dll
    把编译生成的 qsqlmysql.dll 和 qsqlmysqld.dll 拷贝到 D:\Qt\Qt_5.15.2\5.15.2\msvc2019_64\plugins\sqldrivers
    再把 qsqlmysql.lib 和 qsqlmysqld.lib 拷贝到 D:\Qt\Qt_5.15.2\5.15.2\msvc2019_64\lib
    最后把 qsqlmysql.dll 和 qsqlmysqld.dll 拷贝到 D:\Qt\Qt_5.15.2\5.15.2\msvc2019_64\bin
    在这里插入图片描述

  7. 现在 Qt 中已经有 MySQL 的驱动了,再运行测试程序,就可以成功了
    在这里插入图片描述

3. 程序打包发布后无法连接 MySQL 数据库

使用 windeployqt 打包发布程序时,不会把 MySQL 的依赖库带上,需要我们手动去拷贝,否则在另一台电脑上就会出现无法连接 MySQL 数据库的情况

需要的依赖库还挺多,网上说的只拷贝 plugins 下的亲测是不行的,博主整理了一下需要这些:
在这里插入图片描述
1)首先 qsqlmysql.dll 和 qsqlmysqld.dll 是刚才我们编译得到的,发布 release 版本时 qsqlmysqld.dll 可以不用带着
2)libmysql.dll 在 MySQL 源代码路径中 D:\MySQL\mysql-8.0.34-winx64\lib
3)libssl-3-x64.dll 和 libcrypto-3-x64.dll 是 libmysql.dll 的依赖项,也在 MySQL 源代码路径中
在这里插入图片描述

4)本以为拷贝了上述几个依赖库就足够了,结果测试还是不行,还需要最后两个在 Qt 的安装路径下
在这里插入图片描述

更多请参考

  • Qt 中使用 MySQL 数据库保姆级教程(上)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Springer build pdf乱码
  • Android 理解Context
  • Oracle-深入了解cache buffer chain
  • Postman常见问题及解决方法
  • 目标检测-One Stage-SSD
  • go mod 命令详解
  • C# 如何读取Excel文件
  • Qt高质量的开源项目合集
  • 0-1 knappack(0-1背包问题)
  • Go 正则匹配之跨行匹配
  • 3D换肤在服装行业的应用
  • 基于metersphere和supper-jacoco 测试覆盖率落地实践
  • 中科亿海微UART协议
  • 【PTA-C语言】实验七-函数与指针I
  • 一文初识Linux进程(超详细!)
  • [PHP内核探索]PHP中的哈希表
  • 【Leetcode】104. 二叉树的最大深度
  • 3.7、@ResponseBody 和 @RestController
  • 77. Combinations
  • emacs初体验
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • nodejs调试方法
  • XForms - 更强大的Form
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 高度不固定时垂直居中
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 删除表内多余的重复数据
  • 携程小程序初体验
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 进程与线程(三)——进程/线程间通信
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (160)时序收敛--->(10)时序收敛十
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Core 成都线下面基会拉开序幕
  • .NET Framework 服务实现监控可观测性最佳实践
  • .net mvc 获取url中controller和action
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @取消转义