sql >> Databasteknik >  >> RDS >> SQLite

onCreate() av ​​RoomDatabase.Callback() anropades inte efter ett lyckat anrop till .build()

Anledningen till att OnCreate inte anropas beror på att den bara anropas en gång när databasen först skapas och sedan aldrig igen så länge databasen finns.

Om du tar bort appens data eller avinstallerar appen och sedan kör den igen ser du att onCreate kallas då.

t.ex.

private void BuildDatabase() {
   RoomDatabase.Builder roombuilder = Room.databaseBuilder(this, Database.class,"mydb");
   roombuilder.addCallback(new RoomDatabase.Callback() {
       @Override
       public void onCreate(@NonNull SupportSQLiteDatabase db) {
           super.onCreate(db);
           Log.d("ONCREATE","Database has been created.");
       }

       @Override
       public void onOpen(@NonNull SupportSQLiteDatabase db) {
           super.onOpen(db);
           Log.d("ONOPEN","Database has been opened.");
       }
   });
   mRoomDB = (Database) roombuilder.build();
}

Efter att ha raderat appens data resulterar det i:-

2018-12-20 06:36:23.045 2271-2287/so53839431.so53839431roomrelationship D/ONCREATE: Database has been created.
2018-12-20 06:36:23.055 2271-2287/so53839431.so53839431roomrelationship D/ONOPEN: Database has been opened.


  1. Alternativt utdataformat för psql

  2. Förhindra InnoDB automatisk ökning PÅ DUBLIKATNYCKEL

  3. Django unika tillsammans begränsningsfel?

  4. Vad är användningen av hakparenteser [] i sql-satser?