Qt实现Mysql数据库的连接,查询,修改,删除,增加功能

Qt实现Mysql数据库的连接,查询,修改,删除,增加功能

  • 安装Mysql数据库,QtCreator

Mysql选择Mysql Server 8.1版本安装。

Mysql Server 8.1安装过程

1.首先添加网络服务权限:

Win+R键输入compmgmt.msc进入,计算机管理-系统工具-本地用户和组-组-Administrator

点击添加,在输入对象名称来选择栏,输入NETWORK SERVICE,点击检查名称,确认完成后退出。

  1. 下载Mysql8.1安装包,安装mysql。

Mysql8.1安装包下载地址:

https://download.csdn.net/download/qq_32663053/89163322

另外Mysql5.7.23版本的安装包下载地址:

https://download.csdn.net/download/qq_32663053/89163442

安装过程如下:

运行安装包:

选择安装类型:

选择安装产品:

执行安装:

安装完成,进行下一步:

Execute

执行下一步:

一直next的直到输入密码:

继续next到最后Mysql安装完毕。

配置环境变量:右击“我的电脑”–>“属性”–>“高级系统设置”–>“高级”–>“环境变量”,在打开的窗口中选择 “系统变量” 下的 “新建” 按钮创建环境变量。

尝试数据库关闭和开启:

“Windows+R”–>输入“cmd”–>Enter

到此Mysql数据库配置完成。

附带有Mysql Workbench,能够图形化处理数据库的功能软件。

  1. 下载QtCreator并加载Mysql驱动

QtCreator下载:由于QtCreator安装包过多,这里不提供。

安装过程:

安装过程选择source文件夹,否则无法配置mysql驱动。以下是我选的选项:

以后直接next直到安装结束。

  • 加载Mysql驱动
  1. 打开mysql.pro文件夹编译并生成mysql驱动文件

Mysql.pro文件位置如下(是本人的),不同的人不同位置。

用QtCreator打开mysql.pro文件配置mysql.pro文件。

圈出来的是要编写的代码,第一个注释掉mysql,第二个是将mysql的include文件和lib文件引入进来DESTDIR代表的是生成的驱动文件。代码写完执行锤子操作。执行结束后生成lib文件,也就是数据库驱动文件。

将数据库驱动文件复制到sqldriver文件夹下:我的目录如下:

将mysql文件夹下的libmysql.dll和libmysql.lib文件复制到qt的bin目录,以下是需要转移的目录

这样我们就可以连接mysql数据库了。

  • Qt连接Mysql数据库

编写代码如下连接Mysql数据库

  1. 首先在工程.pro文件下添加执行sql语句的代码:
  1. 定义一个全局变量QSqlDatabase db;用来打开数据库和操作数据库的变量。

如果连接成功则输出“数据库连接成功!”否则输出“数据库连接失败”+错误原因。

  • 数据库的查询操作

结果图:点击显示数据按钮,实现数据库表数据的显示。

QSqlQuery query=this->queryDatabase("select * from user");

//将数据库的查询结果集赋值给query

QSqlQueryModel *model=new QSqlQueryModel(ui->tableView);

//定义一个querymode绑定ui->tableView

    model->setQuery(query);//将查询结果绑定到模型上

    ui->tableView->setModel(model);

   //设置ui->tableView的mode。

这是显示数据的界面。

  • 数据库的删除操作

数据库的删除代码如下:

QString username = ui->lineEdit_3->text();

//从lineedit获得删除的主键数据进行预删除

    QSqlQuery query;

    //QString username=ui->lineEdit->text();

    //QSqlQuery query;

QString str=QString("delete from user where username='%1'").arg(username);

//编写删除sql语句

    if (!query.exec(str)) {    //执行删除语句

        qDebug() << "删除失败:" << query.lastError().text();

    } else {

        qDebug() << "删除成功";

    }

结果图如下:

  • 数据库的增加操作

数据库的增加数据是在另一个界面实现的,我们需要添加一个ui如下:

这样我们在dialog.cpp实现数据库的增加数据

QString username=ui->lineEdit->text();

QString password=ui->lineEdit_2->text();

//从lineedit读入要插入的数据

    QSqlQuery query;

    query.prepare("insert into sys.user values(?,?)");

    query.addBindValue(username);

query.addBindValue(password);

//预执行sql语句,并在语句中插入列数据

    if(!query.exec()){//执行增加数据语句

        qDebug()<<"无法插入数据";

        QMessageBox::information(NULL"增加表数据","增加失败",QMessageBox::Yes | QMessageBox::NoQMessageBox::Yes);

    }else{

        QMessageBox::information(NULL"增加表数据","增加成功",QMessageBox::Yes | QMessageBox::NoQMessageBox::Yes);

        Dialog::close();

    }

//如果增加失败,停留在子界面

//如果增加成功,返回主界面

//点击返回主界面按钮可以返回

实现的结果图:

  • 数据库的更新操作

更新操作,仍需要在子界面实现,子界面创建如六中的操作,操作是一样的。

首先是连接数据库然后输入主键的数值,找到所有列的信息:

