c++ sqlite3 求select回调函数的详细讲解,希望代码格式清晰点谢谢

 我来答
百度网友4091af4
2016-12-17 · 超过24用户采纳过TA的回答
知道答主
回答量:42
采纳率:100%
帮助的人:20.7万
展开全部

官方文献:

函数原型:

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;
  }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式