在 SQLite3 中使用回调函数

回调函数的格式如下:

int sqlite_callback(

    void* pv,    /* sqlite3_exec() 的第四个参数传递而来 */

    int argc,        /* 表的列数 */

    char** argv,    /* 指向查询结果的指针数组, 可以由 sqlite3_column_text() 得到 */

    char** col        /* 指向表头名的指针数组, 可以由 sqlite3_column_name() 得到 */

);


参数格式:

    传给sqlite3_exec的回调函数,用来显示查询结果

    对每一条查询结果调用一次该回调函数

参数:

    pv:sqlite3_exec传递的初始化参数

    argc:表头的列数

    col:表头的名字数组指针

    argv:表头的数据数组指针

返回值:

    1:中断查找

    0:继续列举查询到的数据

示例表:

+-----------------------------------+

|  id  |  pic   |  data(16进制数据)  |

|-----------------------------------|

|   1  |  a.jpg |      00 00 00 ... |

|-----------------------------------|

|   2  |  b.jpg |     XX XX XX      |

+-----------------------------------+

对第一行数据:

    argc=3 [0]...[2]

    argv[0]="1",argv[1]="a.jpg",argv[2]="00 00 00..."(实际16进制数据,非这里显示的字符串形式)

    col[0]="id",col[1]="pic",col[2]="data"

 

说明:

    sqlite3_exec() 的回调函数必须按照此格式, 当然形参的名字任意.

    如果某列的数据类型不是char*, 则可以对结果执行相关的转换, :atoi()把结果转换为整数(integer), 如果是二进制数据, 则可以直接强制类型转换, :(void*)argv[i].

    该回调函数有两种返回值类型.

        1.返回零:sqlite3_exec() 将继续执行查询.

        2.返回非零:sqlite3_exec()将立即中断查询, sqlite3_exec() 将返回 SQLITE_ABORT.

示例:

    int i;

    for(i=0; i<argc; i++)

    {

        printf("%s\t%s\n\n", col[i], argv[i]);

    }


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。