如果报告SQLite数据库损坏了SQLITE_CORRUPT,我应该最终确定我的语句

时间:2012-02-28 13:42:00

标签: sql delphi sqlite finalization

我收到了数据库损坏的SQLITE_CORRUPT错误。

wrong # of entries in index sqlite_autoindex_Settings_1

在我的代码中,我有一个try / finally子句,我总是试着总是sqlite3_finalize我的语句。

显然在一个损坏的数据库上试图完成该语句再次引发SQLITE_CORRUPT。

问题:如果报告数据库已损坏,我是否应该完成我的陈述?

2 个答案:

答案 0 :(得分:1)

在sqlite3_finalize之前或每个sqlite3_step之后使用sqlite3_reset。

sqlite3_reset(S)接口将准备好的语句S重置回其程序的开头。

答案 1 :(得分:0)

检查每个sqlite3_step后是否有sqlite3_reset,因为这是导致数据库损坏的一种情况。在使用sqlite3_prepare准备语句并使用sqlite3_step执行它之后,您需要始终使用sqlite3_reset重置它。

  

sqlite3_reset(S)接口重置已准备好的语句S.   到其计划的开始。

在sqlite3_finalize之前或每个sqlite3_step之后使用sqlite3_reset。

希望这能解决你的问题... !!!