c++ sqlite3 求select回调函数的详细讲解,希望代码格式清晰点谢谢
1个回答
展开全部
官方文献:
函数原型:
int sqlite3_exec(
sqlite3*, /*已经打开的数据库 */
const char *sql, /* SQL语句 */
int (*callback)(void*,int,char**,char**), /*回调函数 */
void *, /* 传递给回调函数的参数(指针) */
char **errmsg /* 错误信息 */
);
/*回调函数原型
第一个参数void*就是上面调用sqlite3_exec时的第4个参数
第二个int参数是返回结果的columns大小(number of columns in the result)
第三个参数char**是存储结果的字符串数组(array of pointers to strings obtained)
第四个参数也是字符串数组,存储columns name
*/
下面是官网给的例子
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
int i;
for(i=0; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
int main(int argc, char **argv){
sqlite3 *db;
char *zErrMsg = 0;
int rc;
if( argc!=3 ){
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
return(1);
}
rc = sqlite3_open(argv[1], &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return(1);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询