回調函數的格式如下: 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