Должен ли я завершить свои утверждения, если сообщается, что база данных SQLite повреждена SQLITE_CORRUPT - PullRequest
3 голосов
/ 28 февраля 2012

Я получаю сообщение об ошибке SQLITE_CORRUPT для поврежденной базы данных.

wrong # of entries in index sqlite_autoindex_Settings_1

В моем коде есть предложение try / finally, в котором я всегда стараюсь всегда sqlite3_finalize мои операторы.

Видимо, в поврежденной базе данных при попытке завершить оператор снова возникает SQLITE_CORRUPT.

Вопрос: Должен ли я завершить свои заявления, если сообщается, что база данных повреждена?

Ответы [ 2 ]

1 голос
/ 27 февраля 2013

перед sqlite3_finalize или после каждого sqlite3_step используйте sqlite3_reset.

Интерфейс sqlite3_reset (S) сбрасывает подготовленный оператор S обратно в начало своей программы.

0 голосов
/ 19 февраля 2013

проверьте, есть ли у вас sqlite3_reset после каждого sqlite3_step, потому что это один случай, который приводит к повреждению базы данных.после подготовки оператора с помощью sqlite3_prepare и его выполнения с помощью sqlite3_step необходимо всегда сбрасывать его с помощью sqlite3_reset.

Интерфейс sqlite3_reset (S) сбрасывает подготовленный оператор S обратно в начало своей программы.

перед sqlite3_finalize или после каждого sqlite3_step используйте sqlite3_reset.

надеюсь, что это решит вашу проблему ... !!!

...