0
我有一個SQLite數據庫在這個位置SQLite和OBJ-C DB清楚何時啓動應用程序
/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] [1]:http://stackoverflow.com/questions/9887785/sqlite-database-load-fails-issue-with-sqlite-prepare-statement- iphone-xcod/9888240#9888240 – WaaleedKhan 2012-03-30 12:55:00
應用程序在這裏失敗,在nsassert if(成功){ NSString * defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@「localDB.sqlite」]; 成功= [fileManager copyItemAtPath:defaultDBPath toPath:dbPath error:&error];如果(!success) NSAssert1(0,@「無法創建帶有消息'%@'的可寫數據庫文件'」,[error localizedDescription]); } – user1303255 2012-03-30 13:19:49
夥計你的應用程序沒有從取景器獲取數據庫....檢查我的答案在上面的鏈接,並嘗試的步驟,希望它會工作 – WaaleedKhan 2012-03-30 13:22:51