sql >> Database >  >> RDS >> SQLite

onCreate() van RoomDatabase.Callback() is niet aangeroepen na een succesvolle aanroep van .build()

De reden waarom OnCreate niet wordt aangeroepen is omdat het maar één keer wordt aangeroepen wanneer de database voor het eerst wordt gemaakt en daarna nooit meer zolang de database bestaat.

Als u de gegevens van de app verwijdert of de app de-installeert en vervolgens opnieuw start, ziet u dat onCreate wordt dan gebeld.

bijv.

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();
}

Na het verwijderen van de app-gegevens resulteert in:-

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. Hoe de grootte van een MySQL-database te krijgen?

  2. Vijf coole dingen die ik heb geleerd op de PostgreSQL Conference Europe 2018

  3. Het verzoek is mislukt met HTTP-status 401:Ongeautoriseerd IN SSRS

  4. SQLite en aangepaste volgorde door