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 種不同的不同長度的整數數據類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM