【发布时间】:2011-05-29 16:27:00
【问题描述】:
我正在对 sqlite3 数据库执行 SELECT 语句。当结果应该是表中的第一行时,返回值始终是 SQLITE_DONE 而不是 SQLITE_ROW,我无法得到结果。
do {
ret.error = sqlite3_step(stmt);
debug("error: %d",ret.error);
if(ret.error == SQLITE_ROW)
{
[...]
} } while(ret.error != SQLITE_ERROR && ret.error != SQLITE_DONE &&
ret.error != SQLITE_MISUSE);
谁能告诉我我做错了什么? (查询正确……)
【问题讨论】:
-
您是否 100% 确定内部“if”语句 (
if(ret.error == SQLITE_ROW)) 中的代码永远不会到达?如果您的stmt有效,则ret.error的最终值将始终为SQLITE_DONE。建议:SQL 语句(stmt)是什么,你是如何准备的,你要检索的数据库中的行是什么? -
我刚刚重写了代码,现在好像可以了,不知道是什么错误