qt-5数据库使用

2023-05-16

 

文章目录

目录

前言

一、所需要的头文件

二、数据库操作

1.addDatabase的函数原型如下

2.连接数据库

3.创建数据库表

4.插入数据到表中

5.更新表中的数据

总结


 


前言

例如:qt-5 创建数据库,创建表以及对表的操作。


一、所需要的头文件

#include <QSqlDatabase>
#include <QSqlTableModel>
#include <QSqlQuery>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlRecord>

二、数据库操作

1.addDatabase的函数原型如下

[static] QSqlDatabase QSqlDatabase::addDatabase(
				const QString &type, 
				const QString &connectionName = QLatin1String( defaultConnection ))
//第一个参数为“驱动名称”
//第二个参数为“连接名”,默认是相同的

 

2.连接数据库

    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("card.db");//数据库名
    if(!db.open())
    {
        QMessageBox::critical(this,"提示","数据库打开失败   ");
        return;
    }
    QSqlQuery query(db);

3.创建数据库表

//操作记录表
    QString createTableQuery = "CREATE TABLE IF NOT EXISTS cardtable ("
                                   "cardNum VARCHAR(30) NOT NULL,"
                                   "stuNum VARCHAR(30) NOT NULL,"
                                   "chaozuo VARCHAR(30) NOT NULL,"
                                   "time DATETIME NOT NULL"
                                   ");";
    if(!query.exec(createTableQuery))
    {
        qDebug() << "创建失败";   return;
    }

    //数据记录表

    QString createTableQuery2 = "CREATE TABLE IF NOT EXISTS card ("
                                   "cardNum VARCHAR(30) PRIMARY KEY,"   //设置成主键
                                   "stuNum VARCHAR(30) NOT NULL,"
                                   "money INT NOT NULL"
                                   ");";
    if(!query.exec(createTableQuery2))
    {
        qDebug() << "创建失败2";   return;
    }

4.插入数据到表中

使用的表为上面创建的表:cardtable

    QString cardNum = "123456";
    QString stuNum = "123456";
    QString chaozuo = "123456";
    QString time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
    QString insert_sql = QString("INSERT INTO cardtable(cardNum, stuNum, chaozuo, time) "
                                          "VALUES('%1', '%2', '%3', '%4')")
                                 .arg(cardNum).arg(stuNum).arg(chaozuo).arg(time);
    query.exec(insert_sql);
    query.exec(insert_sql);
    query.exec(insert_sql);
    query.exec(insert_sql);
    if(!query.exec(insert_sql))
    {
        qDebug() << "插入失败  ";   return;
    }

5.更新表中的数据

使用的表为上面创建的表:card

//封装部分的打开数据库的指令
void Widget::open_database()
{
    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("card.db");
    if(!db.open())
    {
        QMessageBox::critical(this,"提示","数据库打开失败   ");
        return;
    }
}


open_database();
QSqlQuery query(db);
int money = ui->t2moneyEdit->text().toInt()+ui->t2balanceEdit->text().toInt();
QString cardNum = ui->t2cardEdit->text();
            QString sql = QString("UPDATE card SET money = %1 WHERE cardNum = '%2'").arg(money).arg(cardNum);
            // 执行 SQL 语句
            if (query.exec(sql)) {
                QMessageBox::about(this,"充值","充值成功   ");

                QString str = QString::number(money);
                ui->t2balanceEdit->setText(str);
                insert_data(ui->t2cardEdit->text(),ui->t2stuEdit->text(),"充值"+ui->t2moneyEdit->text()+"元");
            } else {
                qDebug() << "Update failed:" << query.lastError().text();
            }
            db.close();

6.清空表中的数据

使用的表为上面创建的表:cardtable

void Widget::on_pushButton_10_clicked()//清空记录表
{
    int nCount = ui->QdataView->rowCount();

    if(nCount>0)
    {
        ui->QdataView->clearContents();
    }
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("card.db");
    if(!db.open())
    {
        QMessageBox::critical(this,"提示","数据库打开失败   ");
        return;
    }
    QSqlQuery query;
    QString sql = "DELETE FROM cardtable";
    if(!query.exec(sql))
    {
         qDebug() << "Delete all data failed: " << query.lastError();
    }
}

