sql >> データベース >  >> RDS >> SQLite

RoomDatabase.Callback()のonCreate()は、.build()の呼び出しが成功した後に呼び出されませんでした

    OnCreateの理由 呼び出されないのは、データベースが最初に作成されたときに一度だけ呼び出され、データベースが存在する限り二度と呼び出されないためです。

    アプリのデータを削除するか、アプリをアンインストールしてから再実行すると、 onCreateが表示されます。 その後、呼び出されます。

    例えば

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

    アプリのデータを削除すると、次のようになります:-

    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. SpotlightCloudを使用してSQLServerのブロックを解決する

    2. 複雑すぎるOraclejdbcBLOB処理

    3. 災害復旧のためのPostgreSQLレプリケーション

    4. 最初の行に参加する方法