回调函数的格式以下:sql
int sqlite_callback(数组
void* pv, /* 由 sqlite3_exec() 的第四个参数传递而来 */函数
int argc, /* 表的列数 */spa
char** argv, /* 指向查询结果的指针数组, 能够由 sqlite3_column_text() 获得 */指针
char** col /* 指向表头名的指针数组, 能够由 sqlite3_column_name() 获得 */sqlite
);字符串
参数格式:回调函数
传给sqlite3_exec的回调函数,用来显示查询结果it
对每一条查询结果调用一次该回调函数数据类型
参数:
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]);
}