2010-08-13 65 views
1

嗨,我使用FMDB从SQLITE数据库检索数据。在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]; 

,所以我就输出到这个计划是

萨钦拉胡尔·德拉维德

但是当我尝试将数据插入到DATABSE, 我用下面的编码

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

现在我再次从数据库中检索数据。 所以我就这样

萨钦拉胡尔·德拉维德巴拉吉[R

一个输出,而当我离开应用程序,然后再bulid它, 现在我只看到旧记录

萨钦拉胡尔Dravid

插入录制的“巴拉吉R”消失了!

任何人都知道我做了错误呢?请告诉我解决......

+1

我在VisualStudio中使用过SQLite,每次构建时,它都会将SQLite数据库文件从资源文件夹复制到bin文件夹中。这意味着每个构建/执行都将以相同的基本版本数据库开始,并且在一个调试会话期间对数据库所做的更改不会持续到下一个。不知道您是否遇到相同的现象... – FrustratedWithFormsDesigner 2010-08-13 13:54:32

+0

“路径”的值是什么? executeUpdate返回一个'BOOL'检查返回值。 不需要SQL字符串后的',nil' – falconcreek 2010-08-13 14:16:34

+0

路径值是/ Users/balajir/Library/Application Support/iPhone Simulator/4.0.1/Applications/7E4DB460-41B2-4AD4-B80C-7E4735104C15/DBTesting.app/MyDataNew .sql executeUpdate返回“YES”。 有什么办法可以将数据保存在数据库中吗? – 2010-08-16 05:09:09

回答

2

您正在尝试写这是不允许的应用程序包目录。您必须将您的起始数据库复制到用户的Documents目录并将副本的路径传递到FMDB initWithPath:请看iOS Application Programming Guide。看看CoreDataBooks示例代码。应用程序代理的代码为persistentStoreCoordinator,您可以将其用作实现的指导。