在QT里使用SQLite数据库

什么是SQLite数据库?SQLite是一种轻量级的数据库管理系统,它不需要一个独立的服务器进程,可以被集成到应用程序中。SQLite是开源的,支持跨平台操作,并且使用非常广泛。在QT里如何使用SQLite数据库呢?废话不多说,下面教大家如何使用。

1.在.pro配置文件里添加 QT += sql

2.开关数据库

#include <QSqlDatabase>    //头文件
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");  //QSqlDatabase类主要用于打开和关闭数据库,不负责数据库的具体操作。增删改查它都不管。(加载sqlite驱动,使用不同的数据库加载不同的驱动即可,驱动都是qt提供好的。)

db.setHostName("testdb");//设置数据库的主机名称

db.setDatabaseName("testdb.db");//设置数据库名称,sqlite数据库以文件形式存在,所以这里是文件名

db.open();//打开数据库
db.close();//关闭数据库

3.数据库操作------创建表

对于数据库所有增删改查的操作,都使用QSqlQuery来实现。QSqlDatabase只负责加载驱动、打开关闭。

#include <QSqlQuery>    //和打开关闭数据库头文件不一样

QSqlQuery query;   //QSqlQuery类负责数据库的增删改查操作

//执行sql语句 create table user    //创建user表

示例:
query.exec("create table user("
"userid integer ,"
"password varchar(20),"
"nickname varchar(20),"
"headid integer);" );
其中userid,password,nickname,headid为字段,varchar为字符串类型,integer为整形。

4.数据库操作------插入数据

QSqlQuery query;
query.prepare("insert into user(password, nickname, headid) values(?,?,?)");

//exec只能执行固定的sql语句,如果语句中需要带一些参数,那么不能直接使用exec
//prepare可以设置一个带参数的sql语句,表示参数

//bindValue 是给prepare中sql的?绑定参数的 0代表第一个,1代表第二个,2代表第三个。

query.bindValue(0, e.password);
query.bindValue(1, e.nickname);
query.bindValue(2, e.headId);
query.exec();//执行绑定参数后的sql语句

5.数据库操作------查询数据

#include <QSqlRecord>
#include <QVariant>             //添加两个头文件
QSqlQuery query;
query.exec("select * from user");//查询所有的数据,查询成功后,所有的结果都在query对象中,以链表形式(假设)存储,所以我们要获得所有的数据需要遍历链表(链表是有空头的链表)

while(query.next())//query.next()移动到下一个节点,因为头是空的,所以第一次就跳过空头,返
回true表示有下一个节点,每个节点存放一行数据
{
        QSqlRecord record = query.record();//QSqlRecord中存放了一行的数据
        //QVariant是QT的泛型类,可以表示任何类型数据,也可以转换成任何类型数据
        QVariant userId = record.value("userid");//通过字段名获取值
        int userIdInt = userId.toInt();//将QVariant类型转换成整型
        QString name = query.record().value("nickname").toString();
        int headId = query.record().value("headid").toInt();
}

数据库查询------条件查询

QSqlQuery query;
query.prepare("select * from user where userid = ? and password = ?");
query.bindValue(0, e.id);
query.bindValue(1, e.password);
query.exec();
bool ok1 = query.exec();
if(query.next())
{//登录成功ok = true;e.nickName = query.record().value("nickname").toString();e.headId = query.record().value("headid").toInt();
}
else
{//登录失败ok = false;
}

文章到这里就分享结束了,感谢各位的观看,希望大家点点赞,点点关注,谢谢大家!

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

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

相关文章

软考高级架构师:随机函数模型

一、AI 讲解 随机函数模型是理解各种随机过程和算法的一个重要概念&#xff0c;在软件工程、算法设计以及系统分析中有着广泛的应用。简而言之&#xff0c;随机函数模型是一种用于描述具有随机性的系统或过程的数学模型&#xff0c;它能够帮助我们预测和分析在不确定性下的系统…

吴恩达2022机器学习专项课程(一) 5.5 特征缩放1 5.6 特征缩放2

问题预览/关键词 什么是特征缩放&#xff1f;作用是什么&#xff1f;特征尺度和参数w权重的关系是&#xff1f;算法为什么要调节w权重&#xff1f;不进行特征缩放对梯度下降的影响&#xff1f;有特征缩放对梯度下降的影响&#xff1f;实现特征缩放的三种方法是&#xff1f;如何…

JetBrains IntelliJ IDEA 2024.1 发布 - 领先的 Java 和 Kotlin IDE

JetBrains IntelliJ IDEA 2024.1 发布 - 领先的 Java 和 Kotlin IDE 请访问原文链接&#xff1a;JetBrains IntelliJ IDEA 2024.1 (macOS, Linux, Windows) - 领先的 Java 和 Kotlin IDE&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;s…

sqlmap一些常用命令

仅供交流学习使用&#xff0c;请勿用于非法用途 1&#xff09;检测url存在漏洞情况&#xff1a;python sqlmap.py -u "http://192.168.88.128/sqli-labs-master/Less-1/?id1" 2&#xff09;获取所有数据库名称&#xff1a;python sqlmap.py -u "http://192.168…

达梦数据库导入导出工具dmfldr

达梦数据库导入导出工具dmfldr 基础信息 OS版本&#xff1a; Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a; DM Database Server 64 V8 DB Version: 0x7000c 03134284132-20240115-215128-200811 dmfldr工具介绍 dmfldr&#xff08;DM Fast Loade…

大厂Java笔试题之统计兔子出生问题

