2010-05-11 6 views
0

Я использую EGODatabase для обработки моих данных. Когда я попытался вставить данные в базу данных, которую я создал с базой и присоединился к проекту, данные, которые были вставлены программно, не будут отображаться при перезагрузке моего приложения. Однако данные, вставленные вручную с помощью Base, будут отображаться просто отлично.EGODatabase не сохраняет вставленную запись

Ниже приводится код для вставки в базу данных:

NSString *path = [[NSBundle mainBundle] pathForResource:@"Database" ofType:@"db"]; 
    db = [EGODatabase databaseWithPath:path]; 
    if ([db open]) { 
     NSLog(@"Database is opened successfully!"); 
    } else { 
     NSLog(@"Database is failed to open!"); 
    } 

    NSArray *params = [NSArray arrayWithObjects:[aFeed feedID], [aFeed title], nil]; 
    [db executeUpdate:@"Insert INTO Feed (FeedID, Title) VALUES (?, ?)" parameters:params]; 
    EGODatabaseResult *results = [db executeQuery:@"SELECT * FROM Feed"]; 
    for (EGODatabaseRow * row in results) { 
     NSLog(@"ID: %@  Title: %@", [row stringForColumn:@"FeedID"], [row stringForColumn:@"Title"]); 
    } 

Я признателен, если кто-нибудь может поделиться мне рабочий пример кода для EGODatabase. Я использую EGODatabase, потому что у меня может быть многопоточный код, который записывается в базу данных. Благодарим заранее.

ответ

1

Прежде чем вносить в него изменения, вам необходимо скопировать файл базы данных из вашего пакета в каталог документов пользователя. Ресурсы пакета доступны только для чтения, поэтому вы не можете обновлять свои данные.

это в вашем методе - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions:

NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"Database.sqlite"]; 
NSFileManager *fileManager = [[NSFileManager alloc] init]; 
if (![fileManager fileExistsAtPath:filePath]) { 
    NSError *error = nil; 
    [fileManager copyItemAtPath:[[NSBundle mainBundle] pathForResource:@"Database" ofType:@"sqlite"] toPath:filePath error:&error]; 
} 
[fileManager release]; 
+0

Спасибо, братан. Это действительно излечивает мою головную боль человека: D. – TuanCM