Android-数据库中的新列,并从备份中恢复数据库



在Android中,我使用的是SQLite数据库,它有一个ID、名称和年龄的结构。

用户可以将数据库备份到Google Drive。直到现在一切正常。

问题是,我正在开发我的应用程序的新版本,并在数据库中添加另一列。所以它看起来像身份证、姓名、年龄、性别。

我用onUpgrade(SQLiteDatabase db, int i, int i1)解决了这个问题,所以如果DB的版本与当前版本一样旧,那么当我通过ALTER表添加新列时,它将运行onUpgrade。

到目前为止还不错。但是,如果用户已经有了这个新数据库,但在谷歌硬盘上有了旧数据库,他从云中恢复了旧数据库呢?

当数据库文件被替换为旧版本时,onUpgrade会立即运行吗?还是每次从云中恢复后都需要强制运行onUpgrade?

不确定onUpgrade是何时执行的——只在应用程序启动时执行,还是在调用任何DB操作并看到版本差异时执行?

当db文件被替换为旧版本。。。

否,在数据库被替换后不会调用onUpgrade()

每次从云中恢复后,我需要强制运行onUpgrade吗?

您不应该调用onUpgrade()

恢复过程完成后,您可以调用getWritableDatabase()getReadableDatabase()来打开数据库
此时,现有数据库的版本与SQLiteOpenHelper类中代码的版本之间的差异将调用onUpgrade()

相关内容

  • 没有找到相关文章

最新更新