总结

以上就是今天要讲的内容,本文仅仅简单介绍了数据库的基本使用方法。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

qt-5数据库使用 的相关文章

  • Jmeter性能测试(9)--逻辑控制器

    jmeter中逻辑控制器 xff08 Logic Controllers xff09 的作用域只对其子节点的sampler有效 xff0c 作用是控制采样器的执行顺序 jmeter提供了17种逻辑控制器 xff0c 它们各个功能都不尽相同
  • MapReduce的工作流程:map和reduce分别做了哪些工作,以及shuffle机制实现了什么

    一 map和reduce分别做了哪些工作 Map 待处理数据分片放入缓冲区 xff0c 分区 排序 合并 归并 xff0c 写入本地磁盘 将处理杂乱无章的数据 xff0c 找出规律 xff0c 归纳处理 1 读取hdfs上的文件 xff0c
  • Prometheus监控部署

    文章目录 一 通用监控系统基础知识以及Prometheus的概述1 监控系统的发展史 xff1a 2 什么是Prometheus 二 工作原理及适用性1 prometheus获取数据的方式 三 xff0c 实验环境1 关闭防火墙和核心防护P
  • Docker之 神操作!居然能修改已运行的 Docker 容器端口映射

    文章目录 一 容器未启动 xff1f 二 容器已启动 xff1f 2 1 但是想修改或者添加端口时 xff0c 先停止掉正在运行的容器 2 2 查看容器完整的 96 hash of the container 96 数值 xff1a 2 3
  • python版MapReduce基础实战

    第一关 xff1a 成绩统计 任务描述 本关任务 xff1a 使用Map Reduce计算班级中年龄最大的学生 相关知识 为了完成本关任务 xff0c 你需要掌握 xff1a 1 什么是MapReduce xff0c 2 如何使用MapRe
  • 视觉SLAM十四讲笔记六(第七讲)

    1 引言 前几节介绍了运动方程和观测方程的具体形式 xff0c 并讲解了以非线性优化为 主的求解方法 本讲 xff0c 我们将介绍什么是特征点 xff0c 如何提取和匹配特征点 xff0c 以及如何根据配对的特征点估计相机运动 2 特征点法
  • [C++教程①]--了解c语言以及第一行代码

    hellohello xff0c 我是离 今天开始 xff0c 我会对小白朋友讲解c 43 43 C 43 43 是什么 C 43 43 是C语言的继承 xff0c 它既可以进行C语言的过程化程序设计 xff0c 又可以进行以抽象数据类型为
  • 虚拟机可以ping通IP,但是ping通不了域名

    今天用VMware安装了一个centos7系统 xff0c 正常安装上去 xff0c 编辑了ifcfg ens33网卡信息 在物理机上ping虚拟机地址和百度的域名 xff0c 测试可以ping通 又去虚拟机上ping一下百度域名www b
  • 笔记(STM32篇)day12——USART串口介绍、串口初始化结构体

    目录 一 USART介绍 1 USART简介 2 USART功能框图 二 串口初始化结构体 参考 一 USART介绍 1 USART简介 通用同步异步收发器 Universal Synchronous Asynchronous Receiv
  • 京东Java后台开发岗社招面试经验分享,4面的面经!

    前言 正好最近我一朋友面试京东回来 xff0c 和我聊了他的面试经过 xff0c 最后经过四面成功斩获offer xff01 下面我把他所得经验毫无保留的分享给大家 xff01 希望对正准备面试小伙伴们能有所帮助 xff01 xff01 x
  • 关于系统架构

    系统架构 1 系统架构包括什么形式2 C S架构2 1 C S架构的软件或者系统2 2 C S架构的特点2 3 C S架构的优缺点 3 B S架构3 1 优缺点3 2 B S结构的系统的通信原理关于域名 4 WEB服务器软件4 1 WEB服
  • Jmeter性能测试(10)--参数化

    参数化是自动化测试脚本的一种常用技巧 简单来说 xff0c 参数化的一般用法就是将脚本中的某些输入使用参数来代替 xff0c 在脚本运行时指定参数的取值范围和规则 xff1b 这样 xff0c 脚本在运行时就可以根据需要选取不同的参数值作为
  • AT指令1

    我之前认为手机号码与SIM卡是一一对应的 xff0c 后来想想不对 xff0c 因为有换卡不换号的情况啊 xff0c 所以SIM卡应该只是一个电话号码的储存介质 xff0c 而与SIM卡一一对应的是另一个编码 IMSI xff08 国际移动
  • Keil5 的常见错误

    1 C Source led c 22 warning 69 D integer conversion resulted in truncation 这个是由于实际值的范围超过了定义值的范围 2 C Source main c 15 err
  • c语言实现FTP

    这个实现了客户端和服务端文件的相互传输 xff08 只在本机上运行过 xff09 xff0c 如果是要两台计算机相互传数据要改ip 给大家看一下实现过程 xff08 exe文件要先开服务端的 xff09 输入1 直接将快捷方式拖拽上去就有绝
  • 2021 => 手把手搭建dhcp服务(详细)

    架构解析 dhcp服务器配置 配置实验环境 关闭VMware的dhcp服务 给虚拟机添加网卡为VMnet1 安装与配置dhcp服务 给新添的网络配置IP 配置dhcp服务 在真实的主机系统上查看dhcp配置 为真实主机系统分配固定的IP 修
  • 2021 => 手把手教你NFS部署(实用)

    NFS服务 原理 xff1a 供文件共享服务 为Web Server 配置集群中的后端存储 支持多节点同时挂载以及并发送与写入 架构解析 这是一张大型网站高并发架构图 xff0c 我们只需注意图中圈红的地方 建立NFS文件系统本质就是用来进

