【发布时间】:2015-09-17 06:34:26
【问题描述】:
我正在使用 SQLiteAssetHelper 实用程序来管理从我的资产文件夹复制数据库。在应用程序中,用户将一些数据输入数据库,一旦我升级数据库,所有数据都会被删除,因为我设置了setForcedUpgrade();。我听说您可以使用升级脚本,但我认为在这种情况下它们对我没有帮助,因为每个用户的数据都是唯一的。我该如何解决这个问题?
【问题讨论】:
标签: android sqlite android-assets
我正在使用 SQLiteAssetHelper 实用程序来管理从我的资产文件夹复制数据库。在应用程序中,用户将一些数据输入数据库,一旦我升级数据库,所有数据都会被删除,因为我设置了setForcedUpgrade();。我听说您可以使用升级脚本,但我认为在这种情况下它们对我没有帮助,因为每个用户的数据都是唯一的。我该如何解决这个问题?
【问题讨论】:
标签: android sqlite android-assets
所有数据都被删除了,因为我设置了 setForcedUpgrade();
那就不要打电话给setForcedUpgrade()。
我听说您可以使用升级脚本,但我认为在这种情况下它们对我没有帮助,因为每个用户的数据都是唯一的。
升级脚本的主要目的是允许您在不损害现有数据的情况下升级架构,“因为每个用户的数据都是唯一的”。
我该如何解决这个问题?
使用升级脚本。或者,覆盖onUpgrade(),就像使用常规SQLiteOpenHelper 一样,作为onUpgrade() is not final。
【讨论】:
setForcedUpgrade() 的这种行为是 clearly documented。 “所以我不必为所有数据库升级使用升级脚本”——正如我在回答中指出的那样,欢迎您覆盖 onUpgrade() 作为在 assets/ 中使用升级脚本的替代方法。