1. SQLite相关命令
.tables
:查看数据库中的表.headers on/off
:开启或关闭表头显示.mode column
:设置输出模式为列对齐.width 列宽1 列宽2
:这个命令实际上是.width 列名1 列宽1 列名2 列宽2
,用于设置特定列的宽度.schema 表名
:查看表的结构
2. SQLite的SQL语句
基本数据类型
INTEGER
:整形REAL
:浮点型TEXT
:文本类型,字符串NULL
:空- SQL 操作
- 创建表:
CREATE TABLE 表名 (列名1 数据类型, 列名2 数据类型, ...);
- 插入数据:
INSERT INTO 表名 VALUES (值1, 值2, ...);
或INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);
- 查询:
SELECT 列名1, 列名2 FROM 表名;
SELECT * FROM 表名;
- 条件查找:
SELECT * FROM 表名 WHERE 列名 关系运算符 值;
- 模糊匹配:
SELECT * FROM 表名 WHERE 列名 LIKE '内容%';
- 排序:
- 升序:
SELECT * FROM 表名 ORDER BY 列名 ASC;
- 降序:
SELECT * FROM 表名 ORDER BY 列名 DESC;
- 升序:
- 删除数据 (注意这里是删除数据行,不是列):
DELETE FROM 表名 WHERE 列名 关系运算符 值;
- 删除表:
DROP TABLE 表名;
- 修改数据:
UPDATE 表名 SET 列名 = 新值 WHERE 列名 = 条件值;
- 设置主键值自动增长:确保主键列是
INTEGER PRIMARY KEY AUTOINCREMENT
- 多表联查:使用
INNER JOIN
、LEFT OUTER JOIN
等
3. SQLite3提供的C/C++ API接口
sqlite3_open
:打开(或创建)数据库- const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
); - 功能:打开数据库,如果不存在,则创建
- 参数:
- filename : 数据库名称
- ppDb :保存数据库句柄的地址
返回值:
成功:SQLITE_OK
失败:错误码 sqlite3_exec
:执行SQL语句-
int sqlite3_exec(
sqlite3*pdb, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
void *arg, /* 1st argument to callback */
char **errmsg /* Error msg written here */
);
功能:执行sql语句
参数:
pdb : 数据库句柄
sql : 要执行的sql语句的首地址
callback : 当执行select语句时,使用到
arg:当执行select语句时,使用到,传递给回调函数的第一个参数
errmsg :存储错误信息的地址
返回值:
成功:SQLITE_OK
失败:错误码 -
callback函数
-
int (*callback)(void*,int column_cnt,char**column_value,char**column_name),
int callback(void* arg, int , char **, char **);
功能:在使用sqlite3_exec执行select语句时, 每查找到一条数据,则调用一次回调
参数:
arg : sqlite3_exec传递的第4个参数
column_cnt: 查找到的数据的列数
column_value: 查找到的一行数据的每一列值的地址的集合
column_name:查找到的一行数据的每一列列名的地址的集合
返回值:
0
注意:1.每找到一行,回调被触发一次
- 回调函数必须返回0;
-