QT使用SQLite(打开db数据库以及对数据库进行增删改查)

QT+SQLite

在QT中使用sqlite数据库,有多种使用方法,在这里我只提供几种简单,代码简短的方法,包括一些特殊字符处理。

用SQlite建立一个简单学生管理数据库

数据库中有两个表一个是classstudent

Alt

class表结构
Alt

student表结果
Alt

创建工程

我的工程如下:
Alt

直接上代码(看注释更通透)

student.pro文件添加sql模块。

QT       += core gui
QT       += sql #添加数据库模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++17# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp \Student.cppHEADERS += \Student.hFORMS += \Student.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

student.h文件添加相关定义。

#ifndef STUDENT_H
#define STUDENT_H#include <QWidget>//添加相应的头文件
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlRecord>
#include <QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class Student; }
QT_END_NAMESPACEclass Student : public QWidget
{Q_OBJECTpublic:Student(QWidget *parent = nullptr);~Student();//定义一个变量,用于增删改查QString queryString;void Add();//添加数据void Delete();//删除数据void Update();//更新数据void Select();//查询数据private:Ui::Student *ui;QSqlDatabase DB;//定义数据库名称
};
#endif // STUDENT_H

student.cpp文件编辑。(值得一提的是,在数据库删除操作中,有时候要判断限制条件是否为空,在代码中已体现)

#include "Student.h"
#include "ui_Student.h"Student::Student(QWidget *parent): QWidget(parent), ui(new Ui::Student)
{ui->setupUi(this);//打开数据库DB = QSqlDatabase::addDatabase("QSQLITE");DB.setDatabaseName("./StudentDB.db");//打开数据库if (DB.open()){qDebug() << "Database opened successfully!";}else{qDebug() << "无法打开数据库:" << DB.lastError().text();}Add();//添加数据Select();//查询数据Update();//更新数据Delete();//删除数据
}Student::~Student()
{delete ui;
}void Student::Add()//增
{/** 在班级表中添加数据,添加的数据为班级名称:一班班主任:李主任班级人数:25*/queryString = QString("insert into class(class_name, class_teacher ,student_number) values('%1','%2',%3) ").arg("一班").arg("李主任").arg(25);QSqlQuery query;//执行sql语句if(query.exec(queryString)){qDebug()<<"insert data Successful!";}else {qDebug()<<"insert data Failed!";}
}void Student::Delete()//删
{//在这里有时候要判断限制条件是否为空,这时候可以用这个sql语句,当班级名称不为空时删除//queryString = QString("delete from class where class_name is not null");queryString = QString("delete from class where class_name = '%1'").arg("一班");QSqlQuery query(queryString);if(query.exec()){qDebug()<<"Delete data Successful!";}else {qDebug()<<"Delete data Failed!";}
}void Student::Update()//改
{//更新数据,将班级名称作为限制条件进行数据更新queryString = QString("update class set class_teacher='%1' ,student_number=%2 where class_name='%3' ").arg("张主任").arg(30).arg("一班");QSqlQuery query;if (query.exec(queryString)){qDebug()<<"updata data Successful!";}else{qDebug()<<"updata data Failed!";}
}void Student::Select()//查
{queryString = QString("select * from class where class_name = '%1'").arg("一班");QSqlQuery query(queryString);while(query.next()){QString class_teacher = query.value("class_teacher").toString();int student_number = query.value("student_number").toInt();qDebug()<<"班主任:"<<class_teacher;qDebug()<<"班级人数:"<<student_number;}
}

运行完之后都出现successful,就说明,你已经掌握了qt+sqlite的增删改查。
在这里插入图片描述

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

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

相关文章

python flask Jinja2模板学习

分类很好的一篇文章 Jinja2模板语法 Jinja2里常见的三种定界符&#xff1a; (1) 语句 {% ... %}(2) 表达式 {{ ... }}(3) 注释 {# ... #} {%set adazhaung%} 语句设置变量{{a}} 表达式{% if 2>1 %}控制语句以{%endif%}结尾 Jinja2支持使用“.”获取变量的属…

RflySim | 姿态控制器设计实验一

