2011-06-07 72 views
6

我有一个数据库充满了信息的应用程序。用户从不改变或添加任何东西到这个数据库。我想自己更新数据库并将其存储在网络上。然后,每次应用程序加载时,它都会检查网络是否有新版本。如果有,它会直接下载并替换它。这样做的最好方法是什么?Android - 从网络更新应用程序数据库

回答

2

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

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

+0

我实际上使用那篇博文来创建我的数据库。我喜欢解析出文件名并按照这种方式进行操作的想法。这些更新可能会添加数百个或更多的新行,并且我不愿意为所有这些行编写sql语句,然后执行它们。我宁愿只是覆盖现有的数据库。 – Mark 2011-06-07 14:47:45

+0

我知道这已经有一段时间了,但是我已经尝试过了,它工作得很好。我只是解析文件名,并抓取最新的文件名,然后替换设备上的现有数据库。 – Mark 2011-12-28 05:04:07

0

好了,你可以更新通过互联网整个APK只是检查它的版本和校验,每一个新版本应该包含新的数据库版本,并且可以与SQLiteOpenHelper一点帮助被执行或者你可以更新你的数据库通过必要的说明通过HTTP的简单XML容器...

1

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

  1. 下载从你的网络服务器一个XML或JSON文件,分析它,明确当前的数据库并导入新的数据。
  2. 你可以直接用sql语句在你的web服务器上保存一个文本文件,并直接执行这个准备好的sql文件到你的sqlite数据库。
+0

更新可能会将数百或更多行添加到数据库。我希望每次都替换它,而不是编写那么多的sql语句。 – Mark 2011-06-07 16:01:27

+0

我不确定这是可能的,将检查出来!但这真的很糟吗?你可以编写一个运行在另一个线程中的服务并在后台处理这些插入... – 2011-06-09 18:41:41

0

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

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