是不是;插入“;在SQLite中返回SQLite\u OK或SQLite\u DONE?
如果成功,SQLite中的语句“insert”返回什么 我一直认为应该由SQLITE_完成,但最近在日志中我发现了以下字符串:是不是;插入“;在SQLite中返回SQLite\u OK或SQLite\u DONE?,sqlite,Sqlite,如果成功,SQLite中的语句“insert”返回什么 我一直认为应该由SQLITE_完成,但最近在日志中我发现了以下字符串: sqlite3_step error: 'not an error' 下面是记录上述字符串的代码: prepareStatement(addTranslationStmt2, "INSERT INTO translations(lang1_wordid, lang2_wordid) VALUES(?, ?)"); if (!addTranslationStmt2) r
sqlite3_step error: 'not an error'
下面是记录上述字符串的代码:
prepareStatement(addTranslationStmt2, "INSERT INTO translations(lang1_wordid, lang2_wordid) VALUES(?, ?)");
if (!addTranslationStmt2) return -2;
sqlite3_bind_int(addTranslationStmt2, 1, word_id);
sqlite3_bind_int(addTranslationStmt2, 2, translation_id);
if(sqlite3_step(addTranslationStmt2) != SQLITE_DONE)
{
NSLog(@"sqlite3_step error: '%s'", sqlite3_errmsg(database));
sqlite3_reset(addTranslationStmt2);
return -1;
}
sqlite3_reset(addTranslationStmt2);
我想知道,为什么它在大多数情况下都有效。
我是否应该将代码中的SQLITE_DONE更改为SQLITE_OK
谢谢。SQLITE\u完成
您也可以尝试打印错误代码以找出问题所在。在这种情况下,我喜欢查看代码示例。以下是一些好的例子: 列表中的SQLITE_OK表示结果成功。它也是第一个错误代码,错误代码为0,使其成为规范结果(即,成功操作的预期结果) 您应该在代码中放一个断点或print语句,以确定它是否真的返回零,并检查数据以确保得到预期的结果。如果所有这些都被检查出来,我会将您的条件更改为检查SQLITE_OK
sqlite3\u-step()
接口行为的详细信息取决于语句是使用较新的“v2”接口sqlite3\u-prepare\u-v2()
和sqlite3\u-prepare16\u-v2()
还是使用较旧的传统接口sqlite3\u-prepare()
和sqlite3\u-prepare16()。
在旧版界面中,返回值将是
SQLITE\u BUSY、SQLITE\u DONE、SQLITE\u ROW、SQLITE\u ERROR
,或SQLITE\u mission
。使用“v2”接口,还可能返回任何其他结果代码或扩展结果代码。从“调试”配置切换到“发布”解决了我的问题。打印错误代码时,您看到了什么?检查