У меня есть база данных sqlite3 для приложения iOs, чтобы обеспечить автономную поддержку системы.
Она отлично работает.Но иногда файл .db становится поврежденным.И не возвращает результаты.
Если я проверяю инструкцию SELECT через командную строку, я получаю следующее сообщение об ошибке:
sqllite Error: database disk image is malformed
Хотя это нежелательно, оно становится поврежденным.База данных является всего лишь вспомогательной системой, и ее было бы достаточно, чтобы можно было из приложения iOS обнаружить, что файл поврежден, и перезапустить файл.
Но, используя операторы sqlite3, я не получил никаких исключений.Код выглядит следующим образом:
sqlRaw = @"SELECT ... ";
const char *sql = [sqlRaw cStringUsingEncoding:NSUTF8StringEncoding];
if (sqlite3_prepare_v2(database, sql, -1, &date_statement, NULL) != SQLITE_OK) {
NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
}
NSMutableArray *entities = [[NSMutableArray alloc] initWithCapacity:0];
while (sqlite3_step(date_statement) == SQLITE_ROW) {
NSData *entityXml = [[NSData alloc] initWithBytes:sqlite3_column_blob(date_statement, 0)
length:sqlite3_column_bytes(date_statement, 0)];
[entities addObject:entityXml];
}
sqlite3_finalize(date_statement);
Когда приложение выполняет предыдущий код, просто возвращает пустой массив, исключение не выдается.
Кто-нибудь знает, как проверить из операторов sqlite3.db file status?
Может быть, лучше использовать другую систему хранения.Любая рекомендация?