Qt vs2017连接MySQL数据库 - 增删改查(详细步骤)

QT连接Mysql数据库(详细成功版) QT连接Mysql数据库步骤相对比较麻烦,因此写了篇文章将详细过程呈现给大家,欢迎大家来评论区指导提问。示例代码:(1)在.pro文件中添加下列代码: (2)在mainwindow.h文件中添加下列头文件: (3)在main.cpp文件中添加下列代码: 运行代码,如果连接Mysql成功则输出下面结果:如果连接Mysql失败则输出:如果连接Mysql失败也不用太灰心,方法一在初次连接时很多情况下都会出错。下面我们来看看第二种成功率更高的连接方法。(1)选择适合自己QT版本的ODBC版本。具体如何查看自己QT是 阅读详情

在之前的文章中已经记录了如何使用C#连接MySQL数据库和C#连接ACCESS数据库。今天记录下Qt如何在vs2017中连接MySQL数据库,应该所有vs连接MySQL数据库在此篇文章中都是通用的。


Qt添加数据库的dll

将mysql文件lib目录下的libmysql.dll和libmysql.lib复制到Qt中的bin文件下。如下图所示;
在这里插入图片描述
在这里插入图片描述

注意:一定要做这一步,不然是无法连接上数据库的!
在这里插入图片描述


创建项目时需注意事项

  1. 创建qt项目时,必须勾选SQL项,不然是无法完成连接数据库的。
    如下图:
    在这里插入图片描述

  2. 如果忘记了勾选了,还可以在项目中继续勾选

    右键项目名,选择属性,点击Qt ProjectSettings,再点击Qt Modules,该项可以继续添加勾选。

    如下图:
    在这里插入图片描述
    在这里插入图片描述


连接数据库

添加如下头文件:

#include <QtSql/QSqlDatabase>	// 连接数据库
#include <QtSql/QSqlError>		// 数据库连接失败打印报错语句
#include <QtSql/QSqlQuery>		// 数据库操作(增删改查)
#include <QMessageBox>
#include <QVariantList>			// 泛型链表,可以存储任何类型的数据
#include <QDebug>

如下代码是进行数据库的连接:

//addDatabase() 创建一个连接,调用这个函数时,我们可以传递我们要访问哪种类型的数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");     //驱动 

db.setHostName("localhost");          // 数据库地址,一般都是本地,填localhost就可以(或者填写127.0.0.1) 
db.setDatabaseName("school");         // 数据库名,根据你Mysql里面的数据库名称来填写,比如我的Mysql里面有个数据库叫school
db.setUserName("root");               // 登录用户名,一般是本地用户,填root就可以
db.setPassword("yang");				  // 登录密码,填写你自己Mysql登陆密码
db.setPort(3306);                     // 端口,默认是3306


// 打开数据库
if (!db.open()) {	// 数据库打开失败
	QMessageBox::warning(this, "警报", db.lastError().text());	// 显示错误信息
	return;
} else {
	QMessageBox::information(this, "提示", "数据库连接成功");
}

当成功连接到数据库:
在这里插入图片描述


QString sql = "";

特别注意:
操作数据库增删改查时,需要用到QSqlQuery query;;当每次需要操作时,最好都是定义一个新的去操作,避免不必要的操作失败!(这是经验所得)

创建表

create table 表名(列名 类型, ..., 列名 类型);

// 创建表
QSqlQuery query;	// *对数据进行操作所需要使用到的对象*
// 定义sql语句
sql = "create table qt_test_table(id int PRIMARY KEY AUTO_INCREMENT, name varchar(32), age int, score int);";
// 执行sql语句
query.exec(sql);	

插入单条数据

insert into 表名 values(数据1, 数据2, ..., 数据n);

// 插入数据
sql = "insert into qt_test_table values(1, '小明', 00, 59);";
query.exec(sql);	// 执行sql语句

