什么是管理会议室数据库迁移的最佳方法?

时间:2018-11-29 12:05:41

标签: android android-sqlite android-room android-livedata

在添加新表的同时,我需要以这种方式手动管理迁移

  private static final Migration MIGRATION_2_1 = new Migration(DbConfig.Version_SchoolEvent_2, DbConfig.Version_NewsAnnouncement_1) {
    @Override
    public void migrate(SupportSQLiteDatabase database) {
        database.execSQL(NEWS_ANNOUNCEMENT);
    }
};
private static final Migration MIGRATION_3_1 = new Migration(DbConfig.Version_PublicNotification_3, DbConfig.Version_NewsAnnouncement_1) {
    @Override
    public void migrate(SupportSQLiteDatabase database) {
        database.execSQL(NEWS_ANNOUNCEMENT);
    }
};

然后

在创建数据库时添加

  public static NewsAnnouncementDatabase getDatabase(final Context context) {
    try {
        if (INSTANCE == null) {
            synchronized (NewsAnnouncementDatabase.class) {
                if (INSTANCE == null) {
                    INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
                            NewsAnnouncementDatabase.class, DbConfig.Db_WebSchoolRx)
                            // Wipes and rebuilds instead of migrating if no Migration object.

                            .allowMainThreadQueries()
                            // .fallbackToDestructiveMigration()
                                .addMigrations(MIGRATION_2_1, MIGRATION_3_1)
                            .addCallback(sRoomDatabaseCallback)
                            .build();
                }
            }
        }

    } catch (Exception ex) {
        Log.i("Instance of Database", ex.getMessage());
    }
    return INSTANCE;
}

我当时正在考虑将迁移对象数组保留为字符串,并添加整个迁移对象数组。但是后来我发现当表数量增加时很难管理。有什么最好的方法来添加迁移对象?

0 个答案:

没有答案