Qt系列之数据库(一)

news2025/1/12 20:53:53

Qt 数据库开发是指在Qt框架下进行数据库操作的开发工作。Qt提供了一套强大的数据库模块,可以方便地与多种数据库进行交互,如SQLite、MySQL、PostgreSQL等。
在这里插入图片描述

该模块中接口是使用C++语言,也就是说,学习相关的类及类的接口使用。
在这里插入图片描述
qt对数据库的使用步骤:
第一步:在项目增加数据库模块操作
在这里插入图片描述

第二步:根据类型来连接数据库,将数据库转换成一个类对象(QSqlDatabase)
在这里插入图片描述
在这里插入图片描述

具体使用:
QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”); //跟SQLite3进行连接
db.setDatabaseName(“custom.db”); //给数据库设置一个名字,最好加一个.db后缀

bool ok = db.open();//打开数据库,相当于文件中的open函数

以上的操作,相当于创建了一个sqlite数据库文件,并且处于打开状态。
第三步:利用sql语言来操作数据库
在这里插入图片描述
在这里插入图片描述

对于数据库操作主要包括:创建表 插入数据到表,从表中查询数据出来 更新表中数据 删除表中数据,在执行这些功能时,都是使用sql语言来完成,每个实 现都是以对应的关键字开头
比如:创建表

CREATE TABLE table_name(
   column1 datatype  PRIMARY KEY(one or more columns),
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
);
CREATE TABLE ---- 创建表的关键字
table_name ---- 表名
column1 ---- 列名(字段)
datatype ---- 数据类型
PRIMARY KEY ---- 主键
     对于主键的操作,通常将它设置为自增长,使用关键字 AUTOINCREMENT,但是,设置
     为自增长时,该字段的数据类型必须为整型(INTEGER),不能写成int

对于执行sql语句的类为 QSqlQuery

boolexec(const QString &query) //执行一个query的sql语句boolexec()//也是执行一个sql语句,通过跟prepare函数来使用
boolprepare(const QString &query)//提前准备好一条sql语句

代码实现:
//[2] 创建一个数据库中的表,对于sql语言,不区分大小,一个sql语句,就相当于一个字符串

 QString sqlTable = QString("CREATE TABLE staff(id INTEGER PRIMARY KEY AUTOINCREMENT,"
                               "name varchar(20),"
                               "age int);");
    qDebug() << sqlTable;

    //[3] 执行语句 --- QSqlQuery
    QSqlQuery query;
    query.prepare(sqlTable);
    if(!query.exec())
    {
        qDebug() << "Error Failed to create table"<<db.lastError();
    }

使用图形化工具查询的结果:

第四步:插入数据到表中
语法:

INSERT INTO TABLE_NAME (column1, column2, `在这里插入代码片`column3,...columnN) 
VALUES (value1, value2, value3,...valueN);

INSERT INTO -----关键字
TABLE_NAME ---- 表名
VALUES ---- 关键字

代码实现:
//向表中插入数据 在给字段为字符串类型的字段赋值时,那么要加单引号

   QString sqlInsert = QString("INSERT INTO staff(name,age) VALUES('李四',20)");
     if(!query.exec(sqlInsert))
     {
          qDebug() << "Error Failed to insert record"<<db.lastError();
     }

使用图形化工具查询的结果:
在这里插入图片描述

第五步:查询表中记录
语法:

SELECT column1, column2, columnN FROM table_name;
SELECT ---- 关键字
column1, column2, columnN --- 列的字段名
FROM ----- 关键字
table_name ----- 表名

从表中查询出指定字段的对应的值,如果想要查询所有字段的值
SELECT * FROM table_name;
查询指定字段的值:

QString sqlSelect = QString("SELECT name FROM staff;");
     if(!query.exec(sqlSelect))
     {
          qDebug() << "Error Failed to slect record"<<db.lastError();
     }else {

         //开始读取表中的记录
         while (query.next()) {

             //通过字段名来获取对应的值
            qDebug() << query.value("name").toString();
         }
    }

