关于查询功能
命令行查询功能比较简单
就是用select命令,如下:
select指令基本格式:
select columns from table_name [where expression];
1 查询输出所有数据记录
select * from table_name;
2 限制输出数据记录数量
select * from table_name limit val;
3 升序输出数据记录
select * from table_name order by field asc;
4 降序输出数据记录
select * from table_name order by field desc;
5 条件查询
select * from table_name where expression;
select * from table_name where field in ('val1', 'val2', 'val3');
select * from table_name where field between val1 and val2;
6 查询记录数目
select count (*) from table_name;
7 区分列数据
select distinct field from table_name;
有一些字段的值可能会重复出现,distinct去掉重复项。将列中各字段值分别列出。
而在API中则有多种调用函数
1 最常见的是用sqlite3_exec然后依靠回调函数callback查询表。
使用过程中需要注意,callback与exec的通信是单向的。即,exec函数的第四个参数作为向callback函数传递的指针,其指向的值若在callback发生改变不会反馈到exec的函数体中。
2 API也提供了其他查询接口:
sqlite3_get_table()函数用于查询结果,并将结果以二维数据的形式返回。
sqlite3_free_table()函数用于释放查询结果所占用的内存。
函数声明如下:
int sqlite3_get_table(
sqlite3* db, // 打开数据库的连接对象
const char *sql, // 要执行的SQL查询语句
char ***resultp, // 用于存储结果的二维数组
int *nrow, // 存储结果行数的指针
int *ncolumn, // 存储结果列数的指针
char **errmsg // 用于存储错误信息的指针
);
void sqlite3_free_table(char **result);
3 此外还有,sqlite_prepare_v2函数用于将SQL查询语句编译成SQLite程序,各参数含义如下:
db:数据库句柄
zaql:SQL查询语句
nByte:zSql查询语句中将要使用的字节数,如果设置为-1,则SQLite将自动计算zSql的长度
ppStmt:是一个指向指针的指针,用于存储编译后生成的SQL程序句柄
pzTail:是一个指向指针的指针,用于存储未编译的部分SQL查询语句
int sqlite3_prepare_v2(
sqlite3 *db, /* 数据库句柄 */
const char *zSql, /* SQL 查询语句 */
int nByte, /* 将要使用的字节数 */
sqlite3_stmt **ppStmt, /* 编译后生成的 SQL 程序句柄 */
const char **pzTail /* 未编译部分的 SQL 查询语句 */
);