使 sqlite 文件在程序运行之间保持存在
Posted
技术标签:
【中文标题】使 sqlite 文件在程序运行之间保持存在【英文标题】:Making a sqlite file stay existent between runs of the program 【发布时间】:2010-04-24 02:31:40 【问题描述】:我在使用 Xcode 中的 iPhone 程序的一些 sqlite 代码时遇到问题。我是这样打开我的数据库的:
int 结果 = sqlite3_open("stealtown.db", &database);
当我键入程序时,他们在我正在看的一本书中是这样写的。但是,这种打开数据库的方式仅在您在模拟器中运行时才有效,而不是在设备上。所以我终于知道我需要这样做:
NSString *file = [[NSBundle mainBundle] pathForResource:@"stealtown" ofType:@"db"]; int result = sqlite3_open([文件 UTF8String], &database);
这可以在设备上使用,除了一件事:每次启动程序时,它都会像您从未创建过数据库一样开始,并且当您在表中添加一个条目时,它是该表中的唯一条目。
当我在模拟器上使用第一个代码时,我可以打开我的程序 6 次,每次向表中添加 1 个条目,最后,我在该表中有 6 个条目。使用第二个代码,我做完全相同的事情,但每次该表中只有 1 个条目。我解释这个好吗,我希望如此,有时对我来说很难。
有人知道为什么会这样吗?
【问题讨论】:
【参考方案1】:在设备上,应用程序包不可写。因此,您的数据库文件无法更改。您必须在首次启动时在应用程序的 Documents 目录中创建数据库。或者,如果您的应用带有预填充数据,您必须先将数据库文件从应用包复制到 Documents 目录,然后再打开副本。
【讨论】:
以上是关于使 sqlite 文件在程序运行之间保持存在的主要内容,如果未能解决你的问题,请参考以下文章