查询所有字段的值:

QString sqlSelect = QString("SELECT * FROM staff;");
     if(!query.exec(sqlSelect))
     {
          qDebug() << "Error Failed to slect record"<<db.lastError();
     }else {

         //开始读取表中的记录
         while (query.next()) {

             //通过字段名来获取对应的值
            qDebug() << query.value("name").toString();
            qDebug() << query.value("age").toInt();
         }
    }

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

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

相关文章

我的Markdown简历模板开源了!

我之前写过一篇文章&#xff0c;很详细的讲解了如何使用Markdown写出一份漂亮的简历&#xff0c;并且在各个博客平台都有发布。 为了方便&#xff0c;我在这贴一下这篇文章的链接&#xff1a;✨Markdown制作简历教程 如果你还没有读过&#xff0c;或者恰好需要做一份新的简历…

【Kubernetes】K8s中Container(容器)、Pod(小组)和node(节点)概念讲解

Kubernetes学习之路 第一章 Kubernetes学习入门之Container(容器)、Pod(小组)和node(节点)概念 文章目录 Kubernetes学习之路前言一、Container&#xff08;容器&#xff09;二、Pod&#xff08;小组&#xff09;1.单容器 Pod2.多容器 Pod 三、Container&#xff08;容器&…

132-横向移动-Exchange 服务有账户 CVE 漏洞无账户口令爆破

Exchange服务 Microsoft Exchange Server 是微软公司推出的一款企业级邮件服务器软件&#xff0c;它提供了一套全面的电子邮件服务组件&#xff0c;以及消息和协作系统。Exchange Server 不仅支持电子邮件服务&#xff0c;还提供了日历、联系人管理、任务管理、文档管理、实时会…

机器学习 之 决策树与随机森林的实现

引言 随着互联网技术的发展&#xff0c;垃圾邮件过滤已成为一项重要的任务。机器学习技术&#xff0c;尤其是决策树和随机森林&#xff0c;在解决这类问题时表现出色。本文将介绍随机森林的基本概念&#xff0c;并通过一个具体的案例——筛选垃圾电子邮件——来展示随机森林的…

【Qt】输入类控件QTextEdit

目录 输入类控件QTextEdit 例子&#xff1a;获取多行输入框的内容 例子&#xff1a;验证输入框的各种信号 输入类控件QTextEdit QTextEdit表示多行输入框&#xff0c;也是一个富文本&markdown编辑器。 并且能在内容超出编辑框范围时自动提供滚动条 在Qt中&#xff0c;有俩…

前端CSS选择器

css 和html 三种表示方式 行内样式 >内部样式>外部样式 元素选择器 属性选择器 id选择器 选择id为bb的 &#xff0c;给他增添样式 class选择器以 .开头 用法和id差不都 包含选择器和父子选择器 兄弟选择器 选择器组合 伪元素选择器 首字母格式不一样 首行格式不一样 …

java设计模式--创建型设计模式

创建型模式可分为&#xff1a;单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式 单例模式 单例模式 就是采取一定的方法保证在整个软件系统中&#xff0c;对某个类只能存在一个对象实例&#xff0c;并且该类只提供一个获取其对象的方法&#xff08;静态方法&#xf…

Unity编辑器扩展之Project视图扩展

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity编辑器扩展之Project视图扩展 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取&#xff01…

河南萌新联赛2024第(六)场:郑州大学(补题ABCDFGIL)

文章目录 河南萌新联赛2024第&#xff08;六&#xff09;场&#xff1a;郑州大学A 装备二选一&#xff08;一&#xff09;简单介绍&#xff1a;思路&#xff1a;代码&#xff1a; B 百变吗喽简单介绍&#xff1a;思路&#xff1a;代码&#xff1a; C 16进制世界简单介绍&#x…

第二十七节、人物可互动标识

