【发布时间】:2017-10-26 07:58:17
【问题描述】:
我的 sqlite 函数看起来像这样。
static int callback(void *not_used, int row_num, char **row, char **col_name)
{
for(int i = 0; i < row_num; ++i)
{
printf("%s = %s\n", col_name[i], row[i] ? row[i] : "NULL");
}
return 0;
}
int query(const char *statement)
{
result = sqlite3_exec(database, statement, callback, 0, &message);
if(result != SQLITE_OK)
{
print_error(sqlite3_errmsg(database));
}
return result;
}
但我的查询不显示任何值。 sql查询有区分大小写错误
"select * from app_list where name='evince'" // it should be Evince
如果有人更改我的代码以返回一个空集 犯了这样的错误(我应该修改回调或查询哪个部分)
我尝试改变回调
if(row_num >0)
{
for() ...
}
else
{
printf("Empty set\n");
}
但永远不会执行 else。
即使我犯了区分大小写错误,sqlite3_exec() 也会返回 SQLITE_OK。
【问题讨论】:
-
计算返回的行数。事后检查。使用光标界面会更好。