2011-03-10 28 views
2

与大多数开发人员不希望覆盖sqlite数据库中的数据的sqlite应用程序不同,我试图启用应用程序以覆盖所有数据以便将来更新。 sqlite数据库将具有完全相同的名称并具有相同的表,我只是希望能够更新数据库中包含的数据,而不会让用户删除应用程序并重新安装它。有没有简单的方法来做到这一点?试图在iPhone应用程序更新中覆盖sqlite数据库

在此先感谢!

+0

我不知道它是如何工作的本地代码,但你不能只是'truncate'表和'insert'您记录? – 2011-03-10 23:08:20

回答

7

SQLite数据库文件只是一个普通的文件,所以不需要特殊的步骤。获取文件的路径或URL,并使用NSFileManager的-removeItemAtPath:error:-removeItemAtURL:error:。然后以与创建旧数据库相同的方式创建新数据库。

+1

谢谢汤姆。因此,对于预加载信息的现有数据库,我只需要插入-removeItemAtPath:error :,每次更新都会删除旧数据库并将其替换为新版本? – Benjamin 2011-03-11 00:55:29

+0

这将删除旧的。用新的替换它取决于你,但你之前做过,所以你可以再做一次。每次调用该方法时都会发生,因此只有在实际需要删除旧副本时才需要注意。这假定数据库在文档文件夹中,而不是在应用程序包中。如果它在应用程序包中,它会在每次更新时自动覆盖,但用户也无法修改它。 – 2011-03-11 01:55:33

+0

对不起,这可能是一个愚蠢的问题,但我如何将数据库放在应用程序包中?我没有想过这个简单的解决方案。用户不会修改或保存数据,因此这将是我认为的最佳解决方案。 – Benjamin 2011-03-11 03:26:00

相关问题