SQLite
 sql >> Baza danych >  >> RDS >> SQLite

onCreate() funkcji RoomDatabase.Callback() nie został wywołany po pomyślnym wywołaniu funkcji .build()

Powód, dla którego OnCreate nie jest wywoływana, ponieważ jest wywoływana tylko raz, gdy baza danych jest tworzona po raz pierwszy, a potem nigdy więcej, dopóki baza danych istnieje.

Jeśli usuniesz dane aplikacji lub odinstalujesz aplikację, a następnie uruchomisz ją ponownie, zobaczysz, że onCreate jest wtedy wywoływana.

np.

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 usunięciu danych aplikacji :-

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLiteReadOnlyDatabaseException:próba napisania bazy danych tylko do odczytu (kod 1032)

  2. SQLite JSON_TYPE()

  3. Jak poprawnie zamknąć kursor w Androidzie

  4. Jak działa SQLite Ifnull()

  5. Mam aplikację na Androida, która pobiera dane z sqlite i wyświetla dane w BaseAdapter .. jaki jest najlepszy sposób?