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

sqlite数据库操作

第一章 基础知识

        数据库用来存储和管理数据,数据库是用于对数据进行存储和管理的专门软件,使得管理的数据更加安全,方便和高效。数据库对数据管理往往是通过表(table)来实现的

1. 常见的数据库

大型数据库(大型机) ------------ Oracle(亿级)

中型数据库(分布式超大型) ------- mysql(百万级....)

轻型数据库(嵌入式设备) ------ sqlite(万级) 也是一个轻量级关系型数据库

第二章 配置环境

1. windows下载

https://www.sqlite.org/2024/sqlite-dll-win-x64-3450300.zip

 https://www.sqlite.org/2024/sqlite-tools-win-x64-3450300.zip

 

说明一下: 

  • 第一个是:安装dll,c语言操作它要用 
  • 第二个是:客户端工具

解压第二个压缩包

 

然后再配置环境变量 

 

2. 测试sqlite数据库

打开一个数据库:sqlite3 数据库文件名

 

 创建一张表:create table 表名(字段名1 类型,字段名2 类型 ....)

 

 添加一个数据:insert into 表名(列名) values(值)

 

查看数据: select * from 表名

 

 退出数据库:.quit

 

 

 3. 使用Navicat链接sqlite数据库

 第三章 QT操作sqlite-面向sql

        Qt环境继承了数据库访问的接口,也自带数据库sqlite,同时还提供了各种操作数据库的类,可以通过这些类来访问和操作数据库

1. QSqlDatabase数据库驱动类&&sql添加模块

QT += sql

 

2. addDatabase添加数据库驱动

 

addDatabase函数说明:

  • 第一个参数为:要传入数据库的类型,比如使用sqlite传入"QSQLITE"
  • 第二参数为:链接名,如果不传,会有个默认链接名
  • 返回值是:数据库类型对象

3. setDatabaseName设置数据库文件的路径

 setDatabaseName函数说明:

  • 传入数据库文件路径,必须添加数据库驱动后才能调用该函数  

 4. open打开数据库

 

5. exec发生sql请求

创建表 

    // 创建表QString createTableQuery ="CREATE TABLE IF NOT EXISTS t_student (""id INTEGER PRIMARY KEY AUTOINCREMENT, ""name TEXT NOT NULL, ""age INTEGER NOT NULL);";QSqlQuery query(database);// 指明一下数据库if(!query.exec(createTableQuery)){qDebug()<<"create table error!";}

 插入数据

    // 插入数据query.exec("insert into t_student(id,name,age) values(1,'zs',18)");query.exec("insert into t_student(id,name,age) values(2,'ls',19)");

查看表中数据

    query.exec("select * from t_student");while(query.next()){int id = query.value(0).toInt();QString name = query.value(1).toString();int age = query.value(2).toInt();qDebug()<< id << "--" << name << "--" << age;}

 说明一下:

  • QSqlQuery中的next表示提取一行数据
  • query.value(0)表示这行的第一个数据

6. close关闭数据库

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//1 加载驱动//可以用它操作mysql这些,但是现在是qsqliteQSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE");//2 设置数据库文件名database.setDatabaseName("C:\\Users\\46285\\Desktop\\qt_code\\sqlite_db\\tmp_db");//3 打开数据库bool result = database.open();if(!result){qDebug()<<"open database error!";}// 创建表QString createTableQuery ="CREATE TABLE IF NOT EXISTS t_student (""id INTEGER PRIMARY KEY AUTOINCREMENT, ""name TEXT NOT NULL, ""age INTEGER NOT NULL);";QSqlQuery query(database);// 指明一下数据库if(!query.exec(createTableQuery)){qDebug()<<"create table error!";}// 插入数据query.exec("insert into t_student(id,name,age) values(1,'zs',18)");query.exec("insert into t_student(id,name,age) values(2,'ls',19)");// 查看数据query.exec("select * from t_student");//5 关闭数据库database.close();
}

 7. 防止sql注入漏洞

prepare函数 &&  addBindValue函数

相关文章:

  • python+open3d选择点云上的某个点并获取其对应三维坐标
  • 深入理解 Pinia:从基础到进阶的完整指南
  • 如何看待首个通用型智能体 (The First General AI Agent) Manus发布?
  • PyTorch 中如何针对 GPU 和 TPU 使用不同的处理方式
  • 在vue里,使用dayjs格式化时间并实现日期时间的实时更新
  • 在 Vue 2 中使用 qrcode 库生成二维码
  • Baklib打造AI就绪型知识管理引擎
  • Android Studio开发安卓app 设置开机自启
  • github+ Picgo+typora
  • AI 实践探索:辅助生成测试用例
  • Redis 集群版本升级指南:从 Redis 7 升级到 Redis 8
  • Linux内核初始化机制全解析:从pure_initcall到late_initcall
  • Java高频面试之并发编程-13
  • Go语言八股之并发详解
  • 七彩喜微高压氧舱:探索健康与康复的新维度
  • Linux 内核学习(6) --- Linux 内核基础知识
  • Advanced Installer 22.5打包windows 安装包
  • 【Bluedroid】 HID 设备应用注册与主机服务禁用流程源码解析
  • 【Mybatis-plus常用语法】
  • 实验六 基于Python的数字图像压缩算法
  • 美国再工业化进程需要中国的产业支持
  • 泰特现代美术馆25年:那些瞬间,让艺术面向所有人
  • 明查|哈佛大学批改美教育部长来信,红笔标出语法错误?
  • 纪念|古文字学泰斗裘锡圭:“还有很多事情要做”
  • 北上广深均宣布下调个人住房公积金贷款利率
  • 美联储连续第三次维持利率不变,警示关税影响