sqlite3命令行运行与C语言API调用比较2

关于查询功能


命令行查询功能比较简单

就是用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 查询语句 */
);

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值