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函数