EGODatabase不保留插入的记录

时间:2010-05-11 16:16:33

标签: iphone objective-c database

我正在使用EGODatabase来处理我的数据。当我尝试将数据插入到我使用Base创建并附加到项目的数据库中时,以编程方式插入的数据在我重新启动应用程序时将不会显示。但是,使用Base手动插入的数据将显示正常。< / p>

以下是将数据插入数据库的代码:

 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 个答案:

答案 0 :(得分:1)

在对数据库进行更改之前,需要将数据库文件从捆绑包复制到用户的Documents目录。捆绑资源是只读的,这就是您无法更新数据的原因。

将其放入- (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];