当前位置: 首页 > news >正文

QT数据库,实现数据库增删改查

QT关于数据库的相关概念

QT将数据库分为三个层次:

数据库驱动层:QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin

sql接口层:QSqlDatabase、QSqlQuery、QSqlRecord、QSqlError

用户接口层:提供一些模型QSqlQueryModel、QSqlTableModel、QSqlRelationalTableModel

实现数据库操作的相关方法

添加数据库:

[static] QSqlDatabase QSqlDatabase::addDatabase(QSqlDriver *driver, const QString &connectionName = QLatin1String(defaultConnection)) 
QSQLITE SQLite version 3 or above 

设置数据库名称:

​​​​​​​void QSqlDatabase::setDatabaseName(const QString &name)

包含数据库:

bool QSqlDatabase::contains(const QString &connectionName = QLatin1String(defaultConnection)) 

打开数据库:

​​​​​​​bool QSqlDriver::open(const QString &db)

关闭数据库:

void QSqlDatabase::close() 

错误信息:

QSqlError QSqlDatabase::lastError()

sql语句执行:构造一个QSqlQuery类对象,调用其成员函数exec,执行sql语句

bool QSqlQuery::exec(const QString &query)

遍历查询结果的函数:

bool QSqlQuery::next()

通过数据库实现学生管理系统

功能界面:

