3

我正在创建一个带有 Sqlite DB 的 Android 应用程序,该应用程序有几个带有预填充数据(500 多行)的表,并且还有将由用户填充的表。

我计划分发数据库的方式是通过以下方法将预填充的数据库添加到应用程序中 在 Android 应用程序中使用您自己的 SQLite 数据库

我对此有疑问,但是当涉及到升级时,我可能会在预填充的表中添加一些行,甚至可能修改现有行中的大量数据,我想完全替换那些现有的表与新的预填充表中的表,但保持用户填充的表不变。

我发现另一篇文章如何在不重新创建表的情况下升级设备上预填充的 sqlite 数据库?用户建议这可能完全是错误的方法(“做事的“正确”方式与您的出发方式完全不同”),因为我希望升级尽可能高效。由于我还没有真正发布我的第一个版本,我应该改变我的方法吗?

这种情况下最有效的方法是什么?

4

1 回答 1

3

我计划分发数据库的方式是通过以下方法将预填充的数据库添加到应用程序中 在 Android 应用程序中使用您自己的 SQLite 数据库。

该代码已经过时了一段时间。请考虑使用更现代和受支持的东西,例如SQLiteAssetHelper.

我想用新的预填充表中的表完全替换那些现有表,但保持用户填充的表不变

SQLiteAssetHelper开箱即用支持两种模式:

  • 用新的打包副本替换整个数据库
  • 运行您自己的 SQL 脚本来更新现有已安装的数据库,忽略与您的应用程序打包的副本

由于SQLiteAssetHelper它是开源的,您可以看到 Jeff Gilfelt 如何编写它并尝试利用它以某种方式支持您的混合场景。

就个人而言,除非您需要在“预填充表”和“用户填充表”之间进行连接,否则我鼓励您使用两个单独的数据库。一个是所有预先填充的数据,您可以根据应用更新的需要完全替换这些数据。另一个将保存用户表,您将使用更传统的SQLiteOpenHelper. ATTACH DATABASE而且,即使我没有亲自尝试过这种情况,即使使用两个单独的数据库,您也可以进行连接。

于 2013-07-09T11:21:14.890 回答