【问题标题】:Android - Update database in app from webAndroid - 从网络更新应用程序中的数据库
【发布时间】:2011-06-07 13:55:01
【问题描述】:

我有一个应用程序,其中包含一个充满信息的数据库。用户永远不会更改或向该数据库添加任何内容。我想自己更新数据库并将其存储在网络上。然后每次加载应用程序时,它都会检查网络是否有新版本。如果有,它会简单地下载并替换它。这样做的最佳方法是什么?

【问题讨论】:

    标签: android database


    【解决方案1】:

    其他人将不得不告诉您启动实际下载的最佳方式,但this blog post 可能有助于弄清楚下载后如何安装数据库。

    另外,您可能会发现我之前发布的this question 对确定数据库版本很有用,基本上我只是解析文件名来确定版本。如果您正在与服务器通信,我相信您有更简单的方法。

    【讨论】:

    • 我实际上是使用那篇博客文章来创建我的数据库。我喜欢解析文件名并这样做的想法。更新可能添加了数百或更多新行,我不想为所有这些编写 sql 语句然后执行它们。我宁愿只是覆盖现有的数据库。
    • 我知道已经有一段时间了,但我已经尝试过了,效果很好。我只是将文件名解析出来,然后抓取最新的文件名,然后替换设备上现有的数据库。
    【解决方案2】:

    你有几个选项来解决这个问题:

    1. 从您的网络服务器下载一个 xml 或 json 文件,对其进行解析,清除当前数据库并导入新数据。
    2. 您可以使用 sql 语句直接在您的网络服务器上保存一个文本文件,然后将这个准备好的 sql 文件直接执行到您的 sqlite 数据库。

    【讨论】:

    • 更新可能会向数据库添加数百或更多行。我想每次都替换它而不是写那么多sql语句。
    • 我不确定这是否可能,会检查一下!但真的有那么糟糕吗?您可以编写在另一个线程中运行的服务并在后台处理这些插入...
    【解决方案3】:

    好吧,您可以通过互联网更新整个 apk,只需检查它的版本和校验和,每个新版本都应该包含新的数据库版本和必要的指令,可以在 SQLiteOpenHelper 的帮助下执行或者您可以更新您的数据库通过 HTTP 上的简单 XML 容器...

    【讨论】:

      【解决方案4】:

      您可以在每个数据库中拥有一个单独的表来保持版本更新。因此,每次加载应用程序时,您都可以调用 Web 服务并获取存储在 Web 服务器中的数据库的当前版本。如果它比您拥有的数据库更新,您可以简单地替换它。

      您可以使用 .Net web 服务,它具有获取存储在 web 中的 db 版本的方法,并且在 ksoap 库的帮助下,您可以调用 .Net web 服务并获取结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-02
        • 2013-01-05
        相关资源
        最近更新 更多