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的学习还是比较方便、比较简单的,十分适合用于上位机的开发和应用。
相关文章:
QT上位机开发(数据库sqlite编程)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 编写软件的时候,如果用户的数据比较少,那么用json保存是非常方便的。但是一旦数据量大了之后,建议还是用数据库…...
在ARMv8中aarch64与aarch32切换
需求描述 在项目调试过程中,由于内存或磁盘空间不足需要将系统从aarch64切换到aarch32的运行状态去执行,接下来记录cortexA53的调试过程。 相关寄存器描述 ARM64: SPSR_EL3 N (Negative):表示运算结果的最高位,用于指示运算结果是否为负数。 Z (Zero):表示运算结果是否…...
拧巴的 tcp
本来想说说 tcp fastopen(tfo),但没什么意义,看 rfc7413 好了,还是 tcp 的惯常套路,引入一个新特性,解决了某个问题,带来一些新问题,然后就是各种 tradeoff,哪里适用哪里不适用。久而…...
java servlet 学生管理系统myeclipse开发oracle数据库BS模式java编程网
一、源码特点 java servlet 学生管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助servletbeandao (mvc模式开发),系统具有完整的源代码和数据库,开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Oracle 10g…...
使用buildx构建多架构镜像
使用buildx构建多架构镜像 1. 前置条件 docker 19.03以上版本 ubuntu 22.04 2. 安装相关组件 2.1 安装docker sudo apt-get updatesudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-commoncurl -fsSL https://mirrors.…...
Crow:run的流程4 准备接收http请求
完成tcp的accept后,下一步需要接收tcp的数据,同时完成http的分析 class Connection { public:void start(){adaptor_.start([this](const asio::error_code& ec) {if (!ec){start_deadline();parser_.clear();do_read();}else{CROW_LOG_ERROR << "Could not …...
Springboot集成RabbitMq一
0、知识点 1、创建项目-生产者 默认官方start.spring.io已不支持自动生成低版本jkd的Spring项目,自定义用阿里云的starter即可:https://start.aliyun.com 2、创建配置类 package com.wym.rabbitmqprovider.utils;import org.springframework.amqp.core.…...
零知识证明(zk-SNARK)- groth16(一)
全称为 Zero-Knowledge Succinct Non-Interactive Argument of Knowledge,简洁非交互式零知识证明,简洁性使得运行该协议时,即便 statement 非常大,它的 proof 大小也仅有几百个bytes,并且验证一个 proof 的时间可以达…...
Spring java和go并发的实现策略
Spring Java框架和Go框架在处理并发请求时采用了不同的策略。 1. Spring Java框架: Spring框架基于Java语言,通常使用线程池来处理并发请求。具体来说,Spring框架中的Servlet容器(如Tomcat、Jetty等)会使用线程池来管…...
第二十五章 JDBC 和数据库连接池
一、JDBC 概述(P821) 1. 基本介绍 (1)JDBC 为访问不同的数据库提供了统一的接口,为使用者屏蔽了细节问题。 (2)Java 程序员使用 JDBC,可以连接任何提供了 JDBC 驱动程序的数据库系统…...
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的固定帧率(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的固定帧率(C) Baumer工业相机Baumer工业相机的固定帧率功能的技术背景CameraExplorer如何查看相机固定帧率功能在NEOAPI SDK里通过函数设置相机固定帧率 Baumer工业相机通过NEOAPI SDK设置相机固定…...
基于Java课堂签到系统
基于Java课堂签到系统 功能需求 1、用户登录:学生需要使用学号或手机号等唯一标识登录系统。 2、签到功能:在课堂开始时,学生可以通过系统进行签到,以证明出席。 3、签出功能:在课堂结束时,学生可以通过…...
springboot整合webservice使用总结
因为做的项目中用到了webservice,所以在此总结一下。 一、webservice简介 Web Service也叫XML Web Service, WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是通过SOAP在Web上提供的软件服务,使…...
MySQL中的索引之分类,原理,作用,优缺点和执行计划
索引 索引的作用:加速查找 例如: 300w条数据的表中查询,无索引需要700s, 利用索引可能只需要1s用索引的时机是,数据量巨大,并且搜索快速 索引为什么能实现加速查找 基于索引的内部存储结构索引底层基于 BTree 的数据结构存储的在…...
如何做好档案数字化前的鉴定工作
要做好档案数字化前的鉴定工作,可以按照以下步骤进行: 1. 确定鉴定目标:明确要鉴定的档案的内容、数量和性质,确定鉴定的范围和目标。 2. 进行档案清点:对档案进行全面清点和登记,包括数量、种类、状况等信…...
pytorch04:网络模型创建
目录 一、模型创建过程1.1 以LeNet网络为例1.2 LeNet结构1.3 nn.Module 二、网络层容器(Containers)2.1 nn.Sequential2.1.1 常规方法实现2.1.2 OrderedDict方法实现 2.2 nn.ModuleList2.3 nn.ModuleDict2.4 三种容器构建总结 三、AlexNet网络构建 一、模型创建过程 1.1 以LeNe…...
用js让用户输入一个数累加和
需求:用户输入一个数, 计算 1 到这个数的和。 比如 用户输入的是 5, 则计算 1~5 之间的累加和 并且输出到控制台 <body><script>let numprompt(请输入一个数)let sum0for(let i1;i<num;i){sumi}console.log(sum)</script…...
踩坑记录-安装nuxt3报错:Error: Failed to download template from registry: fetch failed;
报错复现 安装nuxt3报错:Error: Failed to download template from registry: fetch failednpx nuxi init nuxt-demo 初始化nuxt 项目 报错 Error: Failed to download template from registry: fetch faile 解决方法 配置hosts Mac电脑:/etc/hostswin电…...
大数据学习(31)-Spark非常用及重要特性
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
【教学类-43-14】 20240103 (4宫格数独:正确版:576套) 不重复的基础模板数量:576套
作品展示::——4宫格 576套不重复模板(48页*12套题) 背景需求: 生成4宫格基础模板768套,观看64页内容时,明显看到有错误 【教学类-43-13】 20240103 (4宫格数独:错误版…...
如何快速掌握Avogadro 2:开源分子可视化工具的终极指南
如何快速掌握Avogadro 2:开源分子可视化工具的终极指南 【免费下载链接】avogadrolibs Avogadro libraries provide 3D rendering, visualization, analysis and data processing useful in computational chemistry, molecular modeling, bioinformatics, material…...
DAB的TPS控制闭环到底怎么调?从开环公式到稳定PI调节的实战心得
DAB的TPS控制闭环调试实战:从开环公式到稳定PI调节 调试双有源桥(DAB)变换器的三重移相(TPS)控制闭环,就像在高速公路上同时操控三辆并排行驶的赛车——任何一个小失误都可能导致系统失控。本文将带您深入理…...
解决ClaudeCode频繁封号与Token不足问题转向稳定聚合平台
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 解决ClaudeCode频繁封号与Token不足问题转向稳定聚合平台 对于依赖Claude Code进行编程辅助的开发者而言,服务中断和资…...
OmenSuperHub:彻底释放惠普OMEN游戏本性能的终极开源解决方案
OmenSuperHub:彻底释放惠普OMEN游戏本性能的终极开源解决方案 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为惠普OMEN游戏本官方软件臃…...
基于Javaweb的医院在线挂号系统(10007)
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...
深度探索JD-GUI:Java字节码逆向工程与代码解析实战剖析
深度探索JD-GUI:Java字节码逆向工程与代码解析实战剖析 【免费下载链接】jd-gui A standalone Java Decompiler GUI 项目地址: https://gitcode.com/gh_mirrors/jd/jd-gui 在Java开发与逆向工程领域,Java反编译、字节码分析、代码逆向已成为开发者…...
5个简单步骤:在Windows电脑上直接安装Android应用的终极指南
5个简单步骤:在Windows电脑上直接安装Android应用的终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了在Windows电脑上使用Android模拟器…...
FABRK全栈框架:模块化设计与AI辅助开发实战解析
1. 项目概述:一个为AI时代而生的全栈开发框架如果你和我一样,在过去几年里反复搭建过各种SaaS应用、管理后台或者数据看板,你一定会对那种重复劳动感到厌倦。每次新项目启动,都要重新配置身份验证、集成支付、设计仪表盘组件、处理…...
凰标:让草根创作不再被资本随意定义@凤凰标志
——一场属于民间的反垄断革命当代文娱行业最大的不公,从来不是草根缺乏创作能力,而是资本垄断了全部的定义权与话语权。 长期以来,从作品好坏、内容价值、审美取向到行业前途,所有评判标准皆由资本制定、流量数据裁定。无数底层创…...
构建离线优先应用终极指南:Material Components Web 与 Service Worker 完美集成
构建离线优先应用终极指南:Material Components Web 与 Service Worker 完美集成 【免费下载链接】material-components-web Modular and customizable Material Design UI components for the web 项目地址: https://gitcode.com/gh_mirrors/ma/material-compone…...
