简介
- SQLite3只是一个轻型的嵌入式数据库引擎,占用资源非常低,处理速度比Mysql还快,专门用于移动设备上进行适量的数据存取,它只是一个文件,不需要服务器进程。
- SQL语句是SQL操作的指令,我们用C/C++访问数据库时,需要用char*即C字符串来保存SQL语句,然后调用相应sqlite3库的函数,传入C字符串,来执行SQL指令。
- 常用术语:表(table)、字段(column,列,属性)、记录(row,record)。
SQL(structured query language)语句
- 特点:不区分大小写,每条语句后加";"结尾。
- 关键字:select、insert、update、delete、from、creat、where、desc、order、by、group、table、alter、view、index等,数据库中不能使用关键字命名表和字段。
数据定义语句(DDL:Data Definition Language)
新建表 ? create:
create table 表名 (字段名1 字段类型1,字段名2 字段类型2,。。。);
create table if not exists 表名 (字段名1 字段类型1,字段名2 字段类型2,。。。);
CREATE TABLE IF NOT EXISTS t_person (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL);
删除表 ? drop:
dorp table 表名;
drop table if exists 表名;
DROP TABLE IF EXISTS t_person;
数据操作语句(DML:Data Manipulation language)
添加表中的数据 ? insert:
insert into 表名 (字段1,字段2,。。。) values (字段1的值,字段2的值);字符串内容用单引号。
INSERT INTO t_person (name, age) VALUES ('大明', 22);
修改表中的数据 ? update:
update 表名 set 字段1 = 字段1的值,字段2 = 字段2的值,。。。;
UPDATE t_person SET name = '小明', age = 10;
UPDATE t_person SET age = 12 WHERE name = '小明';
删除表中的数据 ? delete:
delete from 表名;delete from 表名 where 字段 = 字段值。
DELETE FROM t_person;
DELETE FROM t_person WHERE age = 25;
DELETE FROM t_person WHERE age > 12 AND age < 15;
数据查询语句(DQL:Data Query Language)
select:
select 字段1, 字段2, 。。。 from 表名;
select 字段1, 字段2, 。。。 from 表名 where 字段 = 某值;
select * from 表名;(查询所有的字段)
表别名:select 字段1 别名, 字段2 别名,。。。from 表名 别名;
select 字段1 别名, 字段2 as 别名,。。。from 表名 as 别名;select 别名.字段1,别名.字段2,。。。from 表名 别名;
SELECT name, age FROM t_person WHERE age < 80;
SELECT name, age nianling FROM t_person ren WHERE ren.age > 80 AND nianling < 90;
C/C++上使用SQLite3
环境
- 配置好C/C++项目环境:导入sqlite3.lib和sqlite3.dll,包含头文件#include <sqlite3.h>。
打开或创建数据库
sqlite3 *sql = NULL;
const char * path = "..../test.db";
int result = sqlite3_open_v2(path, &sql, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX | SQLITE_OPEN_SHAREDCACHE, NULL);
if (result == SQLITE_OK) {
std::clog << "打开数据库连接成功";
}
else {
std::clog << "打开数据库连接失败";
}
关闭数据库 sqlite3_close_v2(sqlite3* sql)
if (sql) {
sqlite3_close_v2(sql);
sql = nullptr;
}
参考
C++ SQLite的使用总结
|