无法刷新i​​phone sqlite3数据库

时间:2009-08-22 02:22:12

标签: iphone caching sqlite

我从命令行创建了一个sqlite3数据库,并插入了几条记录。我的应用程序检索所有这些并显示它们就好了。然后我返回并通过sqlite3 cli插入更多记录,从模拟器的文档目录中删除db文件,以便从主包中重新复制,然后再次运行应用程序,发现它只显示我插入的原始记录。新记录未显示。我验证了新的db文件被复制到模拟器文档目录,当我指向sqlite3 cli时,我可以执行select *并查看所有记录。

这可能会发生什么?看起来好像以前版本的db文件正在某处缓存并使用而不是我更新的版本。

//斯科特

2 个答案:

答案 0 :(得分:2)

每次在xcode中重建并运行应用程序时,它都会在iphone模拟器的应用程序文件夹下创建一个新文件夹。如果您的sqlite数据库是从xcode中包含的,则旧数据库可以放在新文件夹中,而您编辑的数据库则位于旧的现在未使用的文件夹中。

答案 1 :(得分:0)

我还没有验证他的答案,但Stephan Burlot said

  

Sqlite为请求使用缓存。关闭&从时间重新打开数据库以释放缓存。

(我不认为每个SQLite实例都会缓存请求,但在iPhone上可能就是这种情况。)

显然你并不关心内存,但如果它是缓存请求,可能只是关闭并重新打开即可。

如果不是这种情况,我的下一个猜测是你的应用程序没有指向你认为它指向的文件 - 你是否指向一个名称不同的数据库并忘记了更新应用程序?您可以通过从应用程序中更新数据库来验证这一点,然后使用CLI检查这些更新。您可能只是发现他们没有查看相同的数据库。