db1=QSqlDatabase::addDatabase("QMYSQL");

    QString host="localhost";

    QString dbName="sys";

    QString user="root";

    QString password="12345";

this->connectToDatabase(host,dbName,user,password);

//以上是连接数据库

QString username = ui->lineEdit_3->text();

//获得主键信息

QSqlQuery query=this->queryDatabase(QString("select * from user where username = '%1'").arg(username));

//执行查询操作

    while (query.next()) {

        QString result = query.value(0).toString();

        QString result1 = query.value(1).toString();

        ui->lineEdit->setText(result);

        ui->lineEdit_2->setText(result1);

        ui->lineEdit->setReadOnly(true);

//将查询到的信息输出到lineedit中。

        qDebug() << result<<"   "<<result1;

}

然后我们修改非主键的列值。进行接下来的更新操作。

QString username = ui->lineEdit_3->text();

QString password = ui->lineEdit_2->text();

//获取所有列的数据,准备增加表数据

    QSqlQuery query;

   QString str=QString("update user set password = ? where username = ?");

//编写sql语句

    query.prepare(str);

    query.addBindValue(password);

query.addBindValue(username);

//预执行sql语句,并为未知量赋值

    if (!query.exec()) {//执行更新语句

        qDebug() << "更新失败:" << query.lastError().text();

        QMessageBox::information(NULL"更新表数据","更新失败",QMessageBox::Yes | QMessageBox::NoQMessageBox::Yes);

    } else {

        qDebug() << "更新成功";

        QMessageBox::information(NULL"更新表数据","更新成功",QMessageBox::Yes | QMessageBox::NoQMessageBox::Yes);

        Dialog1::close();

        //db1.close();

    }

//若成功,提示更新成功,并返回主界面

//若失败,停留在子界面。

实现的结果图:

以上就是QtCreator对Mysql数据库的增加、修改、删除、查询的操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/556509.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

密码学 | 数字签名 + 数字证书

&#x1f951;原文&#xff1a;数字签名和数字证书的原理解读 - 知乎 &#x1f951;声明&#xff1a;后文图中若未明确指明&#xff0c;默认是 Bob 的公钥或私钥。 Step1&#xff1a;Bob 有两把钥匙&#xff0c;一把是公钥&#xff0c;另一把是私钥。 Step2&#xff1a;Bob 把…

安全狗云眼的主要功能有哪些?

"安全狗云眼"是一款综合性的网络安全产品&#xff0c;主要用于实时监控和保护企业的网络安全。其核心功能包括威胁检测、漏洞扫描、日志管理和合规性检查等。 以下是安全狗云眼的主要功能详细介绍&#xff1a; 1、资产管理 定期获取并记录主机上的Web站点、Web容器、…

达梦数据库——异常崩溃(core)分析处理

CORE文件介绍 core文件是在程序异常崩溃时生成的文件&#xff0c;它包含了程序在崩溃瞬间的内存状态信息&#xff0c;主要是用来调试和分析问题。我们可以使用调试器工具&#xff08;如GDB&#xff09;来分析core文件&#xff0c;以便定位和解决问题。 CORE文件的配置 开启cor…

ActiveMQ主从架构和集群架构的介绍及搭建

目录 一、主从和集群架构的特点 1.1 主从架构的-Master/slave模式特点 1.2 集群架构-Cluster模式特点 二、ActiveMQ的主从架构 2.1 架构图 2.2 特点 2.3 实现方式&#xff08;3种&#xff09; 2.4 实现 &#xff08;基于LevelDB复制&#xff09; 2.4.1 准备环境 2.4.2…

2024化工制造企业数字化白皮书

来源&#xff1a;蓝凌研究院 中国石油和化学工业联合会发布2023年中国石油和化工行业经济运行情况。数据显示&#xff0c;2023年&#xff0c;我国石化行业实现营业收入15.95万亿元&#xff0c; 同比下降1.1%&#xff0c;利润总额8733.6亿元&#xff0c;行业经济运行总体呈现低…

vscode搭建C/C++环境

文章目录 一、安装vscode 二、下载安装g 三、安装VSCode插件 四、配置运行环境 一、安装vscode 直接官网免费下载&#xff1a;下载完成后进行安装&#xff0c;记得更换安装路径Visual Studio Code - Code Editing. RedefinedVisual Studio Code is a code editor redefine…

大数据------额外插件及技术------Git(完整知识点汇总)

Git 定义 它是分布式版本控制工具&#xff0c;主要用于管理开发过程中的源代码文件&#xff08;如&#xff1a;Java类、xml文件、html页面等&#xff09;&#xff0c;在软件开发过程中被广泛应用 作用 代码回溯&#xff1a;快速回到某一代码历史版本版本切换&#xff1a;同一个…

Python文件处理--进阶

Python标准库文件操作相关模块&#xff1a; 1.使用pickle序列化 序列化指的是&#xff1a;将对象转化成“串行化”数据形式&#xff0c;存储到硬盘或通过网络传输到其他地方。反序列化是指相反的过程&#xff0c;将读取到的“串行化数据”转化成对象。我们可以使用pickle模块…

