Room数据库升级
- 首先在继承RoomBase的类当中,定义Migration
-
static Migration migration = new Migration(1,2) { @Override public void migrate(@NonNull SupportSQLiteDatabase database) { database.execSQL("alter table student_table ADD COLUMN begin_time INTEGER NOT NULL DEFAULT 0"); } };
-
- RooDataBase().addMigrations(migration).build
-
Room.databaseBuilder(mContext.getApplicationContext(),WorkRoomDataBase.class,"work_database") .addMigrations(ALL_MIGRATIONS) ....
-
- 注意,定义INTEGER字段的时候 需要加NOT NULL DEFAULT 0,否则汇报错(IlegalStateException)
-
SQLite 存储类
每个存储在 SQLite 数据库中的值都具有以下存储类之一:
存储类 描述 NULL 值是一个 NULL 值。 INTEGER 值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。 REAL 值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。 TEXT 值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。 BLOB 值是一个 blob 数据,完全根据它的输入存储。 SQLite 的存储类稍微比数据类型更普遍。INTEGER 存储类,例如,包含 6 种不同的不同长度的整数数据类型。
Dana.Lee
To:Dana_Lee1016@126.com