EGODatabase не сохраняет вставленную запись - PullRequest
0 голосов
/ 11 мая 2010

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

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

 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 Ответ

1 голос
/ 11 мая 2010

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

Поместите это в ваш - (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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...