算法部署 | 使用TensorRT部署AlphaPose姿态估计算法

项目应用场景 面向 AlphaPose 姿态估计算法的推理加速场景&#xff0c;项目采用 TensorRT 进行 GPU 算法加速推理。 项目效果 项目细节 > 具体参见项目 README.md (1) 模型转换 python pytorch2onnx.py --cfg ./configs/coco/resnet/256x192_res50_lr1e-3_1x.yaml --chec…

基于Springboot的简历系统

基于SpringbootVue的简历系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 简历模板 招聘会 求职论坛 系统公告 后台登录 后台首页 用户管理 简历模板 模板…

面试八股——JVM★

类加载 类加载器的定义 类加载器的类别 类装载的执行过程 类的装载过程&#xff1a; 加载&#xff1a; 验证&#xff1a; 准备&#xff1a; 这里设置初始值并不是传统意义的设置初始值&#xff08;那个过程在初始化阶段&#xff09;。 解析&#xff1a; 初始化&#xff1a; …

YOLOv8改进 | Conv篇 | CVPR2024最新DynamicConv替换下采样(包含C2f创新改进,解决低FLOPs陷阱)

一、本文介绍 本文给大家带来的改进机制是CVPR2024的最新改进机制DynamicConv其是CVPR2024的最新改进机制&#xff0c;这个论文中介绍了一个名为ParameterNet的新型设计原则&#xff0c;它旨在在大规模视觉预训练模型中增加参数数量&#xff0c;同时尽量不增加浮点运算&#x…

servlet的三个重要的类(httpServlet 、httpServletRequst、 httpServletResponse)

一、httpServlet 写一个servlet代码一般都是要继承httpServlet 这个类&#xff0c;然后重写里面的方法 但是它有一个特点&#xff0c;根据之前写的代码&#xff0c;我们发现好像没有写main方法也能正常执行。 原因是&#xff1a;这个代码不是直接运行的&#xff0c;而是放到…

气象观测站点数据下载与处理

一、下载途径 全国400多个气象站气候数据&#xff08;1942-2022&#xff09; 王晓磊&#xff1a;中国空气质量/气象历史数据 | 北京市空气质量历史数据 气象数据免费下载网站整理 中国气象站观测的气象数据怎么下载 二、R语言处理 2.1 提取站点文件 library(dplyr) library(…

(助力国赛)数学建模可视化!!!含代码1(折线图、地图(点)、地图(线)、地图(多边形)、地图(密度)、环形图、环形柱状图、局部放大图)

众所周知&#xff0c;数学建模的过程中&#xff0c;将复杂的数据和模型结果通过可视化图形呈现出来&#xff0c;不仅能够帮助我们更深入地理解问题&#xff0c;还能够有效地向评委展示我们的研究成果。   今天&#xff0c;作者将与大家分享8种强大的数学建模可视化图形及其在…

解决VirtualBox虚拟机启动失败的问题

一.出现的问题&#xff08;未能启动虚拟电脑&#xff0c;由于物理网卡未找到&#xff09; 一、错误信息分析 “未能启动虚拟电脑&#xff0c;由于物理网卡未找到”&#xff1a;这个错误通常是由于VirtualBox无法识别或连接到物理网卡造成的。可能是由于驱动程序问题、网络设置错…

2024年阿里云最便宜的轻量应用服务器与云服务器价格及优惠购买入口

2024年&#xff0c;阿里云推出了几款价格最便宜的轻量应用服务器和云服务器&#xff0c;其中轻量应用服务器2核2G3M公网带宽50GB 高效云盘活动价格61元1年&#xff0c;经济型e实例4核16G10M公网带宽100G ESSD Entry云盘活动价格最低只要30元/1个月&#xff0c;通用算力型u1实例…

pyskl手势/动作识别的实现与pytorch cuda环境部署保姆教程

恭喜你&#xff0c;找到这篇不需要翻墙就能够成功部署的方法。在国内布置这个挺麻烦的&#xff0c;其他帖子会出现各种问题不能完全贯通。便宜你了。。 实话5年前我用1080训练过一个基于卷积和ltsm的手势识别&#xff0c;实话实说感觉比现在效果好。是因为现在的注意力都在tra…

【Spring】Spring MVC入门

Spring MVC入门 一、什么是Spring Web MVC&#xff1f; 1.1 MVC定义 MVC是Model View Controller的缩写&#xff0c;是一种软件架构的设计模式&#xff0c;将软件系统分为模型、视图、控制器三个部分。 示意图如下: 可以看到&#xff0c;Controller作为一个“粘合剂”处于M…

Hadoop——Yarn基础架构

Hadoop——Yarn基础架构 Hadoop YARN&#xff08;Yet Another Resource Negotiator&#xff09;是Apache Hadoop生态系统中的一个子项目&#xff0c;它是用于集群资源管理的框架&#xff0c;负责为运算程序提供服务器运算资源&#xff0c;相当于一个分布式的操作系统平台&…