在SQLite中插入数据有问题吗?

时间:2010-08-13 13:44:18

标签: iphone objective-c sqlite fmdb

您好我正在使用FMDB从SQLITE数据库中检索数据。

db  = [[FMDatabase alloc] initWithPath:path];   
[db open];  
FMResultSet *fResult= [db executeQuery:@"SELECT * FROM Users"];

aUsers = [[NSMutableArray alloc] init];
while([fResult next])
{
    userData = [fResult stringForColumn:@"Name"];       
    lblUsers.text=[lblUsers.text  stringByAppendingString:userData];
    [aUsers addObject:userData];        
    NSLog(@"The data is %@=",userData);
}   
[db close];
[aUsers release];
[db release];

所以我得到了这个程序的输出

Sachin Rahul Dravid

但是当我尝试将数据插入数据库时​​, 我使用了以下编码

   [db beginTransaction];
[db executeUpdate:@"insert into users (name) values('Balaji R')" ,nil];
[db commit];

现在我再次从数据库中检索数据。 所以我得到了这样的输出

Sachin Rahul Dravid Balaji R

但是当我退出我的应用程序然后再次使用它时, 现在我只看到旧记录

Sachin Rahul Dravid

插入录制的“Balaji R”消失了!

有人知道我在哪里犯了错误吗?请告诉我解决方案......

1 个答案:

答案 0 :(得分:2)

您正在尝试写入不允许的应用包目录。您必须将起始数据库复制到用户的Documents目录,并将副本的路径传递给FMDB initWithPath:查看iOS Application Programming Guide。看一下CoreDataBooks示例代码。 App Delegate包含persistentStoreCoordinator方法中的代码,您可以将其用作实施指南。