Skip to content

Chipzzz-dev/RoomBasic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RoomBasic

A repository for the learning Room.

Database类模板

@Database([Word::class], version = 3, exportSchema = false)     //修改Entity后必须更新数据库版本
abstract class WordDatabase : RoomDatabase() {
    abstract val wordDao: WordDao

    companion object {
        @Volatile
        private var INSTANCE: WordDatabase? = null
        fun getInstance(context: Context): WordDatabase {
            synchronized(this) {
                var instance = INSTANCE
                if (instance == null) {
                    instance = Room.databaseBuilder(
                        context.applicationContext,
                        WordDatabase::class.java,
                        "word_database"
                    )
//                        .fallbackToDestructiveMigration()   //破坏性地重建
//                        .addMigrations(MIGRATION_2_3) //创建迁移策略
                        .build()
                    INSTANCE = instance
                }
                return instance
            }
        }

        private val MIGRATION_1_2: Migration = Migration(1, 2) {
            it.execSQL("ALTER TABLE word DROP COLUMN bar_data")
        }


        //数据库删除列 -> 新创建一个然后迁移数据
        private val MIGRATION_2_3: Migration = Migration(2, 3) {
            // 创建一个新的临时表
            it.execSQL(
                "CREATE TABLE word_temp (id INTEGER PRIMARY KEY NOT NULL, english_word TEXT NOT NULL, chinese_meaning TEXT NOT NULL)"
            )
            // 复制旧表中的数据到新表
            it.execSQL("INSERT INTO word_temp SELECT id, english_word, chinese_meaning FROM word")
            // 删除旧表
            it.execSQL("DROP TABLE word")
            // 将新表重命名为旧表的名称
            it.execSQL("ALTER TABLE word_temp RENAME TO word")

        }

    }
}

About

A repository for the learning Room.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages