在 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]);
    }

女孩不哭(QQ:191035066)@2012-05-29 13:13:48 @ http://www.cnblogs.com/nbsofer


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM