QT上位机开发(数据库sqlite编程)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        编写软件的时候,如果用户的数据比较少,那么用json保存是非常方便的。但是一旦数据量大了之后,建议还是用数据库来进行管理比较好。数据库在增、删、改、查这方面还是比较好用的。目前,有一种小型的开源数据库sqlite,特别适合大家来使用。它是嵌入在软件程序里面的。和mysql不一样,mysql是单独一个数据库服务器。

1、qt对sqlite的支持

        本身qt可以直接访问sqlite数据库,引用头文件的时候,直接输入QtSql即可,如下所示,

#include <QtSql/QtSql>

2、链接时的注意事项

        默认,qt是没有把QtSql的lib放入到链接库当中的,所以这部分需要自己手动来完成,如下所示,

3、测试方法

        首先我们可以创建一个简单的qt widget工程。在界面部分不需要再做任何的修改,所以也就不需要designer的参与。代码部分呢,可以编写一个loadDB的类函数。在这个类函数里面,为了测试sqlite的功能,我们可以做一些增、删、改、查的操作,如果所有的操作都是ok的,那就代表测试代码是正确的、没问题的。

4、loadDB函数的编写

        测试的过程基本是这样的。首先,利用QSqlDatabase创建一个data.db的数据库。有了这个数据库之后,打开数据库。接下来用QSqlQuery进行第一个操作,就是创建一张mytable的表。有了表之后,我们就可以插入数据、查询数据、更改数据、查询数据、删除数据、查询数据,总共是6个动作。所有动作都做完毕之后,就可以关闭数据库了。在数据库操作的过程当中,还可以通过qDebug打印的办法来判断操作是否正确。qDebug打印的地方就在输出窗口里面,如下所示,

        整个测试的源代码是这样的,

int QtWidgetsApplication::loadDB()
{// create databaseQSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("data.db");// open databaseif (!db.open()) {qDebug() << "Error: Unable to open database";return 1;}// execute queryQSqlQuery query;// create a tableif (!query.exec("CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY, name TEXT)")) {qDebug() << "Error: Unable to create table";return 1;}// insert dataif (!query.exec("INSERT INTO mytable (name) VALUES ('John Doe')")) {qDebug() << "Error: Unable to insert data";return 1;}// query dataif (query.exec("SELECT * FROM mytable")) {qDebug() << "Records in mytable:";while (query.next()) {int id = query.value(0).toInt();QString name = query.value(1).toString();qDebug() << "ID:" << id << "Name:" << name;}}else {qDebug() << "Error: Unable to fetch data";return 1;}// update dataif (!query.exec("UPDATE mytable SET name='Jane Doe' WHERE id=1")) {qDebug() << "Error: Unable to update data";return 1;}// query data after updateif (query.exec("SELECT * FROM mytable")) {qDebug() << "Records in mytable after update:";while (query.next()) {int id = query.value(0).toInt();QString name = query.value(1).toString();qDebug() << "ID:" << id << "Name:" << name;}}else {qDebug() << "Error: Unable to fetch data";return 1;}// delete dataif (!query.exec("DELETE FROM mytable WHERE id=1")) {qDebug() << "Error: Unable to delete data";return 1;}// query after deleteif (query.exec("SELECT * FROM mytable")) {qDebug() << "Records in mytable after delete:";while (query.next()) {int id = query.value(0).toInt();QString name = query.value(1).toString();qDebug() << "ID:" << id << "Name:" << name;}}else {qDebug() << "Error: Unable to fetch data";return 1;}// close connection of databasedb.close();
}

        有兴趣的同学可以按照这个流程完整地走一遍。这样就可以在后面的项目中灵活使用sqlite了。一般项目中,使用到的业务要复杂一点,也有可能不止一张表,但是对数据库操作的逻辑都是这样的,没有什么区别。整体来说,sqlite的学习还是比较方便、比较简单的,十分适合用于上位机的开发和应用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Minio集群部署(docker版本)

先在/etc/hosts中添加虚拟域名 {ip} minio1 {ip} minio2 执行docker命令 docker run -it -d --name minio-01 --restartalways --nethost \ -e "MINIO_ROOT_USER{用户名}" \ -e "MINIO_ROOT_PASSWORD{密码}" \ -v /data/docker/minio/update:/data1 #…

三种方式在ASP.NET Core中实现代理功能请求获取数据的接口(以请求百度统计数据接口为例)

一、定义请求数据属性 TargetUrl参数是目标接口的URL&#xff0c;RequestDataArray参数是要发送的请求数据列表 //定义属性:TargetUrl参数是目标接口的URL&#xff0c;RequestDataArray参数是要发送的请求数据列表public class ToResponseBody{[JsonPropertyName("Target…

智能化校园:深入探讨云端管理系统设计与实现(二)

系列文章目录 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;一&#xff09; 文章目录 系列文章目录功能开发登录功能分析验证码功能实现登录校验功能登录后跳转功能 系统管理器实现验证码响应图片功能实现异步图片上传头像功能实现全局修改密码功能实现 …

YOLOv8改进 | 主干篇 | CSWinTransformer交叉形窗口网络

一、本文介绍 本文给大家带来的改进机制是CSWin Transformer,其基于Transformer架构,创新性地引入了交叉形窗口自注意力机制,用于有效地并行处理图像的水平和垂直条带,形成交叉形窗口以提高计算效率。它还提出了局部增强位置编码(LePE),更好地处理局部位置信息,我将其…

HarmonyOS创建自定义组件

创建自定义组件 在ArkUI中&#xff0c;UI显示的内容均为组件&#xff0c;由框架直接提供的称为系统组件&#xff0c;由开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常不是简单的将系统组件进行组合使用&#xff0c;而是需要考虑代码可复用性、业务逻辑与U…

