SQLite
 sql >> Base de données >  >> RDS >> SQLite

onCreate() de RoomDatabase.Callback() n'a pas été appelé après un appel réussi à .build()

La raison pour laquelle OnCreate n'est pas appelé, c'est parce qu'il n'est appelé qu'une seule fois lorsque la base de données est créée pour la première fois, puis plus jamais tant que la base de données existe.

Si vous supprimez les données de l'application ou désinstallez l'application, puis la réexécutez, vous verrez que onCreate est alors appelé.

par exemple.

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

Après avoir supprimé les résultats de données de l'application :-

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.