一、多个场景同时存在 方法&#xff1a;将另一个场景拖拽进 当前场景中 这样在一个场景中保存物体&#xff0c;另一个场景切换即可 创建一个场景名为上图&#xff08;这是一个持久化的场景&#xff09; 被激活的场景是粗体字的 二、代码 使用第二个代码获得player的子物体 …

uniapp在线下载安装包更新app以及热更新

首先用getSystemInfo判断平台、 再通过json文件模拟接口 判断版本号是否一致 不一致则下载服务器apk进行更新 外加网络波动导致失败重新下载更新包 uni.getSystemInfo({success: function (e) {// #ifndef H5// 获取手机系统版本const system e.system.toLowerCase();const pl…

《黑神话:悟空》解锁+35项修改器,开启上帝模式!

哈喽&#xff0c;各位小伙伴们好&#xff0c;我是给大家带来各类黑科技与前沿资讯的小武。 8 月 20 日&#xff0c;国产 3A 大作《黑神话&#xff1a;悟空》闪亮登场&#xff01;这是一款由中国游戏开发商游戏科学开发的动作角色扮演游戏&#xff0c;此前在研发阶段就备受关注…

Python 使用 matplotlib 显示图像

如果没有安装 matplotlib 需要先安装&#xff1a; pip install matplotlib一、读取图片并显示 import matplotlib.pyplot as pltimage_path "/Users/AlanWang4523/Desktop/Debug/files/image.png" image_array plt.imread(image_path)plt.figure("ImageShow…

会声会影作为视屏制作软件如何?会声会影最新免费版

二、核心功能与特点 拖放式编辑&#xff1a;会声会影2024提供了拖放式标题、转场、覆叠和滤镜功能&#xff0c;使得视频编辑变得更加直观和高效。 色彩分级与动态分屏&#xff1a;软件支持色彩分级功能&#xff0c;可以对视频进行精细的色彩调整。同时&#xff0c;动态分屏功能…

STM32通用定时器,端口复用和重映射

STM32定时器是一种内置在STM32微控制器中的硬件模块&#xff0c;用于测量和控制时间。它具有高精度、可配置性和灵活性的特点&#xff0c;能够支持多种不同的工作模式和应用场景。以下是对STM32定时器的详细讲解&#xff1a; 一、定时器的基本构成 STM32定时器主要由以下几个…

内存管理————基础理解

目录 我们先看以下代码和内存分布图 对一些名词的解释说明&#xff1a; 题目 答案 问题解释&#xff1a; C语言中动态内存管理方式 C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 这里提一下要注意的点 C内存管理方式 基本内容 new/delete操作内置…

常用API:object

文章目录 Object类toString()方法equals()方法总结其他方法 黑马学习笔记 Object类 是所有类的父类&#xff0c;所有的类都默认继承Object类。Java中所有的类的对象都可以直接使用Object类提供的一些方法。 toString()方法 equals()方法 默认是判断两个对象的地址 也是判断…

MATLAB-疲劳检测

首先&#xff0c;我们需要解决一个问题&#xff0c;什么样可以视为疲劳&#xff1f; 频繁的眨眼/眨一次眼所用时间很长 不停的打哈欠 不停的点头 通过分析&#xff0c;我们得到了检测疲劳的三个标准&#xff1a;眨眼&#xff0c;打哈欠&#xff0c;头部姿态。 这三个标准可以…

OpenCV findTours函数及其用法

OpenCV findTours函数主要用以寻找图像中物体的轮廓&#xff0c;其原型如下&#xff1a; indTours 函数参数&#xff1a; Image 输入图像&#xff0c;需8位单通道图像。非零像素被视为1。零像素保持为0&#xff0c;因 此图 像被视为 二进制。您可以使用co…

【数据分享】《全国能源-分行业煤油消费总量》(2000-2020年)

而今天要限时免费分享的数据就是2000-2020年间出版的《全国能源-分行业煤油消费总量》并以多格式提供免费下载。&#xff08;无需分享朋友圈即可获取&#xff09; 数据介绍 在过去的二十年里&#xff0c;中国作为全球能源消费的重要力量&#xff0c;其能源结构的变化不仅影…