- 扩展知识
===========================================================================
随着业务的变化,数据库可能也需要做一些调整,列如新增或则修改一个字段等等。这时候就需要对数据库进行升级的操作了。Android提供了一个Migration类,来对Room数据库进行升级。
public Migration(int startVersion, int endVersion) {
this.startVersion = startVersion;
this.endVersion = endVersion;
}
Migration有两个参数,startVersion和endVersion。startVersion表示当前数据库版本(设备上安装的版本),endVersion表示将要升级到的版本。如果设备中的应用程序数据库版本为1,以下Migration会将你的数据库版本从1升级到2。
private val MIGRATION_1_2 = object :Migration(1,2){
override fun migrate(database: SupportSQLiteDatabase) {
//执行与数据库升级相关的操作
}
}
以此类推,如果需要将数据库由2升级到3,则进行如下的声明。
private val MIGRATION_2_3 = object :Migration(2,3){
override fun migrate(database: SupportSQLiteDatabase) {
//执行与数据库升级相关的操作
}
}
如果当前用户的数据库时1,直接安装了升级到3版本的应用,那么此时Room会按照顺序先后执行Migration(1,2)、Migration(2,3)以完成升级。
最后,通过addMigration将升级方案加入到room中。
Room.databaseBuilder(
AppUtil.application,
StudentDataBase::class.java,
STUDENT_DB_NAME
)
.addMigrations(MIGRATION_1_2,MIGRATION_2_3)
.build()
==========