回調函數的格式以下: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]);
}