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

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.lryc.cn/news/510424.html

相关文章:

  • 前端
  • 【Git】—— 使用git操作远程仓库(gitee)
  • Paddler负载均衡器
  • OSCP - Proving Grounds - Slort
  • YoloV9改进策略:Head改进|DynamicHead,利用注意力机制统一目标检测头部|即插即用
  • BFD综合详细实验配置案例
  • 自然语言处理与知识图谱的融合与应用
  • c# RSA加解密工具,.netRSA加解密工具
  • Metricbeat安装教程——Linux——Metricbeat监控ES集群
  • 一万多字拆解java中——“ 注解 ”的一切(三)(已完结)
  • 记一次rac故障原因分析(虚拟化平台)
  • Vue CLI 3 项目构建
  • 1114 Family Property (25)
  • 详细介绍Sd-WebUI提示词的语法规则
  • document.body为null问题
  • 2024国赛A问题5
  • Kalilinux下MySQL的安装
  • 文件路径与Resource接口详解
  • 极狐GitLab 17.7正式发布,可从 GitLab 丝滑迁移至极狐GitLab【二】
  • 分布式光纤传感|分布式光纤测温|线型光纤感温火灾探测器DTS|DTS|DAS|BOTDA的行业16年的总结【2024年】
  • 存储过程实现多个分类不同计算规则得到对应的分类、月份和款号
  • aj-report本地前后端分离部署运行
  • CSS 过渡动画效果
  • 网络安全 - DOS
  • 【强化学习】Stable-Baselines3学习笔记
  • 前端真实面试题自用
  • vue3和springboot使用websocket通信
  • JS 解构、数组扩展符和模板字符串的常见用法
  • 低代码开源项目Joget的研究——Joget7社区版安装部署
  • Golang 为什么没有注解?