批量插入数据

  1. 风格一:odbc风格

    // 创建预处理语句:?相当于 占位符
    query.exec("insert into qt_test_table(name, age, score) values(?, ?, ?);");
    // 给字段设置内容
    QVariantList nameList;
    nameList << "小红" << "小黄" << "小蓝" << "小紫";
    QVariantList ageList;
    ageList << 11 << 22 << 33 << 44;
    QVariantList scoreList;
    scoreList << 69 << 79 << 89 << 99;
    // 给字段绑定相应的值,按顺序绑定
    query.addBindValue(nameList);
    query.addBindValue(ageList);
    query.addBindValue(scoreList);
    // 执行预处理命令
    query.execBatch();
    

    插入结果如下图:在这里插入图片描述

  2. 风格二:oracle风格

    与风格一差不多,区别在于占位符与绑定顺序。

    // 创建预处理语句:占位符  : + 自定义名字(一般写跟字段名一致)
    query.prepare("insert into qt_test_table(name, age, score) values(:name, :age, :score);");
    // 给字段设置内容
    QVariantList _nameList;
    _nameList << "小绿" << "小黑" << "小白" << "小橙";
    QVariantList _ageList;
    _ageList << 55 << 66 << 77 << 88;
    QVariantList _scoreList;
    _scoreList << 19 << 29 << 39 << 49;
    // 给字段绑定相应的值,不局限于顺序
    query.bindValue(":name", _nameList);
    query.bindValue(":score", _scoreList);
    query.bindValue(":age", _ageList);
    // 执行预处理命令
    query.execBatch();
    

    插入结果如下图:
    在这里插入图片描述


删除数据

delete from 表名 where 条件;

// 删除数据
sql = QString("delete from qt_test_table where name = '小明';");
query.exec(sql);

更新数据

update 表名 set 列名 = ***, ..., 列名 = *** where 条件;

// 更新数据
sql = QString("update qt_test_table set name = '小小晓晓', age = 18, score = 100 where id = 2;");
query.exec(sql);

查询数据

使用.next()方法指向下一条记录,如果还有则返回true,如果没有了则返回false。

通过.value()可以获得对应字段的内容;
可以通过数字下标方式获得,也可以通过字段名获得。

select * from 表名; 查询全部
select 字段名 from 表名; 仅查询该字段内容
select * from 表名 where 条件; 条件查询

// 查询数据
query.exec("select * from qt_test_table;");		// 查询全部
//query.exec("select * from qt_test_table where id = 2;");	// 条件查询
// 当查询完数据返回false
while (query.next()) {
	qDebug() << query.value(0).toInt()			// 第一个字段
			 << query.value(1).toString()		// 第二个字段
			 << query.value("age").toInt()		// 也可以通过字段名进行获取
			 << query.value("score").toInt();
}

在这里插入图片描述


删除表

drop table 表名;

// 删除表
query.exec("drop table qt_test_table;");

释放数据库连接

当不在使用数据库时,记得释放数据库的连接

// 释放数据库连接  
db.close();         

获得当前数据库对象

有时候我们的数据库对象是在构造函数里定义的,但是如果我们需要在私有的方法里使用它,该如何使用呢?

很简单,一行代码的事:

QSqlDatabase::database();	// 返回当前数据库对象

使用它就可以返回当前数据库对象,进而做其他操作!


总结:
各语言连接数据库的方式都是大同小异,需要注意语言的特性,需要添加那些辅助的东西才可以进行正常连接!

VS2019+Qt5.15+MySQL环境搭建与驱动编译实战指南 在Windows桌面开发中,Visual Studio、Qt与MySQL的组合广泛用于工业上位机和企业工具。其核心原理在于编译器版本匹配与数据库驱动动态加载,技术价值是确保界面、逻辑与数据层稳定协同。典型应用场景包括设备管理软件、信息录入系统等。环境搭建的关键在于统一组件位数、正确编译QMYSQL驱动并配置运行时依赖。本文围绕VS2019、Qt5.15与MySQL的集成,详解从安装到驱动编译、项目调试的完整流程,帮助开发者避开常见陷阱,快速构建可用的开发环境。 阅读详情

相关推荐

基于Qt与OpenCV的人脸识别打卡系统开发实战

人脸识别作为计算机视觉的核心技术之一,其原理是通过算法提取并比对人脸特征,实现身份验证。这项技术融合了图像处理、模式识别与机器学习,在安防、考勤、金融等领域具有重要应用价值。本文聚焦于一个典型的工程实践场景——桌面端人脸识别打卡系统,深入探讨了如何利用Qt框架构建图形界面,并结合OpenCV库实现实时人脸检测与识别。项目采用经典的三层架构,将表示层、业务逻辑层与数据访问层分离,确保了代码的可维护性与可扩展性。通过集成SQLite/MySQL进行数据管理,完整呈现了从环境配置、核心模块开发到系统集成的全流程,

