SQLite и OBJ-C DB очищаются при запуске приложения - PullRequest
0 голосов
/ 30 марта 2012

У меня есть база данных SQLite на этой позиции

/Users/software/Library/Application Support/iPhone Simulator/5.0/Applications/723EEE91-CB9D-4A27-8492-D61E127E72B7/myAPP.app/localDB.sqlite

Нет проблем при записи, удалении или чтении данных.Например, если я пишу в БД и закрываю приложение, я нахожу данные в своей БД, но если я перезапущу приложение, моя БД очистится.Может кто-нибудь сказать мне почему?

Это пример экземпляра БД

SQLiteUtilities *db = [[SQLiteUtilities alloc]init:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"localDB.sqlite"]];

[db loadValuesFromQuery:@"SELECT * FROM categories;"];
for (int i = 0; i < [db getSize]; i++) {
    NSLog(@"-- %@", [db objectAtIndex:i]);
}
[db release];

-(void)loadValuesFromQuery:(NSString *)query {

GenericRecord *record = [[[GenericRecord alloc]init] autorelease];

if (sqlite3_open([pathDB UTF8String], &database) == SQLITE_OK) {
    // query che ricava i valori
    const char *sql = (const char *) [query UTF8String];
    sqlite3_stmt *selectstmt;

    if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) {

        while(sqlite3_step(selectstmt) == SQLITE_ROW) {
            // ricaviamo i valori letti dalla query
            record.uniqueID = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];
            record.superID = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 2)];
            record.subSuperID = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 3)];
            record.title = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 4)];
            record.description = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 5)];
            record.price = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 6)];
            record.note = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 7)];
            record.pictureURL = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 8)];
            record.catName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 9)];
            record.subCatName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 10)];

            NSData *data = [[NSData alloc] initWithBytes:sqlite3_column_blob(selectstmt, 11) length:sqlite3_column_bytes(selectstmt, 11)];
            if(data) record.imageBig = [UIImage imageWithData:data];

            [self.list addObject:record];

        }
    }
}
sqlite3_close(database);

}

1 Ответ

0 голосов
/ 31 марта 2012

Также любопытно, почему в эти дни я вижу так много сырой sqlite3 - почему вы не используете Core Data?Просто предложение - оно может не соответствовать вашим потребностям (т. Е. Схема уже существует, и вы загружаете ее напрямую и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...