private val MIGRATION_1_2 = object : Migration(1,2) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE road_map_points add COLUMN txt_count INTEGER NOT NULL DEFAULT -1 ")
}
}
- 然后在
Room.databaseBuilder().addMigrations(migration)
- 完整代码:
package com.anyun.collect.points
import android.content.Context
import android.util.Log
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import androidx.room.migration.Migration
import androidx.sqlite.db.SupportSQLiteDatabase
import androidx.work.OneTimeWorkRequest
import androidx.work.WorkManager
import com.anyun.collect.points.maps.TotalMap
import com.anyun.collect.points.maps.TotalMapDao
import com.anyun.collect.points.viewmodels.RoadMapPointsDao
//数据库升级需要修改版本号
@Database(entities = [RoadMapPoints::class],version = 2,exportSchema = false)
abstract class AppDataBase : RoomDatabase() {
abstract fun getRoadMapPointsDao(): RoadMapPointsDao
companion object{
val TAG = AppDataBase::class.java.simpleName
var instance:AppDataBase?=null
private val MIGRATION_1_2 = object : Migration(1,2) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ALTER TABLE road_map_points add COLUMN txt_count INTEGER NOT NULL DEFAULT -1 ")
}
}
fun getInstance(context: Context):AppDataBase{
return instance?: synchronized(this){
instance?:buildDatabase(context).also{ instance = it}
}
}
private fun buildDatabase(context: Context): AppDataBase {
return Room.databaseBuilder(context,AppDataBase::class.java,DATABASE_NAME)
.addCallback(object :RoomDatabase.Callback(){
override fun onCreate(db: SupportSQLiteDatabase) {
super.onCreate(db)
Log.i(TAG,"onCreate")
}
}).addMigrations(MIGRATION_1_2)
.build()
}
}
}