我使用SQLite作为在iPhone应用程序数据源。我有一个关于应用程序的升级两个问题。

1)中的数据是所有配置/非事务。这意味着,它是只读的。当我更新/添加配置数据,我会发出应用程序的升级。当用户获得更新的iPhone应用程序,完成原始得到卸载?如果是这样的话,我是可以的,因为新的数据库配置数据将被部署。如果不是这样,我怎么更换数据?

2)中的数据是配置和事务。这意味着用户可以将数据保存到数据库。当用户升级到应用程序的新版本,我想保持其现有的数据,但替换所有配置数据。我猜我需要有存储在应用程序中实现这个INSERT和UPDATE脚本。什么是有效的方式去了解它?

有帮助吗?

解决方案

cdespinosa已经描述了场景#1很好,所以我将解决#2。

我没有在iPhone上完成此还,但在桌面环境来处理最简单的办法是,让您的配置数据在一个单独的数据库中。您可以连接到多个数据库比较容易。打开你的主数据库,这可能应该是可以更改数据库启动。然后sqlite3_exec一个ATTACH语句,它看起来像这样:

ATTACH 'filepath' AS config;

从此,你可以做这样的事情:

SELECT * FROM UserTableName;
SELECT * FROM config.ConfigurationTableName;

这是我的理解是,如果你写的配置数据库的应用程序将失败签名检查,将无法启动,并列入SQLite的版本与iPhone够大了,不支持只读标志。出于这个原因,你应该配置数据库文件复制到沙箱并打开该副本,而不是一个在你的包。

(你可以,当然,使用SQL和从一个数据库复制到另一个值。但是,如果你已经复制整个配置数据库沙箱......,你应该......那么这只是一个额外的步骤,只要附上。)

我希望别人能为你提供更多的细节。 :)

其他提示

当用户升级应用程序,该旧的应用程序包被卸载并安装新的应用程序包,但与该应用包关联的用户数据是完整的。

所以,你的选择是到)留下你的数据在应用程序包(它会被自动替换)或b)单方面将其复制到第一次运行的用户数据区(所以你会有意将其装升级)

我将离开#2到sqlite的,有见地的人,但你可能需要使用的,而不是“MySQL的”标签中的“源码”标签,如果这是你实际上在做什么。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top