Android room 升级问题

Android room 升级问题

1:增加字段
e:增加了一个字符串类型的字段

database.execSQL("ALTER TABLE my_tab"
               + " ADD COLUMN photoUri TEXT");

e:增加int类型字段

database.execSQL("ALTER TABLE CallLog "
                + " ADD COLUMN e164 INTEGER");

e:如果你的表,保存的数据是List<String>,其实他保存就是string来,所以,增加list的时候,是增加string

database.execSQL("ALTER TABLE CallLog "
                + " ADD COLUMN list TEXT");
ps
string: 类型对应TEXT
int:对应INTEGER

当你的表更换了索引你需要做的就是:
删除旧索引

//tab 表明,索引字段phones
database.execSQL("DROP INDEX IF EXISTS `index_tab_phones`");

增加新的索引

database.execSQL("CREATE UNIQUE INDEX IF NOT EXISTS index_tab_default_number ON tab(default_number)");

如果需要更换字段的类型,
1:你需要创建临时表
2:转移数据到临时表
3:删除前面的表
4:重命名临时表为目标表

推荐阅读更多精彩内容