随机推荐

  • 2021最新阿里云部署k8s集群(篇1 购买服务器)

    实验kubernetes版本 xff1a v1 22 1 x1f947 阿里云地址 阿里云开发者社区 阿里云官网开发者社区 云计算社区 注意 xff1a 做此实验先准备100RM xff0c 本实验为抢占实例 CentOs版本 xff1a
  • 七层负载均衡HAproxy生产环境LVS+Keepalived+HAproxy(三)

    LB Haproxy Nginx x1f4af 解析 xff1a 七层负载均衡器 xff0c 为与七层模型上的应用层 xff0c 通过URL地址 xff08 应用层 xff09 进行负载均衡 优点 xff1a 详细地址 xff0c 数据精准
  • Kubeadm-K8s1.20-高可用部署-详细-生产环境(四)

    文章目录 kubeadm部署高可用集群注意事项k8s部署 二进制与高可用的区别 一 环境配置1 所有节点修改主机名2 所有节点进行域名解析3 所有节点关闭相关应用3 1 防火墙关闭3 2 dnsmasq关闭3 3 NetworkManage
  • k8s Pod简介与探针实现零宕机发布

    目录 一 Pod简介 Pod的退出流程 1 什么是Pod 2 定义一个Pod 二 探针 零宕机发布 1 Pod探针 2 Pod探针的检测方式 3 探针检查参数配置 4 startupProbe 5 liveness 6 readiness
  • VmWare克隆 CentOS7

    问题1 xff1a 无法启动图形化界面 背景 xff1a 搭建 Zookeeper 集群需要多台服务器 xff0c 于是参考 VmWare 克隆 CentOS7 xff0c 但是克隆后启动无法进入 图形化界面 报错现象 xff1a 分析过程
  • 【Opencv】CV_* was not declared in this scope 的部分解决方法

    问题描述及原因分析 Opencv在更新到 新版本 后 xff0c 在运行有些 旧版本 的代码时会出现此类情况 解决方案 xff1a error CV AA was not declared in this scope 在头文件中添加 inc
  • Jmeter性能测试(11)--JDBC Request之Query Type

    工作中遇到这样一个问题 xff1a 需要准备10W条测试数据 xff0c 利用jmeter中的JDBC Request向数据库中批量插入这些数据 xff08 只要主键不重复就可以 xff0c 利用函数助手中的Random将主键的ID末尾五位
  • UE4C++UI平滑曲线图绘制

    UE4C 43 43 UI平滑曲线图绘制 前言 UE4的曲线在UMG上面绘制的时候总是和麻烦的 xff0c 这里我们采用UE4曲线FRichCurve中的绘制方法 xff0c 传入对应的Key值 xff0c 然后差值获取俩个点之间的数据 x
  • 从底层了解IO操作,文件描述符和文件流指针

    目录 一 库函数 二 系统调用 三 文件流指针和文件描述符 我们最早接触IO操作函数应该就是c语言了吧 xff0c 所有今天我们从c语言中的函数出发 xff0c 逐层剥离 xff0c 回归到IO操作的本质 一 库函数 1 fopen FIL
  • 2021-前端-VsCode插件

    此乃吾习前端 xff0c VsCode之插件 xff0c 个人所装 xff0c 喜着自拿 xff0c 不足之处还望海涵 xff0c 多加批评 1 Auto Close Tag 自动闭合尾部的标签 2 Atuo Rename Tag 修改 h
  • STM32串口发送数据控制LED灯的亮灭

    1 配置相应的 GPIO 时钟 串口时钟 复用时钟 2 配置GPIO结构体 3 配置串口 main c include 34 stm32f10x h 34 include 34 delay h 34 include 34 led h 34
  • cc2530 按键中断实验——按键控制LED灯的亮灭

    在本次学习中 xff0c 主要通过外部中断来控制LED的亮灭 首先 xff0c 先查看相关电路图 由图可知 xff0c 当CC2530端口1的1号引脚输出低电平时 xff0c LED3将被点亮 xff0c 当按键31按下时 xff0c 端口
  • cc2530 定时器控制LED灯以不同的频率闪烁

    1 cc2530有两个LED灯 xff1a 定时器有4种工作方式 可通过定时器 T1 以及 定时器 T3同时来分别控制LED灯的闪烁 xff0c 我们让定时器1处于8分频的自由模式下 xff0c T1 为16位的计数器 xff0c 计数器每
  • arduino esp8266 请求服务器未得到响应(ESP8266HTTPClient)

    学习太极创客esp8266 服务器的基本操作 xff0c 遇到了因版本不同导致编译无法通过 此问题为我们在arduino下载的esp8266的版本为3 0 2版本 xff0c 和官方给出来的历程所用的版本不同所导致的 xff0c 我们需要添
  • esp8266--arduinoJson在线解析V6版本的使用

    在线解析官网https arduinojson org 点击Assistant 可以选择V6版本以及V5版本 xff0c 这里我们选择V6版本 配置 输入你要反序列化的函数 xff0c 点击Next Size 点击 NextProgram
  • Freertos-小车开发笔记 2 --编码电机使用

    目录 前言 一 TB6612电机驱动板 1 TB6612 模块介绍 2 TB6612 芯片原理图介绍与控制说明 3 tb6612 D153B 模块接线说明 二 编码电机驱动后轮 1 编码电机初始化 2 编码电机初始化 总结 前言 通过编码点
  • Freertos-小车开发笔记 4 --遥控器开发

    目录 前言 xff1a 一 ADC DMA采集遥感的数据 二 串口3发送数据 三 wifi模块连接阿里云 前言 xff1a 遥控器开发采用的标准库编写 oled用于显示遥感的x y 值 一 ADC DMA采集遥感的数据 由于涉及到多个adc
  • Jmeter性能测试(12)--关联之正则表达式提取器

    如果有这样的情况 xff1a 一个完整的操作流程 xff0c 需要先完成某个操作 xff0c 获得某个值或数据信息 xff0c 然后才能进行下一步的操作 xff08 也就是常说的关联 将上一个请求的响应结果作为下一个请求的参数 xff09
  • qt-5串口与通讯

    文章目录 文章目录 一 串口通讯 二 实现串口通讯 1 在头文件中引入 QtSerialPort 类的两个头文件 xff08 必须引入 xff09 2 在工程文件中添加以下代码 3 在头文件中定义全局的串口对象 4 相关配置 5 通过一个按
  • qt-5数据库使用

    文章目录 目录 前言 一 所需要的头文件 二 数据库操作 1 addDatabase的函数原型如下 2 连接数据库 3 创建数据库表 4 插入数据到表中 5 更新表中的数据 总结 前言 例如 xff1a qt 5 创建数据库 xff0c 创