Я делаю приложение со многими операциями с базой данных. Поскольку SQLite кэширует данные, в моем методе applicationDidReceiveMemoryWarning я закрываю базу данных и открываю ее снова, чтобы удалить кэшированные данные.
Когда это сделать, я получаю эту ошибку
*** Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «Ошибка: не удалось открыть базу данных с сообщением« не ошибка ». *
Вот код, который я использую, чтобы закрыть базу данных и открыть снова, где база данных имеет тип sqlite3 *
[MySQLInter finalizeStatements];
if(sqlite3_close(database) == SQLITE_OK){
//open again
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mydb.sql"];
if(sqlite3_open([path UTF8String], &database) != SQLITE_OK){
NSAssert1(0, @"Error: failed to open database with message '%s'.", sqlite3_errmsg(database));
}
}
else{
NSAssert1(0, @"Error: failed to close database on memwarning with message '%s'.", sqlite3_errmsg(database));
}
Как этого избежать?