QTday4

ops/2024/10/18 10:15:38/

数据库头文件 

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QSqlDatabase>                //数据库管理类
#include<QSqlQuery>                    //数据库查询类
#include<QSqlRecord>                   //记录类QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_addBtn_clicked();void on_deleteBtn_clicked();void on_showBtn_clicked();private:Ui::Widget *ui;//实例化一个数据库对象QSqlDatabase db;
};
#endif // WIDGET_H

数据库源文件

#include "widget.h"
#include "ui_widget.h"
#include<QMessageBox>             //消息对话框
#include<QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//想要添加某个数据库if(!db.contains("stu.db")){//如果当前对象中没有包含所需的数据库,则添加一个数据库db = QSqlDatabase::addDatabase("QSQLITE");              //添加一个sqlite3的数据库db.setDatabaseName("stu.db");                         //设置数据库的名称}//打开数据库if(!db.open()){QMessageBox::information(this, "提示", "数据库打开失败");return;}//程序执行至此,表示数据库创建成功并打开了//准备创建数据表//1、实例化一个sql语句的执行者QSqlQuery querry;//2、准备sql语句QString sql = "create table if not exists STU(id int, name char, sex char, score double);";//3、执行sql语句if(!querry.exec(sql)){QMessageBox::information(this, "提示", "数据表创建失败");return;}//程序执行至此,表示数据表也创建成功了}Widget::~Widget()
{delete ui;
}//添加信息按钮对应的槽函数
void Widget::on_addBtn_clicked()
{//1、将ui界面上的相关信息获取下来int ui_numb = ui->numEdit->text().toUInt();           //获取学号QString ui_name = ui->nameEdit->text();                //姓名QString ui_sex = ui->sexEdit->text();                //性别double ui_score = ui->scoreEdit->text().toDouble();      //分数//2、判断信息中是否有空的if(ui_numb==0 || ui_name.isEmpty() || ui_sex.isEmpty() || ui_score==0){QMessageBox::information(this,"提示","请将信息填写完整");return;}//3、准备sql语句QString sql = QString("insert into STU(id, name, sex, score) values(%1, '%2', '%3', %4);").arg(ui_numb).arg(ui_name).arg(ui_sex).arg(ui_score);//qDebug()<<sql;//4、实例化sql语句执行者QSqlQuery querry;//5、执行sql语句if(!querry.exec(sql)){QMessageBox::information(this, "提示", "添加信息失败");return;}else{QMessageBox::information(this, "提示", "添加成功");}
}
void Widget::on_deleteBtn_clicked()
{QSqlQuery querry;//实例化一个sql语句执行者QString sql=QString("DELETE FROM STU ");int ui_numb = ui->numEdit->text().toUInt();           //获取学号QString ui_name = ui->nameEdit->text();                //姓名QString ui_sex = ui->sexEdit->text();                //性别double ui_score = ui->scoreEdit->text().toDouble();if(!querry.exec(sql)){QMessageBox::information(this, "提示", "删除信息失败");}else{QMessageBox::information(this, "提示", "删除成功");}
}//展示信息按钮对应的槽函数
void Widget::on_showBtn_clicked()
{//1、实例化一个sql语句执行者QSqlQuery querry;//2、准备sql语句QString sql = "select * from STU;";//3、执行sql语句if(!querry.exec(sql)){QMessageBox::information(this,"提示","查询失败");return;}//程序执行至此,表示已经完成数据库的查询,并将结果存放到querry对象中,可以通过next函数进行遍历每个结果集//函数原型:bool next();//功能:读取查询结果集的下一条记录,如果记录不为空,就返回真,否则返回假int i = 0;                  //遍历结果集的行while (querry.next()){//获取当前记录QSqlRecord record = querry.record();//对当前记录进行操作,遍历当前记录的所有字段for(int j=0; j<record.count(); j++){//该循环中的value(j),表示的就是第i行j列的那个元素//record.value(j).toString();//ui->msgTable->setItem(i,j, new QTableWidgetItem(record.value(j).toString()));QTableWidgetItem *item = new QTableWidgetItem(record.value(j).toString());    //将数据库中的字段,封装成ui界面上的一条信息ui->msgTable->setItem(i,j, item);            //将信息进行展示}i++;             //表示行数增加}
}

 


http://www.ppmy.cn/ops/124290.html

相关文章

使用aloam跑hesai Pandar-XT32激光雷达数据

参考自利用aloam跑数据集_aloam数据集-CSDN博客 第一步&#xff1a;查看bag的信息 输入rosbag info来查看bag包的信息&#xff1a; joeyjoey-Legion-Y7000P-IRX9:~$ rosbag info /home/joey/Downloads/data2022/indoor/LiDAR_IMU.bag path: /home/joey/Downloads/da…

【aws】从s3里拉取驱动 需要后台创建凭证

简答&#xff1a;建一个有s3readonlyaccess的role&#xff0c;绑定给e2就好了 详细步骤&#xff1a; 1.在控制台搜IAM----左侧导航栏点role/角色----右上角创建角色 2.使用案例里选EC2 3.搜s3readonlyaccess这个策略----创建角色 4.选中指定实例&#xff0c;设置&#xff0c;绑…

项目——超级马里奥——Day(2)

争取今天晚上能搞一半啊&#xff0c;啊啊啊啊&#xff0c;感觉事多的忙不过来 设计思路&#xff1a; 1&#xff09;创建并完成常量类 ------->一张图片的情况 先完成对图片的封装------>把图片加载一遍 &#xff08;老实说&#xff0c;我也不太知道为什么&#xff0…

【使用Java循环输出菱形,空心金字塔】

使用Java循环输出图形的探索之旅 在这篇博客中&#xff0c;我们将探讨如何使用Java中的循环结构来输出各种几何图形&#xff0c;特别是金字塔和菱形。通过这一过程&#xff0c;不仅能够加深对循环的理解&#xff0c;还能提升编程能力。 1. 打印矩形 首先&#xff0c;我们从最…

UE5.3.2查看引擎真正版本

编译好的插件给别人用&#xff0c;发现引擎不一致&#xff0c;而且双方都是5.3.2版本引擎 打开Help->About Unreal Editor可以看到引擎版本 或者直接查看引擎版本文件&#xff1a;XXXXX\Engine\Build\Build.version 里面能看到对应的分支名字

2024Java最新面试题总结(针对于一些小厂、中厂)

这是根据个人面试经历总结出来的一些经验希望可以帮助到有需要的人。 面试的时候&#xff0c;会先让你进行自我介绍&#xff0c;这个大家准备一两分钟的面试稿就可以。然后就是正式面试&#xff0c;面试官一般是两个人以上&#xff0c;开始&#xff0c;面试官会先提问一些基本…

使用CSS实现酷炫加载

使用CSS实现酷炫加载 效果展示 整体页面布局 <div class"container"></div>使用JavaScript添加loading加载动画的元素 document.addEventListener("DOMContentLoaded", () > {let container document.querySelector(".container&q…

SparkCore与FlinkCore的区别有哪些

1.架构理念方面: Spark Core: Spark 基于 RDD&#xff08;弹性分布式数据集&#xff09;的概念构建。RDD 是一个不可变的、分布式的对象集合&#xff0c;它可以在集群中的多个节点上进行并行计算。例如&#xff0c;在处理大规模的日志文件时&#xff0c;Spark 可以将日志文件…