【问题标题】:iPhone SQLite File managementiPhone SQLite 文件管理
【发布时间】:2009-05-14 08:08:26
【问题描述】:

我正在开发一个应用程序,并使用 SQLite 作为我的数据库存储。 我想在整个应用程序期间添加和更新 sqlite 数据库,所以我将它复制到文档目录中,这样我就可以使用我的数据库做各种事情,除了只能从中选择。

但是由于我是在开发“时间”,所以我的数据库在这个过程中经常发生变化(数据库架构是由另一个开发人员制作的)

在 iPhone 上我正在检查

  1. 如果数据库存在于文档目录中
  2. (如果没有)将其复制到其中。
  3. 使用那个数据库

但是当我想更新我的数据库(我在单独的 sqlite 管理器中创建的)时,它在复制较新版本的过程中失败了,因为我只检查数据库是否存在。

你们中有人遇到过同样的问题吗?以及你做了什么来解决这种问题..

我唯一的想法是创建一个设置表并保存一行来检查数据库的版本号..

还有没有办法在任何 sqlite 管理工具中编辑文档目录中的 sql 文件?

还是有更好的解决方案?

【问题讨论】:

    标签: iphone objective-c sqlite


    【解决方案1】:

    我在我的应用程序中做了什么: - 首先我做同样的事情。检查数据库是否在文档中。 - 然后我检查以前安装的版本:文档中的小文本文件告诉我这个 - 如果需要更新,我会合并数据库:/Documents 中的一个与 app bundle 中的另一个。 - 就我而言,我需要合并。如果用户不更改它,您可能只是复制过来。

    【讨论】:

    • 合并听起来很有趣,你是怎么做到的?
    【解决方案2】:

    我所做的是创建一系列能够从以前的版本 1.sql、2.sql、3.sql 等升级的 sql 脚本。当我打开我的数据库时,我从设置表中查询版本并将它与我在应用程序包中找到的最新 .sql 文件进行比较。如果有更新版本,我会开始运行 .sql 脚本,直到遇到最新版本。现在,这对我来说在几个项目中都很有效。

    【讨论】:

      【解决方案3】:

      您是否尝试在 iPhone 上删除应用程序,然后再次部署应用程序?

      【讨论】:

      • 问题是我使用多个 sqlite 数据库,不想全部删除它们,只是更新我想要的数据库
      【解决方案4】:

      我所做的与您所做的类似,只是我在数据库中添加了一个小的第二个表。这个数据库只包含一条记录——一个数据库版本号。因此,您从该数据库表中的版本 1 开始。然后,当您更改结构时,将此版本号更新为 2。在您的启动代码中,检查数据库是否存在。如果是,请检查数据库的版本号。如果数据库的版本号符合您的预期,请继续。如果低于您的预期,请调用一些代码将数据库升级到当前版本,然后继续。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-18
        • 2011-04-10
        相关资源
        最近更新 更多