QT调用Sqlite数据库

QT设计UI界面,后台访问数据库,实现数据库数据的增删改查。

零售商店系统
数据库表:

分别是顾客表,订单详情表,订单表,商品表
表内字段详情如下:

 

 
在QT的Pro文件中添加sql,然后添加头文件
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>

在代码中使用两个函数,初始化数据库函数,和创建订单函数

初始化数据库代码如下:


void mySql::initDataBase()
{//打开数据库db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("D://DB//server.db");//打开数据库if (db.open()){qDebug() << "Database opened successfully!";}else{qDebug() << "无法打开数据库:" << db.lastError().text();}
}

 添加订单代码函数如下
 

void mySql::addOrders(const QString& name,const QString& commodityName, int byQuality)
{if (!db.transaction()) {qDebug() << "Cannot start transaction:" << db.lastError();return;}QSqlQuery query;// 插入订单query.prepare("INSERT INTO Orders ('顾客ID', '订单日期', '总金额')\SELECT Customers.ID, CURRENT_DATE, 0\FROM Customers\WHERE Customers.姓名 = :name;");query.bindValue(":name",name);if (!query.exec()) {qDebug() << "Insert into Orders failed:" << query.lastError();db.rollback();return;}// 插入订单详表query.prepare("INSERT INTO OrderItems ('订单ID', '商品ID', '商品数量', '单价')\VALUES (\LAST_INSERT_ROWID( ),\( SELECT Products.ID FROM Products WHERE Products.商品名 = :commodity ),\10,\( SELECT Products.价格 FROM Products WHERE Products.商品名 = :commodity ));");query.bindValue(":commodity",commodityName);if (!query.exec()) {qDebug() << "Insert into OrderItems failed:" << query.lastError();db.rollback();return;}query.prepare("UPDATE orders\SET 总金额 = (\SELECT\sum( 单价 * 商品数量 )\FROM\orderitems\WHERE\orderitems.订单id = LAST_INSERT_ROWID() )\WHERE\orders.id = LAST_INSERT_ROWID();");if (!query.exec()) {qDebug() << "Update Order TotalAmount failed:" << query.lastError();db.rollback();return;}// 更新产品库存量query.prepare("UPDATE Products\SET 库存量 = 库存量 - :byQuantity\WHERE\Products.商品名 = :commodity;");query.bindValue(":byQuantity",byQuality);query.bindValue(":commodity",commodityName);if (!query.exec()) {qDebug() << "Update Product stock failed:" << query.lastError();db.rollback();return;}// 提交事务if (!db.commit()) {qDebug() << "Transaction commit failed:" << db.lastError();} else {qDebug() << "Purchase successful.";}
}

这里的SQL语句在🔗SQL语句练习-3-CSDN博客 可查阅。

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

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

相关文章

vue3使用vant日历组件(calendar),自定义日历下标的两种方法

在vue3中使用vant日历组件&#xff08;calendar&#xff09;自定义下标的两种方法&#xff0c;推荐使用第二种&#xff1a; 日期下方加小圆点&#xff1a; 一、使用伪元素样式实现(::after伪元素小圆点样式会被覆盖&#xff0c;只能添加一个小圆点) 代码如下&#xff08;示例…

STM32学习之 按键/光敏电阻 控制 LED/蜂鸣器

STM32学习之 按键/光敏电阻 控制 LED/蜂鸣器 1、按键控制 LED 按键:常见的输入设备&#xff0c;按下导通&#xff0c;松手断开 按键抖动:由子按键内部使用的是机械式弹簧片来进行通断的、所以在按下和松手的瞬间会伴随有一连串的抖动 按键控制LED接线图&#xff1a; 要有工程…

2024金融大模型实践方案的概览(附实践资料合集)

金融大模型实践方案的全面总结&#xff1a; 金融大模型应用评测&#xff1a; 在金融评测的五大能力维度中&#xff0c;各模型整体表现基本满足当下场景需求&#xff0c;其中金融安全与价值对齐表现优异&#xff0c;但金融专业认知和多模态处理能力仍存在较大提升空间。 金融大模…

设计模式之享元模式:看19路棋盘如何做到一子千面

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 一、享元模式概述 \quad 在软件设计中&#xff0c;享元模式(Flyweight Pattern)的核心思想是通过共享来有效地支持大量细粒度对象的重用。这里的…

英语单词拼读小程序开发制作介绍

英语单词拼读小程序开发制作介绍本英语单词拼读小程序系统开发的主要功能有&#xff1a; 1、按年级分类展示每个年级阶段的英语单词信息。 2、点击选择的单词进入单词拼读页面&#xff0c;展示英语单词的拼读音标、中文意思、单词发音、拆分词汇发音、用户通过朗读发音对比。通…

华为管理变革之道:管理制度创新

目录 华为崛起两大因素&#xff1a;管理制度创新和组织文化。 管理是科学&#xff0c;150年来管理史上最伟大的创新是流程 为什么要变革&#xff1f; 向世界标杆学习&#xff0c;是变革第一方法论 体系之一&#xff1a;华为的DSTE战略管理体系&#xff08;解决&#xff1a…

使用 Python 操作 MySQL 数据库的实用工具类:MySQLHandler

