android - Room Android - 如何处理数据库版本升级

标签 android android-room android-architecture-components

我正在阅读有关 Android 体系结构组件 Room 的文章,想知道 Room 中是否有与可用的 SQLiteOpenHelper 方法中的 onUpgrade 等效的内容。

@Override
 public void onUpgrade(final SQLiteDatabase database, final int oldVersion, final int newVersion) {}

最佳答案

您可以使用 https://developer.android.com/training/data-storage/room/migrating-db-versions.html

 Room.databaseBuilder(getApplicationContext(), MyDb.class, "database-name")
            .addMigrations(MIGRATION_1_2,MIGRATION_1_3, MIGRATION_2_3).build();

    static final Migration MIGRATION_1_2 = new Migration(1, 2) {
        @Override
        public void migrate(SupportSQLiteDatabase database) {
            database.execSQL("CREATE TABLE `Fruit` (`id` INTEGER, "
                    + "`name` TEXT, PRIMARY KEY(`id`))");
        }
    };

    static final Migration MIGRATION_2_3 = new Migration(2, 3) {
        @Override
        public void migrate(SupportSQLiteDatabase database) {
            database.execSQL("ALTER TABLE Book "
                    + " ADD COLUMN pub_year INTEGER");
        }
    };

   static final Migration MIGRATION_1_3 = new Migration(1, 3) {
            @Override
            public void migrate(SupportSQLiteDatabase database) {
                database.execSQL("ALTER TABLE Book "
                        + " ADD COLUMN pub_year INTEGER");
            }
        };

关于android - Room Android - 如何处理数据库版本升级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48204646/

相关文章:

具有整洁架构的 Android 分页库

java - ViewModel 没有零参数构造函数错误,原因是 ViewModelFactory 一直为 null(不是 100% 确定)

android - 分页库 : skip loadInitial in PageKeyedDataSource

java - Android float 按钮更改可绘制图像

android - 在 kotlin 中声明单例

android - 如何解决歧义方法?

java - 在 kotlin 中首次构建 Room 数据库时如何修复异常

java - OpenFire 服务器中用户的 JID 应该是什么?

java - 检查数据库中密码的函数

java - 数学公式的表示