weixin_34319111的博客 394

Qt连接数据库,并实现数据库的增删改查

根据自己学习的内容,有关QTableView显示数据库,并实现数据库的增删改查,在这里做下总结。

qq_43638158的博客 1万+

基于Qt与C++的校园商铺进销存系统开发实战

桌面应用开发是软件工程中的重要领域,其核心在于构建高效、稳定且用户友好的本地客户端程序。其原理通常围绕图形用户界面(GUI)框架、数据持久化与业务逻辑处理展开。在技术价值上,优秀的桌面应用能提供流畅的交互体验和强大的本地计算能力,尤其适合对性能、安全性和离线操作有要求的场景,如企业资源管理、办公自动化等。应用场景广泛,从个人工具软件到行业专用系统均有涉及。本文聚焦于一个具体的工程实践案例——使用Qt框架和C++语言,结合轻量级SQLite数据库,开发一个面向校园小型商铺的**单机版进销存管理系统**。文章详

weixin_34367257的博客 423

Qt(C++)使用SQLite数据库完成数据增删改查

当前文章介绍的设计的主要功能是利用 SQLite 数据库实现宠物投喂器上传数据的存储,并且支持数据的增删改查操作。其中,宠物投喂器上传的数据包括投喂间隔时间、水温、剩余重量等参数。

991

win10下Qt5.14.2 VS2017 mysql-8.0.21 编译Qt mysql驱动

win10用Qt5.14.2、VS2017和mysql8.0.21编译出的Qt mysq驱动 MinGW73_64(mysql-8.0.21-winx64) MinGW73_64(mysql-connector-c-6.1.11-winx64) VS2017(mysql-8.0.21-winx64) 如何编译详见https://blog.youkuaiyun.com/aa819310/article/details/108712962

STM32的GPS数据提取程序设计说明——基于NMEA0183协议

一、硬软件平台 本次程序实现效果为对GPS信号穿送来的数据进行筛选,并将筛选后的信息通过上位机显示出来,所以此次设计所需硬件包括STM32F407、RS232转TTL、CH340USB转串口模块,注意该模块在使用前,对应的系统需要安装驱动,否则串口调试助手无法识别,另外还包括JLink下载器。 本次代码设计软件为KEIL5并结合F4固件包,上位机系统为WIN7,主机系统为WIN10。 二、算法总体思路设计 由于GPS通过RS232将数据传送给板子,因此使用两个串口资源(串口1和串口2),其中一个用来

小景的博客 6181

Qt + MySQL 增删改查

Qt + MySQL 简单构建项目后端总结 最近跟着同学第一次完成了一个小项目,项目大概意思就是设计一个PC端的应用,通过分析人的照片得到关节的一些数据,医生可以通过这些数据进行康复诊断。我主要负责的是其中的数据库搭建部分,前端用的Qt,后端的数据库增删改查操作都用Qt内部的接口实现 Qt 连接MySQL 在.pro文件中加上sql模块 QT += core gui sql Qt提供了许多底层的驱动,对于很多个数据库都有着很好的支持,对于MySQL来说,Qt当中所使用的类名为QSqlDatabas

h_a_p_p_ying__的博客 3782

【论文速读】MLDT:基于开源大语言模型的复杂长时机器人任务规划多层次分解方法

—在数据驱动的人工智能技术领域,开源大语言模型(LLMs)在机器人任务规划中的应用是一个重要的里程碑。近期基于开源大语言模型的机器人任务规划方法通常利用大量的任务规划数据集来提升模型的规划能力。虽然这些方法展现出了一定的前景,但它们在处理复杂长时任务时存在困难,因为这类任务需要理解更多的上下文信息并生成更长的动作序列。本文提出多层次分解任务规划方法(MLDT)来解决这一局限性。该方法创新性地在目标级、任务级和动作级对任务进行分解,以应对复杂长时任务带来的挑战。

muyulingfengye的博客 1646

使用Qt实现Mysql数据库的增删查改