HttpClient库与代理IP在爬虫程序中的应用

目录 前言 一、HttpClient库的基本使用方法 二、代理IP的使用方法 三、代理IP池的使用方法 四、总结 前言 在编写爬虫程序时&#xff0c;我们经常会使用HttpClient库来发送HTTP请求&#xff0c;获取网页内容。然而&#xff0c;有些网站可能会对频繁的请求进行限制&#x…

linux c++ ffmpeg rtsp推流报错 rtsp://localhost:8554/Live: Protocol not found

根据报错内容rtsp://localhost:8554/Live: Protocol not found 意思是没有找到对应协议&#xff0c;添加以下红色字体指令解决&#xff0c; std::string rtsp_server_url "rtsp://localhost:8554/live"; std::stringstream command; command << "ffmpe…

前端工程化回顾-vite 构建神器

1.构建vite 项目 pnpm create vite2.常用的配置&#xff1a; 1.公共资源路径配置&#xff1a; base: ./, 默认是/2.路径别名配置&#xff1a; resolve: {alias: {: path.resolve(__dirname, ./src),ass: path.resolve(__dirname, ./src/assets),comp: path.resolve(__dirnam…

关于Django静态文件路径设置规则的精炼总结

01-当Django处于DEBUG模式时&#xff0c;其与静态资源有关的三句设置语句才有作用&#xff0c;当没有处于DEBUG模式时&#xff0c;与静态资源有关的三句设置语句没有作用。与静态资源有关的三句设置语句如下&#xff1a; STATICFILES_DIRS [os.path.join(BASE_DIR, static_li…

uni-app中实现元素拖动

uni-app中实现元素拖动 1、代码示例 <template><movable-area class"music-layout"><movable-view class"img-layout" :x"x" :y"y" direction"all"><img :src"musicDetail.bgUrl" :class&…

springboot+redisTemplate多库操作

单库操作 我做了依赖管理&#xff0c;所以就不写版本号了添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>配置文件 spring:redis:database: 2…

Git 概念与基础命令

Git 是一个版本控制系统&#xff0c;用于记录文件或代码的修改历史&#xff0c;并且可以通过多个分支进行协作开发。 Git 的基本概念包括&#xff1a; 仓库&#xff08;Repository&#xff09;&#xff1a;包含所有文件和历史记录的地方&#xff0c;可以在本地或远程服务器上存…

勒索检测能力升级,亚信安全发布《勒索家族和勒索事件监控报告》

评论员简评 近期(12.08-12.14)共发生勒索事件119起&#xff0c;相较之前呈现持平趋势。 与上周相比&#xff0c;本周仍然流行的勒索家族为lockbit3和8base。在涉及的勒索家族中&#xff0c;活跃程度Top5的勒索家族分别是&#xff1a;lockbit3、siegedsec、dragonforce、8base和…

确保数据安全性与系统稳定性:在Spring Boot中实现API幂等性的完整指南

当在Spring Boot中构建应用程序时&#xff0c;处理重复提交和确保幂等性是至关重要的。幂等性的概念是指无论客户端发送的请求次数&#xff0c;系统状态都保持一致。在API设计中实现幂等性可以防止重复操作&#xff0c;避免意外的数据修改或损坏。 实现幂等性保护API 在开发W…

MatrixOne 1.1.0 Release

我们非常高兴地宣布&#xff1a; MatrixOne内核1.1.0版本 正式发布啦&#xff01; 项目文档网站 https://docs.matrixorigin.cn MatrixOne是一款分布式超融合异构数据库&#xff0c;MatrixOne旨在提供一个云原生、高性能、高弹性、高度兼容MySQL的HSTAP数据库&#xff0c;让…

Oracle database 12cRAC异地恢复至单机

环境 rac 环境 byoradbrac Oracle12.1.0.2 系统版本&#xff1a;Red Hat Enterprise Linux Server release 6.5 软件版本&#xff1a;Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit byoradb1&#xff1a;172.17.38.44 byoradb2&#xff1a;172.17.38.4…

基于遗传算法的格栅路径优化,遗传算法的基本原理

目录 背影 遗传算法的原理及步骤 基本定义 编码方式 适应度函数 运算过程 代码 结果分析 完整代码下载: https://download.csdn.net/download/abc991835105/88691336 背影 基于遗传算法的格栅路径优化,求解运算量大,一般都无法用直接求解,本文用遗传算法进行求解,遗传算…

NCC开发记录

YonBuilder for NCC 是一个带插件的eclipse工具&#xff0c;跟eclipse没什么区别 NC Cloud2021.11版本开发环境搭建改动 https://nccdev.yonyou.com/article/detail/495 不管是NC Cloud 新手还是老NC开发&#xff0c;在开发NC Cloud时开发环境搭建必看&#xff01;&#xff…

工具篇--Spring-Cloud--feign 通过feign 接口完成文件的下载

文章目录 前言一、feign接口获取文件流程&#xff1a;二、文件获取实现2.1 引入jar&#xff1a;2.2 实现&#xff1a; 总结 前言 通常在spring-boot 项目中&#xff0c;对于文件的下载都是直接调用到对应的服务中&#xff0c;而不是通过feign 接口获取文件&#xff1b;有时我们…

使用 Process Explorer 和 Windbg 排查软件线程堵塞案例分享

目录 1、问题说明 2、线程堵塞的可能原因分析 3、使用Windbg和Process Explorer确定线程中发生了死循环 4、根据Windbg中显示的函数调用堆栈去查看源码&#xff0c;找到问题 4.1、在Windbg定位发生死循环的函数的方法 4.2、在Windbg中查看变量的值去辅助分析 4.3、是循环…