姿态控制器设计实验1 一. 姿态控制设计简介 本文是建立在多旋翼的姿态即控制器中的反馈信号能够被较好地估计的前提下&#xff0c;控制器中的反馈信号是估计值。不过&#xff0c;为了更加简便根据分离原理&#xff0c;我们用真值代替反馈信号。本文的目的是让多旋翼的姿态能够…

线性规划问题

线性规划问题&#xff1a; 将约束条件及目标函数都是决策变量的线性函数的规划问题称为线性规划问题 一般线性规划问题的描述&#xff1a; 为了解决这类问题&#xff0c;首先需要确定问题的决策变量:然后确定问题的目标&#xff0c;并将目标表示为决策变量的线性函数;最后找出问…

FL Studio 21.2.1.3859中文破解版及FL Studio怎么录制

FL Studio 21.2.1.3859中文破解版是一个数字音频工作站 (DAW)。该软件借助各种编辑工具、插件和效果&#xff0c;让您可以录制、混音和掌握高度复杂的音乐作品。FL Studio 21还允许您注册和编辑 MIDI 文件&#xff0c;您可以在众多可用乐器之一上演奏这些文件。FL Studio 拥有 …

如何安装Wnmp并结合内网穿透实现外网远程访问内网服务

文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 WNMP是Windows系统下的绿色NginxMysqlPHP环境集成套件包&#xff0c;安装完成后即可得到一个Nginx MyS…

从零开始学习 JS APL(五):完整指南和实例解析

目录 学习目标&#xff1a; 学习内容&#xff1a; 学习时间&#xff1a; 学习内容&#xff1a; Window对象&#xff1a; 定时器-延时函数&#xff1a; JS 执行机制&#xff1a; location对象&#xff1a; 本地存储&#xff1a; 本地存储分类- localStorage&#xff1a…

【latex笔记】双栏格式下插入单栏、双栏格式图片

双栏格式下插入单栏、双栏格式图片 1.缘起multicols2.双栏格式 插入单栏图片3.双栏格式 插入双栏图片 1.缘起multicols 插入双栏格式图片问题被困扰了有很长一段时间&#xff0c;查看网络资源也一直没找到解决方法&#xff0c;今天查看Latex官方文档&#xff0c;才发现因为mul…

【算法专题】前缀和

前缀和 前缀和1. 前缀和【模板】2. 二维前缀和【模板】3. 寻找数组的中心下标4. 除自身以外数组的乘积5. 和为K的子数组6. 和可被K整除的子数组7. 连续数组8. 矩阵区域和 前缀和 1. 前缀和【模板】 题目链接 -> Nowcoder -DP34.前缀和【模板】 Nowcoder -DP34.前缀和【模…

单片机系统

我们来看单片机 的例子&#xff0c;读者可能会担心单片机&#xff08;又称MCU&#xff0c;或微控制器&#xff09; 过于专业而无法理解。完全没必要&#xff01;在这里我们仅借它谈论一下有关时间的话题&#xff0c;顺带提一下单片机系统的概念。 单片机顾名思义是集成到一个芯…

微信小程序 纯css画仪表盘

刚看到设计稿的时候第一时间想到的就是用canvas来做这个仪表盘&#xff0c;虽然本人的画布用的不是很好但还可以写一写&#x1f600;。话不多说直接上代码。最后有纯css方法 <!--wxml--> <canvas canvas-id"circle" class"circle" >// js dat…

经验分享|MySQL分区实战(RANGE)

概述 分区概述 在 MySQL 中&#xff0c; InnoDB存储引擎长期以来一直支持表空间的概念。在 MySQL 8.0 中&#xff0c;同一个分区表的所有分区必须使用相同的存储引擎。但是&#xff0c;也可以为同一 MySQL 服务器甚至同一数据库中的不同分区表使用不同的存储引擎。 通俗地讲…

学习php中使用composer下载安装firebase/php-jwt 以及调用方法

学习php中使用composer下载安装firebase/php-jwt 以及调用方法 1、安装firebase/php-jwt2、封装jwt类 1、安装firebase/php-jwt composer require firebase/php-jwt安装好以后出现以下文件: 2、封装jwt类 根据所使用的php框架&#xff0c;在指定目录创建 Token.php <?ph…