QT简易项目 数据库可视化界面 数据库编程SQLITE QT5.12.3环境 C++实现
案例需求:
完成数据库插入,删除,修改,查看操作。
分为 插入,删除,修改,查看,查询 几个模块。
代码:

widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
#include <QSqlError>
#include <QDateTime>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = nullptr);~Widget();void display();private slots:void on_insert_button_clicked();void on_delete_button_clicked();void on_update_button_clicked();void on_query_button_clicked();private:Ui::Widget *ui;QSqlDatabase db;QSqlQuery *query;
};#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);this->setWindowTitle("数据库可视化窗口");// 加载数据库的驱动db = QSqlDatabase::addDatabase("QSQLITE");// 设置本地数据库文件db.setDatabaseName("stu.db");// 打开数据库if(db.open()) qDebug()<<"打开成功....";else qDebug()<<"打开失败....";// 向数据库发送sql语句query = new QSqlQuery; // 不可指定父对象if(query->exec("CREATE TABLE IF NOT EXISTS stu_info (id INT PRIMARY KEY,name STRING(32),score DOUBLE)"))qDebug()<<"创建table成功....";else qDebug()<<"创建table失败:"<<query->lastError().text();// 显示display();
}Widget::~Widget()
{delete ui;delete query; // 因为调用时不能指定父对象,所以需要手动释放// 关闭数据库db.close();}
// displlay
void Widget::display(){query->exec(QString("SELECT * FROM stu_info"));while(query->next()){int id = query->value("id").toInt();QString name = query->value("name").toString();double score = query->value("score").toDouble();ui->plainTextEdit->appendPlainText(QString("id : %1 | name : %2 | score : %3").arg(id).arg(name).arg(score));}
}
// insert
void Widget::on_insert_button_clicked(){QDateTime currentDate = QDateTime::currentDateTime();QString dateTimeString = currentDate.toString("yyyy-MM-dd hh:mm:ss");if(ui->num_edit->text() == "" || ui->name_edit->text() == "" || ui->score_edit->text() == ""){qDebug()<<"信息缺失 插入失败:"<<query->lastError().text();ui->plainTextEdit->appendPlainText(QString("%1 信息缺失 插入失败....").arg(dateTimeString));return ;}int num = ui->num_edit->text().toInt();QString name = ui->name_edit->text();double score = ui->score_edit->text().toDouble();if(query->exec(QString("INSERT INTO stu_info VALUES('%1','%2','%3')").arg(num).arg(name).arg(score))){qDebug()<<dateTimeString<<"插入成功....";ui->plainTextEdit->appendPlainText(QString("%1 插入成功....").arg(dateTimeString));display();}else{qDebug()<<"插入失败:"<<query->lastError().text();ui->plainTextEdit->appendPlainText(QString("%1 插入失败....").arg(dateTimeString));}
}
// delete
void Widget::on_delete_button_clicked()
{QDateTime currentDate = QDateTime::currentDateTime();QString dateTimeString = currentDate.toString("yyyy-MM-dd hh:mm:ss");if(ui->num_edit->text() == ""){qDebug()<<dateTimeString<<"学号不存在 删除失败....";ui->plainTextEdit->appendPlainText(QString("%1 学号不存在 删除失败....").arg(dateTimeString));}else if(query->exec(QString("DELETE FROM stu_info WHERE id = %1").arg(ui->num_edit->text().toInt()))){qDebug()<<dateTimeString<<"删除成功....";ui->plainTextEdit->appendPlainText(QString("%1 删除成功....").arg(dateTimeString));display();}else{qDebug()<<"删除失败:"<<query->lastError().text();ui->plainTextEdit->appendPlainText(QString("%1 删除失败....").arg(dateTimeString));}
}
// update
void Widget::on_update_button_clicked()
{QDateTime currentDate = QDateTime::currentDateTime();QString dateTimeString = currentDate.toString("yyyy-MM-dd hh:mm:ss");if(query->exec(QString("UPDATE stu_info SET id = %1, name = '%2', score = %3 WHERE id = %4").arg(ui->num_edit->text().toInt()).arg(ui->name_edit->text()).arg(ui->score_edit->text().toDouble()).arg(ui->num_edit->text().toInt()))){qDebug()<<dateTimeString<<"更新成功....";ui->plainTextEdit->appendPlainText(QString("%1 更新成功....").arg(dateTimeString));display();}else{qDebug()<<"更新失败:"<<query->lastError().text();ui->plainTextEdit->appendPlainText(QString("%1 更新失败....").arg(dateTimeString));}
}
// query
void Widget::on_query_button_clicked()
{//SELECT * FROM stu_info WHERE id = %1QDateTime currentDate = QDateTime::currentDateTime();QString dateTimeString = currentDate.toString("yyyy-MM-dd hh:mm:ss");if(query->exec(QString("SELECT * FROM stu_info WHERE id = %1").arg(ui->num_edit->text().toInt()))){qDebug()<<dateTimeString<<"查询成功....";ui->plainTextEdit->appendPlainText(QString("%1 查询成功....").arg(dateTimeString));// 显示while(query->next()){int id = query->value("id").toInt();QString name = query->value("name").toString();double score = query->value("score").toDouble();ui->plainTextEdit->appendPlainText(QString("id : %1 | name : %2 | score : %3").arg(id).arg(name).arg(score));}}else{qDebug()<<"查询失败:"<<query->lastError().text();ui->plainTextEdit->appendPlainText(QString("%1 查询失败....").arg(dateTimeString));}
}
widget.ui

输出:
初始界面:

插入:



修改:

删除:

查询:

相关文章:
QT简易项目 数据库可视化界面 数据库编程SQLITE QT5.12.3环境 C++实现
案例需求: 完成数据库插入,删除,修改,查看操作。 分为 插入,删除,修改,查看,查询 几个模块。 代码: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget…...
python json.dump()和json.dumps()的区别
用人话总结一下 json.dump()是针对文件的json和python的转换 json.dumps()主要是针对内容数据 json.dumps(obj, skipkeysFalse, ensure_asciiTrue, check_circularTrue, allow_nanTrue, clsNone, indentNone, separatorsNone, encoding“utf-8”, defaultNone, sort_keysFalse…...
网络流学习笔记
注:笔者是蒟蒻,所以本文几乎是干货,枯燥无味甚至可能会引人不适,请读者谨慎阅读。 为了笔者快爆掉的肝点个赞好吗??? Part.1 网络流基础定义 一个有向带权图 G ( V , E ) G(V,E) G(V,E) 是…...
Mybatis PLUS查询对List使用OR模糊查询
Mybatis PLUS查询对List使用OR模糊查询 1、版本2、代码3、效果 1、版本 Mybatis PLUS版本:3.5.7 注意:版本3.1.2及以下是需要return的 因当前为高版本,代码中已将 return 注释。 2、代码 QueryWrapper<Object> queryWrapper new Que…...
Debezium日常分享系列之:Debezium Engine
Debezium日常分享系列之:Debezium Engine 依赖打包项目在代码中输出消息格式消息转换消息转换谓词高级记录使用引擎属性异步引擎属性数据库模式历史属性处理故障 Debezium连接器通常通过部署到Kafka Connect服务来运行,并配置一个或多个连接器来监视上游…...
I.MX6U 裸机开发20. DDR3 内存知识
I.MX6U 裸机开发20. DDR3 内存知识 一、DDR3内存简介1. DDR发展历程SRAMSDRAMDDR1DDR2DDR3DDR4DDR5 2. 开发板资源3. DDR3的时间参数1. 传输速率2. tRCD3. CL 参数作用取值范围工作原理4. tRC参数原理单位与取值5. tRAS重要性及作用 二、I.MX6U MMDC 控制器1. MMDC简介…...
【R安装】VSCODE安装及R语言环境配置
目录 VSCODE下载及安装VSCODE上配置R语言环境参考 Visual Studio Code(简称“VSCode” )是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代Web和云应用的跨平台源代码编辑器&…...
ES更新问题 Failed to close the XContentBuilder异常
问题描述 使用RestHighLevelClient对文档进行局部更新的时候报错如下: Suppressed: java.lang.IllegalStateException: Failed to close the XContentBuilderat org.elasticsearch.common.xcontent.XContentBuilder.close(XContentBuilder.java:1011)at org.elast…...
svn-git下载
windows: svn 客户端:-------------- TortoiseSVN 安装 下载地址:https://tortoisesvn.net/downloads.html, 页面里有语言包补丁的下载链接。 目前最新版为 1.11.0 下载地址: https://osdn.net/projects/tortoisesvn/storage/1.…...
10个Word自动化办公脚本
在日常工作和学习中,我们常常需要处理Word文档(.docx)。 Python提供了强大的库,如python-docx,使我们能够轻松地进行文档创建、编辑和格式化等操作。本文将分享10个使用Python编写的Word自动化脚本,帮助新…...
Paddle Inference部署推理(十八)
十八:Paddle Inference推理 (C)API详解 3. 使用 CPU 进行预测 注意: 在 CPU 型号允许的情况下,进行预测库下载或编译试尽量使用带 AVX 和 MKL 的版本 可以尝试使用 Intel 的 MKLDNN 进行 CPU 预测加速,默…...
Redis开发02:redis.windows-service.conf 默认配置文件解析与注解
文件位置:redis安装目录下的 redis.windows-service.conf ,存放了redis服务的相关配置,下面列举出默认配置的含义: 配置项含义bind 127.0.0.1限制 Redis 只监听本地回环地址,意味着只能从本地连接 Redis。protected-m…...
redis大key和热key
redis中大key、热key 什么是大key大key可能产生的原因大key可能会造成什么影响如何检测大key如何优化删除大key时可能的问题删除大key的策略 热key热key可能导致的问题解决热key的方法 什么是大key 大key通常是指占用内存空间过大或包含大量元素的键值对。 数据量大ÿ…...
Dubbo 最基础的 RPC 应用(使用 ZooKeeper)
看国内的一些项目时 Dubbo 这个词经常闪现,一直也不以为然,未作搜索,当然也不知道它是做什么用的。直到最近阅读关于大型网站架构相关的书中反复提到 Dubbo 后,觉得不能再对它视而不见。Google 了一下,它是在阿里巴巴创…...
科技赋能:企业如何通过新技术提升竞争力的策略与实践
引言 在当今瞬息万变的商业环境中,科技的迅猛发展正在重新定义行业的游戏规则。无论是小型企业还是跨国巨头,都感受到数字化转型的迫切需求。过去,企业竞争力更多依赖于成本控制、资源调配或市场覆盖,而如今,新技术的引…...
从0开始深度学习(33)——循环神经网络的简洁实现
本章使用Pytorch的API实现RNN上的语言模型训练 0 导入库 import torch import torch.nn as nn import torch.nn.functional as F from torch.utils.data import Dataset, DataLoader from collections import Counter import re import math from tqdm import tqdm1 准备数据 …...
【FAQ】HarmonyOS SDK 闭源开放能力 — 公共模块
1.问题描述: 文档哪里能找到所有的权限查看该权限是用户级的还是系统级的。 解决方案: 您好,可以看一下下方链接是否可以解决问题: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/permissions-for-all-V…...
百度 文心一言 vs 阿里 通义千问 哪个好?
背景介绍: 在当前的人工智能领域,随着大模型技术的快速发展,市场上涌现出了众多的大规模语言模型。然而,由于缺乏统一且权威的评估标准,很多关于这些模型能力的文章往往基于主观测试或自行设定的排行榜来评价模型性能…...
内网不出网上线cs
一:本地正向代理目标 如下,本地(10.211.55.2)挂好了基于 reGeorg 的 http 正向代理。代理为: Socks5 10.211.55.2 1080python2 reGeorgSocksProxy.py -l 0.0.0.0 -p 1080 -u http://10.211.55.3:8080/shiro/tunnel.jsp 二:虚拟机配置proxifer 我们是…...
ubuntu22开机自动登陆和开机自动运行google浏览器自动打开网页
一、开机自动登陆 1、打开settings->点击Users 重启系统即可自动登陆桌面 二、开机自动运行google浏览器自动打开网页 1、安装google浏览器 sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i ./google-chrome-stable…...
自动驾驶轨迹预测新思路:VectorNet如何用矢量编码替代传统栅格化方法?
自动驾驶轨迹预测的矢量革命:VectorNet如何重构环境编码范式 在自动驾驶系统的决策闭环中,轨迹预测模块犹如驾驶员的预判能力,其准确性直接关系到行车安全与舒适性。传统基于卷积神经网络(CNN)的预测方法存在一个根本性…...
计算机专业毕业设计题目效率提升指南:从选题到部署的工程化实践
作为一名刚刚完成毕业设计的计算机专业学生,我深刻体会到了从选题到最终部署答辩这一路上的“坑”与“痛”。很多同学和我一样,前期选题纠结,中期开发混乱,后期部署手忙脚乱,最终答辩演示时还可能出现各种意外。为了帮…...
如何3分钟搞定本地语音转文字:TMSpeech终极高效方案
如何3分钟搞定本地语音转文字:TMSpeech终极高效方案 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech 还在为会议记录手忙脚乱?为视频字幕制作头疼不已?TMSpeech——你的本地实时语…...
避坑指南:在ZYNQ上调试PCIe设备时,如何手动验证枚举与BAR空间配置是否正确
ZYNQ平台PCIe设备调试实战:手动验证枚举与BAR配置的工程方法论 当你在ZYNQ平台上调试PCIe设备时,是否遇到过这样的场景:Vivado中精心设计的PCIe链路通过了硬件测试,但系统启动后lspci却看不到设备踪影?或者设备虽然被识…...
中国 AI 大模型应用市场趋势分析报告
中国 AI 大模型应用市场趋势分析报告 报告类型:新兴趋势识别 蓝海机会评估 覆盖市场:中国大陆 数据时效:截至 2026 年 3 月 研究方法:多源数据交叉验证(艾媒咨询、中商情报、36氪研究院、虎嗅、中国工业互联网研究院等…...
OpenClaw浏览器自动化:Qwen3-VL:30B爬取图文数据到Notion
OpenClaw浏览器自动化:Qwen3-VL:30B爬取图文数据到Notion 1. 为什么需要自动化数据收集 上周我需要整理一批行业报告中的关键图表和结论,手动复制粘贴了3个小时后,突然意识到:这种重复性工作正是AI该解决的问题。于是我开始尝试…...
网易云音乐无损音乐下载器:5分钟搞定你的私人音乐库终极方案
网易云音乐无损音乐下载器:5分钟搞定你的私人音乐库终极方案 【免费下载链接】NeteaseCloudMusicFlac 根据网易云音乐的歌单, 下载flac无损音乐到本地.。 项目地址: https://gitcode.com/gh_mirrors/nete/NeteaseCloudMusicFlac 还在为网易云音乐的无损音乐无…...
虚拟控制器驱动技术全解析:从原理到实战优化
虚拟控制器驱动技术全解析:从原理到实战优化 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 虚拟控制器驱动技术是连接物理输入设备与Windows游戏…...
从一份清洗报告,看共享单车数据如何‘说话’:以厦门市为例的出行模式洞察
解码共享单车数据:厦门市民出行行为的商业洞察 清晨7点的厦门街头,一位上班族扫开共享单车,骑行1.2公里到达地铁站;傍晚6点,游客沿着环岛路悠闲骑行3公里欣赏日落。这些看似独立的出行片段,当汇聚成百万量级…...
PROJECT MOGFACE系统重装辅助工具:Win10镜像下载与自动化安装配置
PROJECT MOGFACE系统重装辅助工具:Win10镜像下载与自动化安装配置 每次重装系统,你是不是都觉得头大?找官方镜像怕下到带病毒的,制作启动盘步骤繁琐,安装过程还得守在电脑前点下一步,装完系统还得手动装驱…...
