Android 版本控制室数据库
我可能不理解Android 版本控制室数据库,android,android-room,android-jetpack,Android,Android Room,Android Jetpack,我可能不理解fallbackToDestructiveMigration() 当我更改我的房间版本号时,我希望它能像第一次启动时一样清理我的桌子并重新填充。但是它没有在我的回调中调用“onCreate”,回调调用了我的populate方法。 取而代之的是,这张桌子只会清空 关于我的数据库: 它使用实时数据。用户永远不能更改数据库。ID被手动插入代码中,因为它们被用作联机数据库的外键 将来的迁移是否有办法重建整个过程?当您使用fallbackToDestructiveMigration()时,不会
fallbackToDestructiveMigration()
当我更改我的房间版本号时,我希望它能像第一次启动时一样清理我的桌子并重新填充。但是它没有在我的回调中调用“onCreate”,回调调用了我的populate方法。
取而代之的是,这张桌子只会清空
关于我的数据库:
它使用实时数据。用户永远不能更改数据库。ID被手动插入代码中,因为它们被用作联机数据库的外键
将来的迁移是否有办法重建整个过程?当您使用
fallbackToDestructiveMigration()
时,不会调用您的onCreate()
,因为您的数据库已经创建
但您可以通过以下方式使用迁移重新构建整个过程:
Room.databaseBuilder(context, MyDatabase.class, DB_NAME)
.addMigrations(FROM_1_TO_2)
.build();
static final Migration FROM_1_TO_2 = new Migration(1, 2) {
@Override
public void migrate(final SupportSQLiteDatabase database) {
database.execSQL("DELETE FROM `table_name`"); //this will empty table
database.execSQL("YOUR_INSERTION_QUERY"); //insert in loop for multiple insertion
}
};
使用上述代码,您可以在更新DB版本时始终清除并重新填充该表