更新应用程序时,不希望替换旧数据库

时间:2011-08-30 05:36:31

标签: iphone objective-c cocoa-touch sqlite ios4

在我的应用中,我使用的是sqlite数据库 在应用商店中更新应用时,我不想替换现有数据库。

它会替换为新数据库吗?或者它会保持相同的数据库吗?

3 个答案:

答案 0 :(得分:6)

@Ankit:嗨..

答案是它不会替换数据库,它将保持与使用以前版本的应用程序的用户相同的旧数据库,然后他们只需下载并安装新版本的应用程序而不删除以前的版本。

它将取代App Store上的数据库,但如果用户使用的是应用程序的先前版本,则默认情况下不会替换数据库。如果数据库已经存在,那么它不会替换数据库过程< / p>

我们必须进行数据库升级程序,我们必须检查一些标志或数据库中的版本号(如果提供)并且基于此我们必须创建一个数据库升级程序。

您必须使用数据库升级过程在数据库中进行更改并对现有表进行更改,例如添加或删除列,或者可能正在使用SQL查询更改表的结构

然后你必须最终更新数据库中的版本号或一些标志,这样才能让它知道数据库已经升级,因此每次都不应该运行相同的程序应用程序加载

还要注意用户存储在他/她的数据库中的现有数据。不应删除它。

如果您需要更多帮助,请随时与我联系。

希望这有帮助。

答案 1 :(得分:1)

下次你的新应用程序连接到数据库时,你必须检测到它需要更新,然后你需要运行一系列sql命令或脚本来对它进行提升(希望在后台运行)线程异步)。

我的sqlite包装器做了什么:

  1. 将一系列sql脚本存储在资源中。
  2. 我有一个引用要运行的脚本列表的文件。
  3. 对于新数据库,它只是按顺序运行这些脚本。
  4. 当每个脚本运行时,我会在跟踪元数据表中记录最后运行的脚本。
  5. 当应用程序更新时(或在我开发期间),连接时,它会检测到最新的脚本不是表中的脚本。然后它会迭代脚本,只运行已经运行的脚本之后的那些脚本。
  6. 它可以为我提供更新服务,也可以在日常开发中为我提供服务,而不会不断丢弃数据。

答案 2 :(得分:0)

它将替换为新数据库,因为当您为应用创建二进制文件时,它将使用新数据库进行构建。

如果您想使用旧数据库执行此操作,则必须在应用程序中使用旧数据库创建构建。