【问题标题】:How to replace sqlite file with a new sqlite file? ANDROID如何用新的 sqlite 文件替换 sqlite 文件?安卓
【发布时间】:2012-05-28 11:15:31
【问题描述】:

我的应用程序必须定期更新数据库。

此更新可能不是自动的。当用户访问应用程序时,将检查是否有可用的新数据库。验证后,如果有新版本会提示用户是否要更新数据库。获得许可后,开始下载新文件 sqlite,它将替换旧文件。

新文件与旧文件具有相同的结构,但表中的行数更多。另外,数据库中只有一张表。

我正在寻找两天的可行解决方案,但没有找到任何可以帮助我的方法。

提前感谢您的关注!

【问题讨论】:

  • 什么具体给你带来了麻烦?您已经在问题的第二段中描述了您需要做什么。
  • @Taynã Bonaldo:您所描述的内容听起来像是您想下载一个新的数据库文件。相反,您可以简单地以任何格式(XML、JSON 等)下载新数据,然后删除表中的现有数据,然后插入新数据。

标签: android database sqlite overwrite


【解决方案1】:

您无法更改在您的.apk 中分发的文件。您需要在其他地方下载此附加文件,然后在您的代码中,您必须在打开它时决定使用哪个文件。

【讨论】:

  • 那还有别的解决办法吗?我可以读取和复制旧数据库的新记录吗?
  • 如果新的数据库文件存在(可能你会将它保存在internal storage area 中),然后打开该文件而不是.apk 中的那个文件。完全忽略原来的。
  • 但是我可以将这个文件保存在任何地方吗?我应该删除旧文件夹/数据/数据/应用程序/数据库/(如果可能的话)?
  • 是的,您可以将新文件保存在内部存储区(见我评论中的链接)。您不能删除旧文件,因为它是您的.apk 的一部分。如果您有新的,请忽略旧的。
  • 好的,现在是最后一个问题......在我的 DataBaseHelper 类中,DB_PATH 不再是一个常量,而是一个变量,对吧?而且新路径必须存储在用户偏好或其他内容中,对吧?
【解决方案2】:

一旦market 中的任何update 可用,用户将下载它,如果您的应用程序的新版本其数据库版本不匹配onUpdate 方法被调用,您可以覆盖它并做任何您想做的事.

另一件事你可以通过简单的FileOutputStream复制你的数据库data/data/databases/yourdatabase.db

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2013-12-01
    • 2020-07-27
    • 2012-06-16
    • 1970-01-01
    相关资源
    最近更新 更多