操作数据库是非常常见的需求&#xff0c;使用 Python 和 pymysql 库封装一个通用的 MySQL 数据库操作工具类&#xff0c;并通过示例演示如何使用这个工具类高效地管理数据库。 工具类的核心代码解析 MySQLHandler 类简介 MySQLHandler 是一个 Python 类&#xff0c;用于简化…

高精度问题

目录 算法实现基础 高精度加法AB 测试链接 源代码 代码重点 高精度减法A-B 测试链接 源代码 代码重点 高精度乘法A*b和A*B 测试链接 源代码 代码重点 高精度除法A/b和A/B 测试链接 源代码 代码重点 高精度求和差积商余 算法实现基础 本算法调用STL…

基于Spring Boot的中国戏曲文化传播系统

一、系统背景与意义 中国戏曲作为中华民族的文化瑰宝&#xff0c;具有深厚的历史底蕴和艺术价值。然而&#xff0c;随着现代生活节奏的加快和娱乐方式的多样化&#xff0c;传统戏曲文化的传播和普及面临诸多挑战。因此&#xff0c;开发一个基于Spring Boot的中国戏曲文化传播系…

GitLab安装及使用

目录 一、安装 1.创建一个目录用来放rpm包 2.检查防火墙状态 3.安装下载好的rpm包 4.修改配置文件 5.重新加载配置 6.查看版本 7.查看服务器状态 8.重启服务器 9.输网址 二、GitLab的使用 1.创建空白项目 2.配置ssh 首先生成公钥&#xff1a; 查看公钥 把上面的…

14-zookeeper环境搭建

0、环境 java&#xff1a;1.8zookeeper&#xff1a;3.5.6 1、下载 zookeeper下载点击这里。 2、安装 下载完成后解压&#xff0c;放到你想放的目录里。先看一下zookeeper的目录结构&#xff0c;如下图&#xff1a; 进入conf目录&#xff0c;复制zoo_sample.cfg&#xff0…

springcloud依赖

springcloud 父依赖版本管理&#xff1a; 在父亲工程添加依赖管理之后&#xff0c;在子工程则不用指定版本&#xff0c;可以很好的避免版本冲突。 <properties><spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version><spring-cloud.ve…

C++---------动态内存管理

以下是对 C 中相关概念的详细说明及代码示例&#xff1a; 一、动态分配和堆 new 操作符&#xff1a; new 操作符用于在堆上动态分配内存。它会调用对象的构造函数&#xff08;如果是类对象&#xff09;并返回指向分配内存的指针。示例&#xff1a; #include <iostream&g…

.NET Framework 逐渐过时,.NET 8和 .NET 9引领未来

随着科技的不断进步&#xff0c;软件开发的工具和技术也在不断更新换代。.NET Framework&#xff0c;曾是微软的旗舰开发平台&#xff0c;曾经在软件开发领域占据了主导地位。然而&#xff0c;随着技术的演变和开发需求的变化&#xff0c;.NET Framework逐渐显得力不从心&#…

R语言数据分析案例46-不同区域教育情况回归分析和探索

一、研究背景 教育是社会发展的基石&#xff0c;对国家和地区的经济、文化以及社会进步起着至关重要的作用。在全球一体化进程加速的今天&#xff0c;不同区域的教育发展水平呈现出多样化的态势。这种差异不仅体现在教育资源的分配上&#xff0c;还表现在教育成果、教育投入与…

单机和微服务的区别,微服务有什么问题?数据一致性问题怎么解决?幂等问题怎么解决?

单机和微服务的区别&#xff0c;微服务有什么问题&#xff1f;数据一致性问题怎么解决&#xff1f;幂等问题怎么解决&#xff1f; 单机架构和微服务架构在设计理念、部署和扩展性上有显著区别。 单机架构 vs 微服务架构 单机架构 定义&#xff1a;所有组件&#xff08;前端…

基于springboot+vue实现的卷烟营销统计分析系统 (源码+L文+ppt)4-129

摘 要 卷烟行业的快速发展使得卷烟营销统计分析系统成为了一个必不可少的工具。基于Java的卷烟营销统计分析系统旨在提供高效、准确和便捷的适用卷烟营销服务。本文讲述了基于java语言开发&#xff0c;后台数据库选择MySQL进行数据的存储。该软件的主要功能是进行卷烟营销统计…

使用Docker部署一个Node.js项目

本文档将介绍如何使用Docker来部署一个Node.js项目。Docker是一种开源平台&#xff0c;可以自动化应用程序的部署、扩展和管理。通过Docker&#xff0c;我们可以将应用程序及其依赖项打包到一个容器中&#xff0c;从而确保在不同环境中运行的一致性。接下来&#xff0c;我们将逐…

mac启ssh服务用于快速文件传输

x.1 在mac上启SSH服务 方法一&#xff1a;图形交互界面启ssh&#xff08;推荐&#xff09; 通过sharing - advanced - remote login来启动ssh&#xff1b;&#xff08;中文版mac应该是 “系统设置 → 通用 → 共享”里打开“远程登录”来启动&#xff09; 查看自己的用户名和…

青蛇人工智能学家

青蛇人工智能学家 青蛇&#xff0c;是蓝星上&#xff0c;最出名的人工智能学家。 在蓝星上&#xff0c;大家都知道&#xff0c;青蛇人工智能学家&#xff0c;最大的爱好&#xff0c;是美食。 青蛇人工智能学家&#xff0c;对自己的食物&#xff0c;非常在意&#xff0c;对自己的…