【发布时间】:2015-09-10 20:40:48
【问题描述】:
互联网上有上百万个示例详细说明了使用 sqlite3_exec 从表中选择行并使用此回调函数打印它们:
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;
}
这是实现callback的代码:
[...]
rc = sqlite3_exec(db, sql, callback, &nrecs, &zErrMsg);
[...]
现在,我假设将获取的数据用于打印以外的其他用途将是一个相当标准的场景,但对于我的生活,我无法找到应该如何实现这一点。
我想要做的是获取包含两列的一行(argc 将是 1),并让这两个值(argv[0] 和 argv[1])可从执行 sqlite3_exec 的位置访问。
我想这与void *NotUsed 有关。 (这到底是什么指针,为什么所有示例都坚持不使用它?)
如果有人可以帮助我解决这个问题,我将不胜感激。如果你也可以向我解释为什么这个看似微不足道的任务会变得如此复杂,你会得到我不朽的爱。 (获取的数据在从另一个函数调用的静态函数中处理。这实际上扼杀了使用面向对象语言的目的,对吧?)
【问题讨论】: