在 SQLite3 中使用回調函數

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

    }

相關文章
相關標籤/搜索