sql >> Databáze >  >> RDS >> SQLite

onCreate() z RoomDatabase.Callback() nebylo voláno po úspěšném volání .build()

Důvod, proč OnCreate není volána proto, že je volána pouze jednou při prvním vytvoření databáze a poté již nikdy znovu, dokud databáze existuje.

Pokud smažete data aplikace nebo aplikaci odinstalujete a poté ji znovu spustíte, uvidíte, že onCreate se pak nazývá.

např.

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

Po smazání dat aplikace se zobrazí :-

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. Microsoft Access – základy

  2. Sdružování připojení na serveru .NET/SQL?

  3. jak zjistit velikost řádku v tabulce

  4. Pořadí vrácení řádku SQL