news 2026/4/25 5:59:46

Qt ---- Qt6.5.3 连接MySQL数据库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt ---- Qt6.5.3 连接MySQL数据库

目录

  • 1,配置mysql数据库驱动
  • 2,编译qsqlmysql驱动
  • 3,连接MySQL数据库

1,配置mysql数据库驱动

Qt连接数据库需要两个驱动程序,也就是两种 .dll .lib文件,首先需要配置mysql数据库本身的驱动程序。

首先我们需要下载mysql数据库,此文章不展示如何下载mysql数据库。
作者将数据库安装在默认的C:盘

然后我们去c盘的路径 C:\Program Files\MySQL\MySQL Server 8.0\lib 中将 libmysql.lib和libmysql.dll 文件拷贝下来。

打开Qt文件夹 找到路径 Qt\6.5.3\mingw_64\plugins\sqldrivers 将刚才复制的 libmysql.lib和libmysql.dll 粘贴在此文件夹下。

然后将 libmysql.lib和libmysql.dll 粘贴到 Qt\6.5.3\mingw_64\bin 下。


2,编译qsqlmysql驱动

Qt连接数据库需要调用 qsqlmysql.dll 驱动程序,然后 qsqlmysql 驱动程序再调用 mysql 驱动实现连接mysql数据库的功能。

但是很多版本的 Qt 都没有 qsqlmysql.dll 的驱动程序,需要程序员手动编译。

首先找到 Qt 安装路径 ,进入 Qt\6.5.3\Src\qtbase\src\plugins\sqldrivers 打开 .cmake.conf 文件。


在文件中添加以下几行 :
SET(FEATURE_sql_mysql ON)
SET(MySQL_INCLUDE_DIR “D:/BuDongPan/MYSQL/include”)
SET(MySQL_LIBRARY “D:/BuDongPan/MYSQL/lib/libmysql.lib” )

其中 D:/BuDongPan/MYSQL/include 和 D:/BuDongPan/MYSQL/lib/libmysql.lib 是从MYSQL数据库相关的文件夹下复制过来的,具体操作就不展示了。

然后用 QtCreator 打开 CMakeLists.txt 文件,选择自己想选择的编译器后,构建项目,就会自动编译了,找到编译的文件夹,文件夹下就已经有了编译好的 qsqlmysql.dll 和 qsqlmysql.debug 文件。
编译文件夹的路径为 : \Qt\6.5.3\Src\qtbase\src\plugins\sqldrivers\build\Desktop_Qt_6_5_3_MinGW_64_bit-Debug\plugins\sqldrivers


将这些文件复制粘贴到 Qt\6.5.3\mingw_64\plugins\sqldrivers 中以及 Qt\Tools\QtCreator\bin\plugins\sqldrivers 中。


3,连接MySQL数据库

在 .pro文件中添加一行代码QT += sql
添加头文件:

#include<QSqlDatabase>#include<QSqlQuery>#include<QDebug>
// 添加MySQL数据库驱动QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
// 配置数据库的用户名,密码,主机名,数据库名,端口号db.setHostName("localhost");db.setPort(3306);db.setDatabaseName("itcast");db.setUserName("root");db.setPassword("2awsdjkl");if(db.open()){qDebug()<<"数据库连接成功";QSqlQueryquery(db);query.exec("SELECT VERSION()");if(query.next()){qDebug()<<"MySQL版本: "<<query.value(0).toString();}}else{qDebug()<<"数据库连接失败: ";// db.lastError().text();}
//可以打印数据库驱动名qDebug()<<"数据库驱动:"<<QSqlDatabase::drivers();

打印结果如下:
数据库驱动: QList(“QSQLITE”, “QMARIADB”, “QMYSQL”, “QODBC”, “QPSQL”)

出现 “QMYSQL” 说明qmysql驱动配置成功。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 7:19:30

40、Oracle数据库在Unix和Linux系统中的内存与磁盘I/O管理

Oracle数据库在Unix和Linux系统中的内存与磁盘I/O管理 1. ISM与LOCK_SGA参数 1.1 ISM(Intimate Shared Memory) 在Solaris 2.6及更高版本,以及Oracle 8i及更高版本中,ISM默认是启用的。数据库中的 init.ora 参数 USE_ISM 默认将该参数设置为 TRUE 。可以在操作系统…

作者头像 李华
网站建设 2026/4/23 17:54:59

BUPT网络安全之防火墙实验(实验三)

实验目的 &#xff08;一&#xff09;配置linux系统下iptables防火墙 1.学习iptables防火墙基本操作。 2.设置iptables防火墙的包过滤规则&#xff0c;分别实现以下功能&#xff1a;禁止所有主机ping本地主机&#xff1b;仅允许某特定IP主机ping本地主机&#xff1b;允许每…

作者头像 李华
网站建设 2026/4/20 18:49:29

20、C语言内存模型与存储管理全解析

C语言内存模型与存储管理全解析 1. C语言内存模型规则 在C语言中,变量和复合字面量的访问有着严格的规则。变量和复合字面量必须通过其声明的类型或字符类型指针来访问,且该规则没有例外,不能更改此类变量或复合字面量的类型。 例如以下代码: unsigned char A[sizeof(…

作者头像 李华
网站建设 2026/4/20 23:56:06

30、C语言中的线程控制与数据处理

C语言中的线程控制与数据处理 1. 控制流的变化 C代码的执行并不总是线性的,即便没有并行线程或异步信号,某些求值结果也可能依赖于编译器的排序选择。 setjmp/longjmp 是处理一系列嵌套函数调用中异常情况的强大工具,但它们可能与优化相互作用,需要使用 volatile 限定…

作者头像 李华
网站建设 2026/4/17 18:35:37

突破交互视频生成瓶颈:腾讯混元游戏工坊技术解析与行业影响

突破交互视频生成瓶颈&#xff1a;腾讯混元游戏工坊技术解析与行业影响 【免费下载链接】Hunyuan-GameCraft-1.0 Hunyuan-GameCraft是腾讯开源的高动态交互式游戏视频生成框架&#xff0c;支持从参考图和键鼠信号生成连贯游戏视频。采用混合历史条件训练策略与模型蒸馏技术&…

作者头像 李华
网站建设 2026/4/23 8:42:24

408代码题汇总

#include<stdio.h> //数组算法题 //10年 void fun1(int r[], int l, int r) {int a l, j r;while(a < b) {int temp r[a];r[a] r[b]&#xff1b;r[b] temp;a;b--;} } void fun2(int r[], int n, int p) {if(p > 0 && p < n) {fun1(r,0,n-1);fun1(r…

作者头像 李华