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

QT sqlite的简单用法

1、相关头文件

#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlIndex>
#include  <QSqlField>
#include <QFile>
#include <QDebug>

2、数据库对象

QSqlDatabase database;

3、创建数据库并打开数据库

bool initDataBase()
{if(QSqlDatabase::contains("qt_sql_default_connect")){database = QSqlDatabase::database("qt_sql_default_connect");}else{database = QSqlDatabase::addDatabase("QSQLITE");database.setDatabaseName("myDatabase.db");database.setUserName("hs");database.setPassword("hs");if(database.isValid()){qDebug() << "valid." ;}else{qDebug() << "not valid!"<< database.lastError();return false;}if (!database.open()){qDebug() << "Error: Failed to connect database." << database.lastError();return false;}}return true;
}

4、创建表

bool testCreateTable()
{QSqlQuery sql_query;QString create_sql = "create table student (id int primary key, name varchar(30), age int)";sql_query.prepare(create_sql);if(!sql_query.exec()){qDebug() << "Error: Fail to create table." << sql_query.lastError();return false;}else{qDebug() << "Table created!";}return true;
}

5、向表中插入数据

bool testInsert(int id,const QString& name,int age)
{QSqlQuery query;query.prepare("INSERT INTO student(id,name,age)""VALUES (:id,:name,:age)");query.bindValue(":id",id);query.bindValue(":name",name);query.bindValue(":age",age);return query.exec();
}

6、查询表中的数据

bool testQuery()
{QSqlQuery sql_query;QString select_sql = "select id, name,age from student";if(!sql_query.exec(select_sql)){qDebug()<<sql_query.lastError();return false;}else{while(sql_query.next()){int id = sql_query.value("id").toInt();QString name = sql_query.value("name").toString();int age = sql_query.value("age").toInt();qDebug()<<QString("id:%1 name:%2 age:%3").arg(id).arg(name).arg(age);}}QString lastQuery = sql_query.lastQuery();qDebug() << "lastQuery: " << lastQuery;return true;
}

7、修改表中的数据

bool testModify(const QString& name,int age,int id)
{QString sql = "update student set name=:name,age=:age where id=:id";QSqlQuery query;query.prepare(sql);// 设置参数query.bindValue(":name",name);query.bindValue(":age",age);query.bindValue(":id",id);return query.exec();
}

8、删除表中的数据

bool testDelete(int id)
{QString sql = "delete from student where id=:id";QSqlQuery query;query.prepare(sql);// 设置参数query.bindValue(":id",id);return query.exec();
}

9、查询数据库中的表

bool testQueryTable()
{// 查询sqlite_master表QString querySql = "SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view')";QSqlQuery query(querySql);// 遍历查询结果while (query.next()) {QString name = query.value(0).toString();QString type = query.value(1).toString();qDebug() << "------------------";qDebug() << "Object name:" << name;qDebug() << "Object type:" << type;qDebug() << "------------------";}return true;
}

10、删除指定的表

bool testDeleteTable()
{QSqlQuery sql_query;QString drop_sql = "DROP TABLE student";sql_query.prepare(drop_sql);if(!sql_query.exec()){qDebug() << sql_query.lastError();return false;}else{qDebug() << "drop table success";}return true;
}

11、查询表是否存在

bool isTableExist()
{QSqlQuery sql_query;// count(*) 表示查询数量,因为student只有一个,因此只查询了一行结果sql_query.exec("SELECT COUNT(*) FROM sqlite_master  WHERE type='table' AND name='student'");int count = 0;if (sql_query.next()) {count = sql_query.value(0).toInt();}return count;
}

12、查询表的字段等

void testRecord()
{QSqlQuery query("select * from student");//QString sql = "select * from student";//query.prepare(sql);QSqlRecord rec = query.record();qDebug() << "Number of columns: " << rec.count();for(int i = 0; i < rec.count();++i){qDebug() << "field: " << rec.fieldName(i);}int nameCol = rec.indexOf("name"); // index of the field "name"while (query.next())qDebug() << query.value(nameCol).toString(); // output all names
}

