【发布时间】:2021-12-19 20:20:57
【问题描述】:
在 Android 中,我使用的是 SQLite 数据库,并且有一个包含 ID、名称、年龄的结构。
用户可以将数据库备份到 Google Drive。到目前为止一切正常。
问题是,我正在开发我的应用程序的新版本,并且我正在向数据库中添加另一列。所以它看起来像 ID、姓名、年龄、性别。
我用onUpgrade(SQLiteDatabase db, int i, int i1) 解决了这个问题,所以如果数据库的版本比当前版本旧,它将在我通过 ALTER 表添加新列时运行 onUpgrade。
到目前为止一切顺利。但是,如果用户已经有了这个新数据库,但在 Google 驱动器上有旧数据库,并且他从云中恢复了那个旧数据库,该怎么办?
当 db 文件被替换为旧版本时,onUpgrade 会立即运行,还是每次从云端恢复后我都需要强制运行 onUpgrade?p>
不确定何时执行 onUpgrade - 仅在应用启动时,或任何时候调用任何数据库操作并看到版本差异?
【问题讨论】:
-
版本是从数据库中读取的。所以这应该没问题...您需要做的就是使用帮助程序类的新实例(因为当没有打开的连接时调用 AFAIK onUpgrade db 并且您正在尝试获取一个)
标签: java android sqlite android-sqlite