【问题标题】:SQLITE3 step() returns SQLITE_DONE on table with only one rowSQLITE3 step() 在只有一行的表上返回 SQLITE_DONE
【发布时间】: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)是什么,你是如何准备的,你要检索的数据库中的行是什么?
  • 我刚刚重写了代码,现在好像可以了,不知道是什么错误

标签: select sqlite


【解决方案1】:

放:

sqlite3_finalize(statement);

While 循环之后。

【讨论】:

    【解决方案2】:

    从“调试”配置切换到“发布”为我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多