SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

onCreate () của RoomDatabase.Callback () không được gọi sau khi gọi thành công .build ()

Lý do tại sao OnCreate không được gọi là bởi vì nó chỉ được gọi một lần khi cơ sở dữ liệu được tạo lần đầu tiên và sau đó không bao giờ lặp lại miễn là cơ sở dữ liệu tồn tại.

Nếu bạn xóa dữ liệu của Ứng dụng hoặc gỡ cài đặt Ứng dụng rồi chạy lại, bạn sẽ thấy rằng onCreate sau đó được gọi.

ví dụ.

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

Sau khi xóa dữ liệu của Ứng dụng, kết quả là:-

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. selectArgs trong SQLiteQueryBuilder không hoạt động với các giá trị số nguyên trong cột

  2. Không có khóa cơ sở dữ liệu! trong android

  3. 2 cách để trở lại ngày Julian trong SQLite

  4. Cách / thứ tự được đề xuất để đọc dữ liệu từ một dịch vụ web, phân tích cú pháp dữ liệu đó và chèn nó vào db SQLite

  5. CHẾ ĐỘ XEM DROP của SQLite