文章目录前言工程文件(student.pro)的配置头文件(student.h)源文件main.cpp源文件student.cppUI界面设计 前言 利用Qt导入Mysql数据库,对数据库内容进行增加,删除,查找,修改。在项目需要创建数据管理系统时经常用到。 工程文件(student.pro)的配置 在.pro文件中添加sql 头文件(student.h) #ifndef STUDENTDIALOG_H #define STUDENTDIALOG_H #include <QDialog> #

凡是过往,皆为序章 4021

深入解析磁盘性能测试:vdbench与fio的实战对比

本文深入对比了磁盘性能测试两大工具vdbench与fio的核心定位与实战应用。vdbench擅长多客户端、可编排的存储系统集成测试,而fio则以灵活的单机深度定制见长,是测试硬件极限和模拟特定应用IO模型的利器。文章通过安装指南、参数解析和典型场景对比,帮助读者根据需求选择合适工具,精准评估磁盘性能。

weixin_29300931的博客 331

3D医学影像分割实战:从数据预处理到模型训练全流程解析

本文详细解析了3D医学影像分割的全流程,从数据预处理到模型训练,重点介绍了nnUNet框架的应用技巧。通过实战案例,帮助开发者掌握如何处理复杂的.nii.gz文件格式、优化数据预处理流程以及高效训练3D分割模型,特别适合医学影像分析领域的从业者参考。

weixin_29098367的博客 223

QT 成功连接 Mysql!!! 附带测试代码

QT 5.12 连接 Mysql 有的同学可能不是第一次安装 所以安装过程可能各不相同。 QT 版本位数 要和 自己下载的Mysql 位数相同 我这里是64位 1.第一次安装

weixin_46400740的博客 1130

SAP 批量修改 工艺路线 和 BOM

1、在运维的过程中经常会遇到用户需要批量更改组件,或者是批量更改数量,还是组件里面的一些标识,当处理这些批量数据处理的业务时,BOM的批量更改一个想到的就是CS20,但是CS20当BOM需要替换的时候就不是很适用。当前工作区域:选择 SAP_ITEM 对BOM行项目进行变更,工艺路线也是可以批量更改的,根据实际的业务进行选择,我这里选择的就是BOM的组件变更。5、本博客将使用新的一种方式进行BOM的批量变更,标准的事务代码:CEWB对BOM进行批量更改。3、使用LSMW的方式进行BOM的批量更改。

我小时候很黑的博客 4100

QT的mysql(数据库)最佳实践和常见问题解答

QMysql驱动是Qt SQL模块使用的插件,用于与MySQL数据库进行通信。涉及到数据库,首先安利一个软件Navicat Premium,用来查询数据库很方便。由于现在版本的QT的Qmysql在安装的时候没有,需要自行去编译这个dll文件出来。

Helloorld_1的博客 1770

红米k60 修复“NV损坏” 去除主板校验电阻步骤解析与图示

红米k60 基带代码:mondrian。搭载‌高通骁龙8+ Gen1处理器.国外版本称:POCO F5 Pro适用于以下型号的小米机型:23013RK75C, 23013PC75G。 💝💝💝通过博文了解 1💝💝💝-----此机型修复NV损坏硬件类操作主板图示 2💝💝💝-----了解设备出现NV损坏的底层逻辑 3💝💝💝 ------具体修改步骤

小马哥的专栏 399

YOLOv11涨点改进| TGRS 2026 顶刊| 注意力改进篇| 引入MSEA多尺度边缘感知注意力,助力红外小目标检测、遥感目标检测、工业缺陷检测、图像去雨雾任务高效涨点

🔥本文提出了一种基于MSEA多尺度边缘感知注意力的YOLOv11改进模型,通过增强网络对边缘、纹理和细粒度信息的感知能力,显著提升复杂背景下的目标检测性能。MSEA模块采用多尺度空洞卷积提取上下文特征,并通过边缘监督和注意力融合机制强化目标边界信息。实验表明该方法在小目标、边界模糊目标和复杂纹理目标检测任务中表现优异,尤其在遥感、工业缺陷和红外检测等场景具有显著优势。文章详细介绍了MSEA的结构原理、核心代码实现、模块配置方法以及三种YOLOv11改进方案.

Ai缝合怪、助力小伙伴高效发论文 185

QT:实现连接数据库,并进行简单的增删改查等功能

