栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Android Room数据库升级

Android Room数据库升级

一、数据库升级

数据库升级在每一个版本上新的时候会经常遇到,一般是表字段进行了修改。一般新增一些字段的情况比较多。以下四步是完成数据库升级的基本步骤。

二、代码实现

1、添加Entity字段
原Entity

@PrimaryKey
var id: Int,
var name: String,
var gender: Int

添加一个String类型的字段:

@Entity
data class User(
    @PrimaryKey(autoGenerate = true)
    var id: Int,
    var name: String?,
    var gender: Int,
    var hobby:String?
)

2、修改AppDatabase的版本号
原来的版本号:

@Database(entities = [User::class], version = 1)

修改后的版本号:

 @Database(entities = [User::class], version = 2)

注意:version的版本号要和下面提到的MIGRATION要对应上!

3、添加MIGRATION
添加一个MIGRATION,并且添加上修改数据库表字段的sql代码:

private val MIGRATION_1_2 = object : Migration(1, 2) {
    override fun migrate(database: SupportSQLiteDatabase) {
        database.execSQL("ALTER TABLE User ADD COLUMN hobby TEXT")
    }
}

注意: Migration(1, 2)代表数据库版本从1升级到2,和前一步修改数据库版本对应。

4、将添加的MIGRATION添加到数据构造中去

fun getInstance(context: Context): AppDatabase {
      if (instance == null) {
          synchronized(AppDatabase::class.java) {
              instance = Room.databaseBuilder(
                  context.applicationContext,
                  AppDatabase::class.java,
                  "app_db"
              )
              // MIGRATION添加到这里
              .addMigrations(MIGRATION_1_2)
              .allowMainThreadQueries()
              .build()
          }
      }
      return instance!!
  }

  // MIGRATION
  private val MIGRATION_1_2 = object : Migration(2, 3) {
      override fun migrate(database: SupportSQLiteDatabase) {
          database.execSQL("ALTER TABLE User ADD COLUMN hobby TEXT")
      }
  }

如果有多个MIGRATION则往后添加:

 .addMigrations(MIGRATION_1_2, MIGRATION_3_4, MIGRATION_4_5, MIGRATION_5_6, MIGRATION_6_7)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/336113.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号