1. 数据库
1.1 sqlite3 软件本身命令
学习如何操作数据库 --- sql语句 (structure query language)
1.2 创建一个数据库
命令:
- $sqlite3 数据文件名 //stu.db (database --数据库 以 .db作为结尾)
- .databases //查看当前数据库关联的文件名
1.3 数据库操作
1.3.1 创建一张表
create table 表名称 (列名称 1 数据类型, 列名称 2 数据类型, 列名称 3 数据类型, ...);
eg: create table stu (name text,age int, score float);
sqlite3的命令:
查看表 .tables
查看表的结构 .schema
1.3.2 插入数据
给一行中的所有列赋值。
语法:
insert into 表名 values (列值 1, 列值 2, 列值 3,列值 4, ...);
eg:
insert into stu values("xiaoMing",18,99.5);
1.3.3 查询语句
用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。
1.3.3.1 select * from 表名 [匹配条件];
eg: select * from stu;
1.3.3.2 select 列名 1[, 列名 2, ...] from 表名 [匹配条件];
提示:星号(*)是选取所有列的通配符。
sqlite3命令:
.headers on //打开表头
.mode column //以固定的列宽呈现
1.3.3.3 like
用于模糊查找,匹配条件语法:
where 列名 like 列值
- 1、若列值为数字
相当于 列名=列值。 - 2、若列值为字符串
可以用通配符"%"代表缺少的字符(若干个)
2. 编程使用
思路 --- 类似操作文件
- 打开
- 读写
- 关闭
2.1 sqlite3_exec 函数:
int sqlite3_exec(sqlite3 *db,
const char *sql,
exechandler_t callback,
void *arg,
char **errmsg);
功能:
执行 sql 指向的 SQL 语句,
若结果集不为空,函数会调用函数指针 callback 所指向的函数。
参数:
- @db: 数据库的标识。
- @sql: SQL 语句(一条或多条),以';'结尾。
- @callback:是回调函数指针,当select这条语句执行之后,sqlite3 会去调用你提供的这个函数。
- @arg: 当执行 sqlite3_exec 的时候传递给回调函数的参数。
- @errmsg:记录sqlite3_exec的错误信息
返回值:
- 成功 SQLITE_OK
- 失败 非SQLITE_OK
2.1.1 回调函数指针
typedef int callback (void *para,
int n_column,
char **column_value,
char **column_name
);
功能:此函数由用户定义,当 sqlite3_exec 函数执行 sql 语句后,结果集不为空时sqlite3_exec 函数会自动调用此函数,每次调用此函数时会把结果集的一行信息传给此函数。
参数:
- @para: sqlite3_exec 传给此函数的参数,para 为任意数据类型的地址。
- @n_column: 结果集的列数。
- @column_value:指针数组的地址,其存放一行信息中各个列值的首地址。
- @column_name:指针数组的地址,其存放一行信息中各个列值对应列名的首地址。
返回值:
若为非0 值,则通知 sqlite3_exec 终止回调
2.2 sqlite3_get_table 函数

int sqlite3_get_table(sqlite3 *db,
const char *sql,
char ***resultp,
int *nrow,
int *ncolumn,
char **errmsg
);
功能:
执行 sql 指向的 SQL 语句,函数将结果集相关的数据的地址保存在函数的参数中。
参数:
- @db:数据库的标识。
- @sql:SQL 语句(一条或多条),以';'结尾。
- @resultp:指针数组的地址,其记录了结果集的数据。
- @nrow:结果集的行数(不包含列名)。
- @ncolumn:结果集的列数。
- @errmsg:错误信息。
2.3 sqlite3_free_table 函数
void sqlite3_free_table(char **resultp);
功能:
释放 sqlite3_get_table 分配的内存。
参数:
结果集数据的首地址。