Android sql облегченная комната, как запросить открытую базу данных? - PullRequest
0 голосов
/ 13 января 2020

Я просто хочу выполнить запрос, когда моя база данных открывается. Есть ли способ добиться этого с помощью комнаты, я имею в виду правильный способ выполнить оператор sql перед загрузкой репозитория и все вещи со страховкой, что все будет синхронизировано?

Здесь вы можете найти мой код.

 public static synchronized AppDatabase getInstance(final Context context) {
        if (sInstance == null) {
            sInstance = Room
                    .databaseBuilder(context.getApplicationContext(), AppDatabase.class, context.getResources().getString(R.string.app_database))
                    .allowMainThreadQueries()
                    .addCallback(new RoomDatabase.Callback() {

                        @Override
                        public void onCreate(@NonNull SupportSQLiteDatabase db) {
                            super.onCreate(db);
                        }


                        @Override
                        public void onOpen(@NonNull SupportSQLiteDatabase db) {
                            super.onOpen(db);
                            // query execution
                            executeUpdate(db);
                        }


                        @Override
                        public void onDestructiveMigration(@NonNull SupportSQLiteDatabase db) {
                            super.onDestructiveMigration(db);
                        }

                    })
                    .build();
        }
        return sInstance;
    }

Там вы можете найти детали моего запроса. Нужно ли вкладывать деньги в транзакцию или нет?

private static void executeUpdate(SupportSQLiteDatabase db){
        try {
            db.beginTransaction();
            db.execSQL("UPDATE .....");
            db.setTransactionSuccessful();
            db.endTransaction();
        }
        catch (Exception e){
        }
    }

Спасибо за помощь!

...