2010-04-24 15 views
0

我在使用Xcode的iPhone程序的某些sqlite代码时遇到问题。我打开我的数据库是这样的:让程序运行之间保持sqlite文件不存在

int result = sqlite3_open(“stealtown.db”,& database);

这就是他们在我正在查看的一本书中的样子,而我正在键入该程序。但是,那样的打开数据库的方式只能在模拟器中运行,而不能在设备上运行。所以我最终想出我需要这样做:

NSString * file = [[NSBundle mainBundle] pathForResource:@“stealtown”ofType:@“db”]; int result = sqlite3_open([file UTF8String],& database);

在设备上工作,除了一件事情:每次启动程序时,它就像您从未创建数据库一样开始,并且当您在表格中粘贴条目时,它是该表格中的唯一条目。

当我在模拟器上使用第一个代码时,我可以打开我的程序6次,每次向表中添加1个条目,最后我在该表中有6个条目。使用第二个代码,我可以做同样的事情,但每次在该表中只有一个条目。我是否可以解释这一点,我希望如此,有时对我来说很难。

任何人都知道为什么会这样?

回答

2

在设备上,应用程序包不可写入。因此,您的数据库文件无法更改。首次启动时,您必须在应用程序的Documents目录中创建数据库。或者,如果您的应用程序带有预填充数据,则必须先将数据库文件从应用程序包复制到Documents目录,然后打开副本。

+0

谢谢,这是正确的,并修复它! – Cocorico 2010-04-24 17:33:23

相关问题