Qt连接mysql数据库---kalrry

Qt连接mysql数据库---kalrry

前言

Qt自带SQLite数据库驱动很好用,但如果甲方要求必须使用MySql,那么坑就来了(本教程在Qt5版本下测试成功,Qt6需要自行尝试)

以下是记录解决Qt连接mysql的驱动问题

解决方法1

使用mysql安装目录下已编译的驱动【不一定有效】

由于mysql驱动不是对所有Qt版本都通用的,所以,此方法未必有效。之前测试过,Qt5.9 MSVC2017和mysql5.7有效,其他的无效

C++ 复制代码
方法:将mysql的lib文件夹中的动态库复制到Qt对应编译器的bin目录下即可
编译打包后,可能需要再次将动态库复制到打包软件的根目录

解决方法2

手动编译mysql【与所用的编译器匹配】

  1. 进入Qt源码的目录【安装Qt时需要选择安装source才有该目录】:D:\DevEnv\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql
  2. 修改mysql.pro文件
bash 复制代码
# 添加如下信息,并注释掉QMAKE_USE += mysql
INCLUDEPATH +="D:\DevEnv\mysql-8.0.23-winx64\include"  # mysql头文件目录
LIBS +="D:\DevEnv\mysql-8.0.23-winx64\lib\libmysql.lib"  # mysql库文件目录
DESTDIR  = ../mysql/lib/  # 指定编译后输出位置
  1. 编译

    使用Qt 5.15.2 MinGW 64bit编译,生成的动态库只适合此编译器
    出现了一个问题【此问题似乎可以不用管它】

    解决办法,修改如下文件:
  2. 编译MSVC问题
    可能会出现:Qt之msvc-version.conf loaded but QMAKE_MSC_VER isn't set
js 复制代码
解决办法:在D:\DevEnv\Qt\5.15.2\msvc2019_64\mkspecs\common的msvc-version.conf配置文件中添加QMAKE_MSC_VER = 1900即可

再次编译,生成lib文件夹【MinGW和MSVC生成的文件不太一样】

  1. 复制lib文件夹的文件到

注意:此方法同样需要复制mysql/lib目录下的文件到Qt的bin目录下

  1. 连接测试
C++ 复制代码
qDebug() << QSqlDatabase::drivers();
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("wordmemory");
db.setUserName("root");
db.setPassword("123456");
bool ok = db.open();
if (ok) qDebug() << "连接数据库ok";
else qDebug() << "连接数据库失败";
相关推荐
啊吧怪不啊吧44 分钟前
极致性能的服务器Redis之String类型及相关指令介绍
网络·数据库·redis·分布式·mybatis
zihan032144 分钟前
Redis Windows版本默认配置文件,Redis配置不生效解决方案
数据库·redis·缓存
强子感冒了2 小时前
MYSQL学习笔记:DML & DQL 核心语法
笔记·学习·mysql
Hgfdsaqwr2 小时前
实战:用Python开发一个简单的区块链
jvm·数据库·python
砚边数影2 小时前
InfluxDB迁移替换实战:金仓时序数据库如何提高写入性能
数据库·性能优化·时序数据库·kingbase·kingbasees·金仓数据库
eWidget8 小时前
InfluxDB迁移至金仓数据库的同城容灾实践:性能显著提升、运维效率优化,某能源企业实现RPO_5秒的高可靠时序数据管理
运维·数据库·能源·时序数据库·kingbase·kingbasees·金仓数据库
小句8 小时前
MySQL慢查询日志详细使用指南
数据库·mysql·adb
老邓计算机毕设9 小时前
SSM医疗资源普查6qxol(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·javaweb开发·医疗资源管理
dyyx1119 小时前
如何从Python初学者进阶为专家?
jvm·数据库·python
码农水水9 小时前
中国邮政Java面试被问:容器镜像的多阶段构建和优化
java·linux·开发语言·数据库·mysql·面试·php