13、查询数据库的一些其他输出信息

void testDatabaseOutput()
{QString connectionOptions = database.connectOptions();qDebug() <<"option:" << connectionOptions;QStringList connectionName = database.connectionNames();qDebug() << "connectionNames:"<<connectionName;qDebug() << "database Name: " << database.databaseName();qDebug() << "dirver Name: " << database.driverName();//QSqlDriver* driver = database.driver();qDebug() << "dirvers: " << database.drivers();qDebug() << "host Name: " << database.hostName();qDebug() << "password: " << database.password();qDebug() << "port: " << database.port();qDebug() << "tables: " << database.tables(QSql::TableType::AllTables);QSqlIndex rlt = database.primaryIndex("student");qDebug() << "primary key: "<<rlt.name();QSqlRecord rec = database.record("student");qDebug() << "record count: "<<rec.count();for(int i = 0; i < rec.count();++i){qDebug() << "rec: " << rec.fieldName(i);qDebug() << "rec Value:" << rec.value(i).toString();QSqlField field = rec.field(i);qDebug() <<"field: "<< field.name();qDebug() << "field value: " << field.value().toString();qDebug() << "field type: " << field.type();}}

相关文章:

QT sqlite的简单用法

1、相关头文件 #include <QSqlDatabase> #include <QSqlError> #include <QSqlQuery> #include <QSqlRecord> #include <QSqlIndex> #include <QSqlField> #include <QFile> #include <QDebug> 2、数据库对象 QSqlDatabas…...

大模型部署手记(12)LLaMa2+Chinese-LLaMA-Plus-2-7B+Windows+text-gen+中文对话

1.简介&#xff1a; 组织机构&#xff1a;Meta&#xff08;Facebook&#xff09; 代码仓&#xff1a;https://github.com/facebookresearch/llama 模型&#xff1a;chinese-alpaca-2-7b-hf 下载&#xff1a;使用百度网盘下载 硬件环境&#xff1a;暗影精灵7Plus Windows版…...

C#导出本机Win32native dll

C# 使用 "3f/DllExport" 工具导出C风格的本机函数 [文 / 张赐荣] 首先&#xff0c;让我们来了解一下什么是争渡读屏软件&#xff0c;以及什么是争渡文本预处理API。争渡读屏软件是一款屏幕朗读软件&#xff0c;用于协助视力障碍人士操作电脑。 争渡文本预处理API是一…...

express-generator快速构建node后端项目

express-generator是express官方团队开发者准备的一个快速生成工具&#xff0c;可以非常快速的生成一个基于express开发的框架基础应用。 npm安装 npm install express-generator -g初始化应用 express my_node_test 创建了一个名为 my_node_test 的express骨架项目通过 Exp…...

视频监控系统/视频汇聚平台EasyCVR如何反向代理进行后端保活?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…...

金融信创黄金三年:小程序生态+跨端技术框架构建

小程序应用场景生态的发展&#xff0c;受益于开源技术的发展&#xff0c;以及响应快速开发的实际业务需求&#xff0c;一些跨端框架如&#xff1a;Electron、wxPython、FinClip、Tauri、Flutter等发展也非常迅速&#xff0c;小程序生态跨端技术框架&#xff0c;不仅能满足自有超…...

这短短 6 行代码你能数出几个bug?

前言&#xff1a;本文仅仅只是分享笔者一年前见到的诡异代码&#xff0c;大家可以看看乐子&#xff0c;随便数一数一共有多少个bug&#xff0c;这数bug多少还是要点水平的 在初学编程的时候&#xff0c;写的第一个代码大多都是 hello world&#xff0c;可是就算是 hello world…...

【毕设选题】深度学习 机器视觉 车位识别车道线检测 - python opencv

0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过…...

不同数据类型在单片机内存中占多少字节?

文章目录 前言一、不同编译器二、C51* 指针型 三、sizeof结构体联合体 前言 在C语言中&#xff0c;数据类型指的是用于声明不同类型的变量或者函数的一个广泛的系统。变量的类型决定了变量存储占用的空间 一、不同编译器 类型16位编译器大小32位编译器大小64位编译器大小char…...

安卓LinearLayout让控件居中的办法

在控件属性上&#xff0c;是处理不了的。必须是在LinearLayout处理&#xff1a; 垂直居中 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width&…...

uniapp下拉刷新

为什么要使用uniapp的下拉刷新呢 跨平台兼容性&#xff1a; Uniapp 允许你一次编写代码&#xff0c;然后在多个平台&#xff08;如微信小程序、H5、iOS 和 Android 等&#xff09;上运行。使用 Uniapp 的下拉刷新功能&#xff0c;可以确保在不同平台上都能提供一致的用户体验&a…...

【工作记录】css3 grid布局笔记

概述 Grid 布局即网格布局&#xff0c;是一种新的 CSS 布局模型&#xff0c;比较擅长将一个页面划分为几个主要区域&#xff0c;以及定义这些区域的大小、位置、层次等关系。号称是最强大的的 CSS 布局方案&#xff0c;是目前唯一一种 CSS 二维布局 参数配置说明 属性说明可…...

区块链技术-比特币数据结构

背景 随着近几年区块链技术的迅速发展&#xff0c;越来越多的行业正在将区块链技术应用到实际中去。例如&#xff0c;金融、物流、交易所等行业都开始尝试使用区块链技术来替代传统技术。伴随着区块链迅速发展的期间&#xff0c;诞生了比特币&#xff08;BTC&#xff09;、以太…...

SpringBoot结合dev-tool 实现IDEA项目热部署

什么是热部署&#xff1f; 应用正在运行的时候升级功能, 不需要重新启动应用对于Java应用程序来说, 热部署就是在运行时更新Java类文件 通俗的来讲&#xff0c;应用在运行状态下&#xff0c;修改项目源码后&#xff0c;不用重启应用&#xff0c;会把编译的内容部署到服务器上…...

flink中使用外部定时器实现定时刷新

背景&#xff1a; 我们经常会使用到比如数据库中的配置表信息&#xff0c;而我们不希望每次都去查询db&#xff0c;那么我们就想定时把db配置表的数据定时加载到flink的本地内存中&#xff0c;那么如何实现呢&#xff1f; 外部定时器定时加载实现 1.在open函数中进行定时器的…...

Spring Cloud Pipelines 入门实践

文章目录 1. 前言2. Spring Cloud Pipelines 是做什么的2.1. 预定义的流程2.2. 集成测试和契约测试2.3.部署策略 4. Spring Cloud Pipelines的使用示例4.1. 创建一个Spring Boot应用4.2. 将代码托管到GitHub仓库4.3. 添加Spring Cloud Pipelines依赖4.4. 配置Spring Cloud Pipe…...

G1 GC详解及设置

一、概述 G1 GC&#xff0c;全称Garbage-First Garbage Collector&#xff0c;在JDK1.7中引入了G1 GC&#xff0c;从JAVA 9开始&#xff0c;G1 GC是默认的GC算法。通过-XX:UseG1GC参数来启用。G1收集器是工作在堆内不同分区上的收集器&#xff0c;分区既可以是年轻代也可以是老…...

GitHub详细教程

将代码推送到GitHub仓库涉及一系列的步骤。以下是详细的步骤说明&#xff1a; 创建一个新的仓库&#xff08;如果还没有的话&#xff09;&#xff1a; 访问 GitHub。登录您的帐户。点击页面右上角的图标&#xff0c;然后选择“New repository”。填写仓库名称、描述等信息&…...

【小沐学Python】Python实现Web图表功能(Dash)

文章目录 1、简介2、安装3、功能示例3.1 Hello World3.2 连接到数据3.3 可视化数据3.4 控件和回调3.5 设置应用的样式3.5.1 HTML and CSS3.5.2 Dash Design Kit (DDK)3.5.3 Dash Bootstrap Components3.5.4 Dash Mantine Components 4、更多示例4.1 Basic Dashboard4.2 Using C…...

【RabbitMQ】docker rabbitmq集群 docker搭建rabbitmq集群

docker rabbitmq集群 docker搭建rabbitmq集群 RabbitMQ提供了两种常用的集群模式 1.普通集群模式 2.镜像集群模式 普通集群模式只能同步主节点上的交换机和队列信息&#xff0c;但对于队列中的消息不做同步&#xff0c;主节点宕机也不能进行切换&#xff08;故障转移&#xff…...

TransPrompt:结构化提示词工程,提升LLM应用开发效率

1. 项目概述&#xff1a;当提示词工程遇上结构化工具最近在折腾大语言模型应用开发的朋友&#xff0c;估计都绕不开一个核心痛点&#xff1a;如何高效、稳定地管理那些越来越复杂、越来越长的提示词&#xff08;Prompt&#xff09;。直接写在代码里&#xff1f;改起来麻烦&…...

ViewTurbo:基于响应式依赖追踪的前端渲染优化方案

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫 ViewTurbo。这名字听起来就带点“涡轮增压”的劲儿&#xff0c;事实上&#xff0c;它也确实是一个旨在为视图渲染“加速”的工具。简单来说&#xff0c;ViewTurbo 的核心目标&#xff0c;是解决在复杂前端…...

桌面自动化技能库:基于PyAutoGUI与Selenium的工程化实践

1. 项目概述&#xff1a;一个桌面操作员的技能库最近在GitHub上看到一个挺有意思的项目&#xff0c;叫Marways7/cua_desktop_operator_skill。光看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但作为一个在自动化运维和桌面支持领域摸爬滚打多年的老手&#xff0c;我立…...

VS Code光标主题buen-cursor:提升开发者编码体验的视觉优化方案

1. 项目概述&#xff1a;一个为开发者定制的光标主题 如果你和我一样&#xff0c;每天有超过8小时的时间都泡在代码编辑器里&#xff0c;那么你一定对那个闪烁的光标再熟悉不过了。它可能是你思考的起点&#xff0c;也可能是你调试时目光的焦点。但你是否想过&#xff0c;这个…...

ASPICE汽车软件开发标准:V模型、能力等级与核心过程实战解析

1. 项目概述&#xff1a;为什么我们需要ASPICE这张“汽车软件地图”如果你在汽车行业&#xff0c;尤其是涉及软件、电子电气或系统开发的岗位待过一阵子&#xff0c;大概率会频繁听到一个词&#xff1a;ASPICE。它可能出现在项目启动会上&#xff0c;出现在供应商审核清单里&am…...

量子纠错程序的形式化验证方法与工程实践

1. 量子纠错程序验证的核心挑战量子纠错&#xff08;Quantum Error Correction, QEC&#xff09;是量子计算实现实用化的关键技术屏障。与传统经典计算不同&#xff0c;量子系统面临着更为复杂的噪声环境&#xff1a;退相干、门操作误差、测量错误等量子特异性噪声会迅速破坏脆…...

AI智能体文件管理:从零构建统一资产仓库与版本控制系统

1. 项目概述与核心价值最近在折腾AI智能体开发的朋友&#xff0c;估计没少为文件管理这事儿头疼。你辛辛苦苦训练好的模型、精心设计的提示词模板、还有那些五花八门的配置文件&#xff0c;是不是散落在各个角落&#xff0c;每次想复现或者分享都得一通乱找&#xff1f;更别提团…...

Midjourney Mud印相实战手册(含12组高保真历史文物级Mud Prompt库+对应seed校验表)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney Mud印相的技术起源与美学范式 Mud印相&#xff08;Mud Printing&#xff09;并非传统暗房工艺的直系衍生物&#xff0c;而是Midjourney V6 模型在高语义控制模式下催生的一种跨模态视觉隐喻…...

ROFL-Player:终极免费英雄联盟回放播放器解决方案

ROFL-Player&#xff1a;终极免费英雄联盟回放播放器解决方案 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player ROFL-Player是一款专门为《…...

百度网盘Mac版破解插件:免费解锁SVIP高速下载的终极指南

百度网盘Mac版破解插件&#xff1a;免费解锁SVIP高速下载的终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘Mac版的龟速下载而烦…...