主要功能代码

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//判断数据库对象是否包含了自己使用的数据库,例如Student.dbif(!db.contains("Student,db")){//添加一个数据库//函数原型:static QSqlDatabase addDatabase(const QString& type);//参数:数据库版本//返回值:添加的数据库db = QSqlDatabase::addDatabase("QSQLITE");      //表示使用的是sqlite3版本的数据库//给数据库命名db.setDatabaseName("Student.db");}//打开数据库if(!db.open()){QMessageBox::information(this, "提示", "数据库打开失败");return;}//代码执行到这说明数据库创建并打开完毕,就可以创建数据表了//创建数据表需要使用sql语句,需要使用QsqlQuery类对象来完成//准备sql语句QString sql = "create table if not exists myTable("           //创建表的sql语句"id integer primary key autoincrement,"       //id主键,允许自增"numb integer,"                               //学号"name varchar(10),"                           //姓名"score integer,"                              //分数"sex varchar(4))";                            //性别//定义语句执行者QSqlQuery query;//使用query执行sql语句if(!query.exec(sql)){QMessageBox::information(this, "失败", "创建表失败");}else{QMessageBox::information(this, "成功", "创建表成功");}
}Widget::~Widget()
{delete ui;
}//录入按钮对应的槽函数
void Widget::on_pushButton_clicked()
{//获取ui界面中要存入数据库中的数据int numb_ui = ui->lineEdit->text().toInt();      //获取UI界面的学号QString name_ui = ui->lineEdit_2->text();        //获取UI界面的姓名int score_ui = ui->lineEdit_3->text().toInt();   //获取UI界面的成绩QString sex_ui = ui->lineEdit_4->text();         //获取UI界面的性别if(numb_ui == 0 || name_ui.isEmpty() || score_ui == 0 || sex_ui.isEmpty()){QMessageBox::information(this, "提示", "请将信息填写完整");return;}//准备sql语句QString sql =QString("insert into myTable(numb, name, score, sex) values (%1, '%2', %3, '%4')").arg(numb_ui).arg(name_ui).arg(score_ui).arg(sex_ui);//定义语句执行者QSqlQuery query;if(!query.exec(sql)){QMessageBox::information(this, "失败", "录入数据失败");}else{QMessageBox::information(this, "成功", "录入数据成功");}//清除ui->lineEdit->clear();ui->lineEdit_2->clear();ui->lineEdit_3->clear();ui->lineEdit_4->clear();}//展示按钮对应的槽函数
void Widget::on_pushButton_2_clicked()
{//准备sql语句QString sql = "select * from myTable";//定义语句执行者QSqlQuery query;if(!query.exec(sql)){QMessageBox::information(this, "失败", "没有找到数据");return;}//将查找到的所有结果都放到query对象中//可以通过next函数不断遍历查询结果int i = 0;          //记录行号while(query.next()){//遍历的是任意一组记录,query.record//要找到每条记录中的每个数据,使用value(i)//将数据库中的表格战术到UI界面//ui->tableWidget->setItem()//query.record().value()for(int j=0; j<query.record().count()-1; j++){ui->tableWidget->setItem(i, j, new QTableWidgetItem(query.record().value(j+1).toString()));}i++;}
}

相关文章:

QT数据库,实现数据库增删改查

QT关于数据库的相关概念 QT将数据库分为三个层次&#xff1a; 数据库驱动层&#xff1a;QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin sql接口层&#xff1a;QSqlDatabase、QSqlQuery、QSqlRecord、QSqlError 用户接口层&#xff1a;提供一些模…...

SQL-子查询

SQL 子查询 是指将一个SELECT查询&#xff08;子查询&#xff09;的结果用括号括起来作为另一个SQL语句的数据来源或者判断条件...

【8章】Spark编程基础(Python版)

课程资源&#xff1a;&#xff08;林子雨&#xff09;Spark编程基础(Python版)_哔哩哔哩_bilibili 第8章 Spark MLlib&#xff08;6节&#xff09; 机器学习算法库 &#xff08;一&#xff09;MLlib简介 1、机器学习 机器学习可以看做是一门人工智能的科学&#xff0c;该领…...

桌面应用小程序,一种创新的跨端开发方案

Qt Group在提及2023年有桌面端应用程序开发热门趋势时&#xff0c;曾经提及三点&#xff1a; 关注用户体验&#xff1a;无论您是为桌面端、移动端&#xff0c;还是为两者一起开发应用程序&#xff0c;有一点是可以确定的&#xff1a;随着市场竞争日益激烈&#xff0c;对产品的期…...

将本地jar打包到本地maven仓库或maven私服仓库中

将本地jar包打包到本地的maven仓库中的命令&#xff1a; mvn install:install-file -DgroupIdtebie.applib.api -DartifactIdapiclient -Dversion1.0-SNAPSHOT -Dfile本地jar路径 -Dpackagingjar说明&#xff1a; DgroupId pom中的<groupId></groupId> Dartifact…...

java 实现建造者模式

建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;用于创建一个复杂对象&#xff0c;将对象的构建过程与其表示分离&#xff0c;以便可以使用相同的构建过程来创建不同的表示。在Java中&#xff0c;可以使用建造者模式来构建具有多个属性的对…...

串行FIR滤波器

串行 FIR 滤波器设计 串行设计&#xff0c;就是在 16 个时钟周期内对 16 个延时数据分时依次进行乘法、加法运算&#xff0c;然后在时钟驱动下输出滤波值。考虑到 FIR 滤波器系数的对称性&#xff0c;计算一个滤波输出值的周期可以减少到 8 个。串行设计时每个周期只进行一次乘…...

Spring Boot 整合 Shiro(后端)

1 Shiro 什么是 Shiro 官网&#xff1a; http://shiro.apache.org/ 是一款主流的 Java 安全框架&#xff0c;不依赖任何容器&#xff0c;可以运行在 Java SE 和 Java EE 项目中&#xff0c;它的主要作用是对访问系统的用户进行身份认证、 授权、会话管理、加密等操作。 …...

面试中的自我介绍:首印象决定一切

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

深入理解联邦学习——联邦学习的价值

分类目录&#xff1a;《深入理解联邦学习》总目录 毫无疑问&#xff0c;如今我们正经历互联网第四次信息革命&#xff0c;坐拥海量的信息与数据。这些数据如果能够用AI的方式进行解读&#xff0c;将会为人类日常生活带来颠覆性变革。联邦学习作为未来AI发展的底层技术&#xff…...

linux 内存一致性

linux 出现内存一致性的场景 1、编译器优化 &#xff0c;代码上下没有关联的时候&#xff0c;因为编译优化&#xff0c;会有执行执行顺序不一致的问题&#xff08;多核单核都会出现&#xff09; 2、多核cpu乱序执行&#xff0c;cpu的乱序执行导致内存不一致&#xff08;多核出…...

Vue 如何监听 localstorage的变化

需求 分析 1. 初始想法 computed: {lonlat(){console.log(localStorage.getItem(lonlat))return localStorage.getItem(lonlat)}},watch: {lonlat(newVal,oldVal){console.log(1002,newVal,oldVal)}},我们想着用 计算属性 computed 和 watch 监听实现&#xff0c;但根本没有…...

ActiveMQ使用JDBC持久化消息

为了避免服务器宕机而导致消息丢失&#xff0c;ActiveMQ提供消息持久化机制。 ActiveMQ提供多种消息持久化的方式&#xff0c;如LevelDB Store、KahaDB 、AMQ、JDBC等&#xff0c;详情可以访问官网。 ActiveMQ默认是使用KahaDB持久化消息。在/conf/activemq.xml如下配置&…...

光环云出席Enjoy出海AIGC主题研讨会,助力企业迎接AI时代机遇与挑战

AIGC的崛起&#xff0c;为2023年的全球化突围之路拓展了想象空间。 从年初至今&#xff0c;OpenAI和ChatGPT高举高打&#xff0c;很大程度上起到了教育市场的作用&#xff1b;此外&#xff0c;Meta推出大模型&#xff0c;Snapchat、Soul、字节等大厂或上线或内测聊天机器人&…...

动态规划:路径和子数组问题(C++)

动态规划&#xff1a;路径和子数组问题 路径问题1.不同路径&#xff08;中等&#xff09;2.不同路径II&#xff08;中等&#xff09;3.下降路径最⼩和&#xff08;中等&#xff09;4.地下城游戏&#xff08;困难&#xff09; 子数组问题1.最大子数组和&#xff08;中等&#xf…...

微服务-gateway跨域配置

文章目录 一、前言二、gateway跨域配置1、问题描述1.1、什么是跨域请求&#xff1f;1.1.1、同源策略1.1.2. 安全性考虑1.1.3. 跨域攻击 1.2、问题产生原因 2、解决方法2.1、修改配置文件2.2、配置类统一配置2.3、全局跨域拦截器 三、总结 一、前言 在SpringCloud项目中&#x…...

爬虫项目(二):中国大学排名

《Python网络爬虫入门到实战》京东购买地址&#xff0c;这里讲解了大量的基础知识和实战&#xff0c;由本人编著&#xff1a;https://item.jd.com/14049708.html配套代码仓库地址&#xff1a;https://github.com/sfvsfv/Crawer文章目录 分析第一步&#xff1a;获取源码分析第一…...

十二、MySQL(DQL)分组/排序/分页查询如何实现?

总括 select 字段列表 from 表名 [where 条件] (group by)/(order by)/(limit) 分组字段名 分组查询 1、分组查询 &#xff08;1&#xff09;基础语法&#xff1a; select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组之后的过滤条件] &#xff08;…...

设计模式概念学习

创建类型 单例模式 饿汉 构建时就创建 懒汉 单线程-访问到的时候才创建多线程-低效率 做法&#xff1a;加锁->若未创建则创建->获取资源->解锁 缺点&#xff1a;效率低&#xff0c;每次访问之前都要加锁&#xff0c;资源创建之后不能被同时被多个线程访问多线程-…...

Spring MVC 五 - DispatcherServlet初始化过程(续)

今天的内容是SpringMVC的初始化过程&#xff0c;其实也就是DispatcherServilet的初始化过程。 Special Bean Types DispatcherServlet委托如下一些特殊的bean来处理请求、并渲染正确的返回。这些特殊的bean是Spring MVC框架管理的bean、按照Spring框架的约定处理相关请求&…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...