QT 中 SQLite 使用方法

news/2024/11/28 16:35:48/

一、pro文件中包含:

QT       += ... sql

二、SQLite 使用要包含的头文件:

#include <QSqlDatabase> // 数据库驱动
#include <QSqlQuery> // 数据库执行语句
#include <QSqlError> // 数据库日志

三、数据库创建

QSqlDatabase database; // 建立了一个QSqlDatabase对象QSqlDatabase::contains(connection name); // 查看对应连接是否存在(true/false)database = QSqlDatabase::database(connection name); // 返回对应连接QSqlDatabase::addDatabase("QSQLITE", connection name); // 创建连接并添加数据库database.setDatabaseName("MyDataBase.db"); // 指定数据库名称database.setUserName(id); // 设置用户名(可不要)database.setPassword(pwd); // 设置密码(可不要)database.open(); // 使用open()打开数据库database.close(); // 使用close()关闭数据库

四、数据库使用

1、创建

        创建数据库方法:create table <table_name> (f1 type1, f2 type2,…);

        基本格式:

QSqlQuery sqlQuery; // 定义 QSqlQuery 对象QString createsql = "数据库操作语句"; // 数据库执行语句sqlQuery.prepare(createsql); // 将语句保存到 sqlQuery 中sqlQuery.exec() // 执行该语句  或者可以直接写成 sqlQuery.exec(createsql)

        例如创建一个students表,标题分别为id、name、score、class:

query.exec("CREATE TABLE students (""id INTEGER PRIMARY KEY AUTOINCREMENT, ""name VARCHAR(40) NOT NULL, "" score INTEGER NOT NULL, ""class VARCHAR(40) NOT NULL)");

AUTOINCREMENT:表示该列为整数递增,如果为空时则自动填入1,然后在下面的每一行都会自动+1,

PRIMARY KEY:则表示该列作为列表的主键,通过它可以轻易地获取某一行数据

INTEGER:表示该列为带符号的整数

VARCHAR(40):表示该列为可变长字符串,默认只能存储英文和数字或者utf-8,最多存储40个字节.

NOT NULL:表示该列的内容不为空

2、插入

        插入语句:insert into <table_name> (table1, table2,…) values (value1, value2,…);

        插入数据的三种格式:

// 1
QString insert_sql = "insert into student (id, name, age) values (3, \"Wang\", 25)";
sql_query.exec(insert_sql);// 2
QString insert_sql = QString("INSERT INTO student VALUES ('%1', '%2', '%3')").arg(3).arg(Wang).arg(25);
sql_query.exec(insert_sql);// 3
QString insert_sql = QString("INSERT INTO student VALUES (:id :name :age)");
sql_query.bindValue(":id",3); // 使用后面的内容对前面“”中的内容进行替换
sql_query.bindValue(":name","Wang");
sql_query.bindValue(":age",25);
query.exec();

3、查询

        查询语句:select , , … from <table_name>;

        查询格式:

QString select_sql = "select id, name from student";
if(!sql_query.exec(select_sql))
{qDebug()<<sql_query.lastError();
}
else
{while(sql_query.next()){int id = sql_query.value(0).toInt();QString name = sql_query.value(1).toString();qDebug()<<QString("id:%1    name:%2").arg(id).arg(name);}
}

        查询某一范围:

// 查询成绩在60~80之间的数据
select * from students where score >= 60 and score <= 80

        查询指定信息:

// 查询用户名和密码是否存在
QString sql=QString("select * from user where username='%1' and password='%2'").arg(username).arg(password);

        查询指定字符:

// GLOB表示通配符,匹配班级带有"3-3"的名字
SELECT * FROM students WHERE class GLOB '*3-3*'

4、删除

        删除语句:delete from <table_name> where =

        删除格式:

QString delete_sql = "delete from student where id = ?";
sql_query.prepare(delete_sql);
sql_query.addBindValue(0);
if(!sql_query.exec())
{qDebug()<<sql_query.lastError();
}
else
{qDebug()<<"deleted!";
}query.exec("DELETE FROM students"); // 删除students表里所有内容


http://www.ppmy.cn/news/1550668.html

相关文章

【CLIP】2: semantic-text2image-search前后端调试

添加了详细的调试信息,包括当前处理的图片、向量化结果,以及插入到集合中的数据详情。调试信息可以帮助你在运行过程中清楚地了解数据的处理情况。调试建议 向量维度和内容:通过打印向量的长度和部分内容,可以检查向量化过程是否正常。处理失败时的日志:捕获异常时记录具体…

LeetCode 3243. Shortest Distance After Road Addition Queries I

&#x1f517; https://leetcode.com/problems/shortest-distance-after-road-addition-queries-i 题目 有 n 个城市&#xff0c;编号 0 ~ n-1&#xff0c;从城市 i 到 i1 有一条路给若干高速路&#xff0c;表明从城市 u 到 v 有一条新增的路&#xff0c;v - u > 1返回每新…

泷羽sec学习打卡-shell命令2

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于shell的那些事儿-shell2 临时变量和永久变量为什么使用ls、dir命令可以输出一些内容呢&#xff1f;如…

Milvus实操

概念 Milvus 关键概念优化笔记 Milvus 是一个高性能、可扩展的开源向量数据库&#xff0c;专为处理海量向量数据和执行相似性搜索而设计。以下是 Milvus 中的一些核心概念及其详细解释。 1. 集合&#xff08;Collection&#xff09; 定义&#xff1a; 集合是 Milvus 中存储向…

如何分析Windows防火墙日志

Windows防火墙&#xff0c;也被称为Windows Defender Firewall&#xff0c;是一种内置的安全功能&#xff0c;可以主动监控和分析运行Windows操作系统的计算机上通过Windows防火墙的网络流量&#xff0c;主要目的是作为计算机和互联网或其他网络之间的屏障&#xff0c;使管理员…

python计算stable-diffusion-1.5模型参数量以及该模型每一层网络的参数量【其他LLM模型也有参考意义】

最近在计算stable-diffusion-1.5模型参数量上花了点心思&#xff0c;总结了一些方法&#xff0c;一起学习&#xff1a; stable-diffusion-1.5模型结构 首先stable-diffusion-1.5模型主要有三个关键组件&#xff08;text_encoder,unet,vae&#xff09;&#xff0c;关于stable-…

【NLP 2、机器学习简介】

人生的苦难不过伏尔加河上的纤夫 —— 24.11.27 一、机器学习起源 机器学习的本质 —— 找规律 通过一定量的训练样本找到这些数据样本中所蕴含的规律 规律愈发复杂&#xff0c;机器学习就是在其中找到这些的规律&#xff0c;挖掘规律建立一个公式&#xff0c;导致对陌生的数…

Spring Boot整合Redis Stack构建本地向量数据库相似性查询

Spring Boot整合Redis Stack构建本地向量数据库相似性查询 在微服务架构中&#xff0c;数据的高效存储与快速查询是至关重要的。Redis作为一个高性能的内存数据结构存储系统&#xff0c;不仅可以用作缓存、消息代理&#xff0c;还可以扩展为向量数据库&#xff0c;实现高效的相…