Кажется, что вы открываете БД в каждом цикле цикла, но закрываете только один раз, перед выходом из функции
Поэтому попробуйте изменить:
}
sqlite3_close(db);
[localPool release];
}
до
sqlite3_close(db);
}
[localPool release];
}
Или даже лучше изменить:
for(int i=0;i [[DT sharedDT].typesInLibrary count];i++)
{
if(sqlite3_open([databasePath UTF8String], &db)==SQLITE_OK)
{
if (sqlite3_exec(db, "PRAGMA CACHE_SIZE=50;", NULL, NULL, NULL) != SQLITE_OK) {
NSAssert1(0, @"Error: failed to set cache size with message '%s'.", sqlite3_errmsg(db));
}
до:
if(sqlite3_open([databasePath UTF8String], &db)==SQLITE_OK)
{
if (sqlite3_exec(db, "PRAGMA CACHE_SIZE=50;", NULL, NULL, NULL) != SQLITE_OK) {
NSAssert1(0, @"Error: failed to set cache size with message '%s'.", sqlite3_errmsg(db));
}
for(int i=0;i [[DT sharedDT].typesInLibrary count];i++)
{
...
потому что вы всегда открываете одну и ту же базу данных