题目&#xff1a;有一种兔子&#xff0c;从出生后第3个月起每个月都生一只兔子&#xff0c;小兔子长到第三个月后每个月又生一只兔子。 例子&#xff1a;假设一只兔子第3个月出生&#xff0c;那么它第5个月开始会每个月生一只兔子。 一月的时候有一只兔子&#xff0c;假如兔子…

ip addr和ifconfig区别

ip addr和ifconfig都是用于配置和管理网络接口的工具 1. ifconfig ifconfig是较旧的网络配置工具&#xff0c;属于net-tools套件的一部分。 该命令主要用于配置、显示和控制网络接口的参数&#xff0c;如IP地址、子网掩码、广播地址等。 ifconfig命令的功能相对有限&#xff…

设计模式之责任链讲解

责任链模式适用于需要将请求和处理解耦的场景&#xff0c;同时又需要动态地组织处理逻辑的场景。 通过使用责任链模式&#xff0c;可以实现请求的动态处理、灵活的扩展和简化的代码编写&#xff0c;提高系统的可维护性和可扩展性。 一、责任链入门 以下这是GPT生成的责任链代…

(三)PostgreSQL的pg_ctl命令

PostgreSQL的pg_ctl命令 pg_ctl 是 PostgreSQL 用于控制数据库服务器进程的命令行工具。它提供了启动、停止、重启数据库服务器以及管理其运行状态的手段。pg_ctl 命令尤其适用于从命令行或脚本中管理 PostgreSQL 服务&#xff0c;而不是通过操作系统的服务控制管理器。 基础…

css 太极图案例带来的收获

基础知识 渐变&#xff1a;gradient 在两个或者多个颜色之间显示平稳过度。由浏览器生成。 线性渐变&#xff1a;line-gradient(过渡方向&#xff0c;初始颜色&#xff0c;结束颜色)。注意过渡方向默认从上到下。 1、支持多颜色渐变&#xff0c;多个值&#xff0c;就是从多个…

Springboot整合物联网IOT的MQTT协议

准备工作 (下载EMQX服务端&#xff0c;相关客户端工具) 1. 服务端工具&#xff1a; https://www.emqx.io/downloads?osWindows 2. 客户端工具&#xff1a; https://mqttx.app/zh#download <!--web依赖--><dependency><groupId>org.springframework.boot…

UnityShader学习计划

1.安装ShaderlabVS,vs的语法提示 2. 常规颜色是fixed 3.FrameDebugger调试查看draw的某一帧的全部信息&#xff0c;能看到变量参数的值

架构设计-权限系统之权限系统设计

系统设计权限系统 权限管控可以通俗的理解为权力限制&#xff0c;即不同的人由于拥有不同权力&#xff0c;他所看到的、能使用的可能不一样。对应到一个应用系统&#xff0c;其实就是一个用户可能拥有不同的数据权限&#xff08;看到的&#xff09;和操作权限&#xff08;使用…

前 5 名 iPhone 数据恢复软件评测

如今&#xff0c;我们似乎将整个生活都放在手机和移动设备上。他们用许多照片、备忘录、日历日期等记录了我们的生活&#xff0c;我们总是假设这些信息在我们需要时随时可以访问。但是&#xff0c;有许多情况会导致iPhone上的数据丢失&#xff0c;例如iPhone被盗&#xff0c;损…

JVM垃圾回收(GC)

目录 目录 1.GC 简介 1.1. 引言 1.2. 何为 GC 1.2.1. 手动 GC 1.2.2. 自动 GC 引用计数法 标记清除 2.GC入门分析 2.1.碎片整理 1)对象创建时&#xff0c;执行写入操作越来越耗时 2&#xff09;内存分配错误 2.2. 分代设想 2.3. 对象分配 对象内存分配过程 2.4. …

数据中心可视化平台:有效提升运维效率与管理水平

随着企业信息化建设的不断深入&#xff0c;数据中心作为支撑企业核心业务的重要基石&#xff0c;其运维管理的复杂性和挑战性也日益凸显。为了提升数据中心机房的管理水平和效率&#xff0c;实现精细化、专业化、规范化和自动化管理&#xff0c;构建数据中心可视化平台成为了一…

【鸿蒙开发】第二十章 Camera相机服务

1 简介 开发者通过调用Camera Kit(相机服务)提供的接口可以开发相机应用&#xff0c;应用通过访问和操作相机硬件&#xff0c;实现基础操作&#xff0c;如预览、拍照和录像&#xff1b;还可以通过接口组合完成更多操作&#xff0c;如控制闪光灯和曝光时间、对焦或调焦等。 2 …

RHCSA 模拟题(4)

请查阅1&#xff1a;RHCSA 模拟题-CSDN博客 请查阅2&#xff1a;RHCSA 模拟题&#xff08;2&#xff09;-CSDN博客 请查阅3&#xff1a;RHCSA 模拟题&#xff08;3&#xff09;-CSDN博客 在node2.example.com上执行以下任务 一、设置root密码 1、重启系统 2、将光标移动到…

《青少年成长管理2024》050 “成长目标:寻找世界的入口”1/2

《青少年成长管理2024》050 “成长目标&#xff1a;寻找世界的入口”1/2 一、蛋壳理论二、正向认知三、逆向认知。四、双向认知。 本节摘要&#xff1a;青少年在建立成长目标之前&#xff0c;需要具备一定的前提&#xff0c;就像寻找一个宝藏&#xff0c;要先找到一个入口&…

dijkstra + dp,PTA 天梯赛练习集L2-001 紧急救援

一、题目 1、题目描述 作为一个城市的应急救援队伍的负责人&#xff0c;你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候&#xf…