实现结果: 这个小的程序实现主要分为两个三个部分: 添加一个connection.h文件,实现数据库的连接 在ui界面拖入相应的控件,构件图形化界面 在mainwindow.cpp中现实相应的代码操作(需要注意函数都是按键的槽的clicked()函数) 在实现项目前,首先需要在.pro中添加: QT += sql 一,connection.h代码实现 #ifndef CONNECTION_H #define CONNECTION_H #include <QMess

双鱼座boyy的博客 5496

RK3588平台开发系列讲解(SARADC篇)SARADC的工作流程

📢本篇将介绍SARADC的源码分析和工作流程。

内核笔记 3231

C# vs2017开发窗体程序连接Access数据库报错

错误信息:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。 解决办法:安装AccessDatabaseEngine.exe / AccessDatabaseEngine_X64.exe (因为是之前出现过这个问题,电脑系统出问题后开发又遇到这个问题,第一次遇到时没写博客,所以链接忘了,需要找一下) 需要下载联系QQ 657674203 免费提供。 具体...

qq_32700257的博客 849

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

关于VS和Access连接的问题

关于VS和Access连接的问题 这是我第一次写博客,就把自己最近遇到的一些问题分享给大家。 之前一直在做web开发,然后自己重做了系统之后重新安装了VS2012,然后IIS也配置了,但是创建一个新项目的时候还是显示“ASP.NET4.0 尚未在服务器上注册~~~~” , 但是呢,也不影响项目的运行,之后我把VS201卸载了之后重新装了一个VS2017,(由于VS很容易卸载不干净,容易残留一些注册表什么玩意的,我就用了同学分享的一个卸载的小工具),就成功解决了这个问题。 再然后就是VS和Access的连接

tutou_gou的博客 1533

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VS+QT使用mysql数据库,以及可能遇到的问题

我们都知道在qt中使用QSqlDatabase就可以操作数据库,使用QSqlDatabase的静态函数addDatabase就可以选择操作哪种数据库,QSQLITE或者是QMYSQL。但是自 Qt 5.1 版本开始,Qt 已经不再默认包含 MySQL 驱动程序(QMYSQL),所以需要手动编译mysql的驱动。以下是详细步骤以及可能遇到的问题。

weixin_48866092的博客 3380

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

连接mysql报错:QSqlDatabase: QMYSQL driver not loaded

环境:VS2017+Qt5.12.9 连接使用Mysql时出现以下错误。 好记性不如烂笔头。之前出现过一回,没做记录,结果重新装了Qt之后又出现了这个问题。。。 记录一下。也为大家分享一下。 先去自己的Qt安装目录下查找一下有没有Mysql的插件库。 没有的话那我们可以直接打开关于Mysql驱动的源码,自己编译一下,将dll加入到上面的目录中。 打开Mysql工程,更改mysql.pro和qsqldriverbase.pri文件 mysql.pro修改如下: #添加你自己的mysql安装目录下的in

淘气の小狼人的博客 1689

Qt操作MySql数据库进行增删改查

1、实现对MySql得数据库插入操作QSqlQuery query(dbconn); query.prepare("INSERT INTO faceimage(FaceData,StrName,Sijian,Shijian)" "VALUES(:FaceData,:StrName,:Sijian,:Shijian)"); query.bindValue(":FaceData",this->ui-

ANDY 1万+

基于QT的通讯录(使用集成在vs2017的qt、连接了MySQL数据库)

基于QT的通讯录 环境配置:集成在vs2017的qt 一…h和.cpp文件 QtAddress.h代码部分 #pragma once #include <QtWidgets/QMainWindow> #include "ui_QtAddress.h" #include<QMessageBox> #include <QtSql/QSqlDatabase> #include <QtSql/QSqlError> #include <QsqlQuer

weixin_45110141的博客 492

Qt5.14.2 编译MySQL驱动 (MINGW VS2017) Driver not load Driver not load问题,略详细

Qt5.14.2 编译MySQL驱动 (MINGW VS2017) Driver not load Driver not load 问题解决

学了总是会忘...+_+ 1746

C++Qt开发——操作MySQL数据库

C++Qt开发——操作MySQL数据库

m0_60259116的博客 3097
上一篇: 命令行操作MySQL - 日期和时间类型
下一篇: 命令行操作MySQL - 字符串类型
cpp_learners
博客等级 码龄7年 1526粉丝 274原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cpp_learners

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值