Aller au contenu

Remplir la base de données

Il n'y a pas de données dans la base de données. Vous pouvez ajouter des données de deux manières : en ajoutant des données lors de l'ouverture de la base de données ou en ajoutant une activité pour ajouter des mots.

Pour supprimer tout le contenu et remplir la base de données lors de l'installation de l'application, vous créez un RoomDatabase.Callback et remplacez la méthode onOpen().

Voici le code pour créer le rappel dans la classe WordRoomDatabase. Comme vous ne pouvez pas effectuer d'opérations sur la base de données Room sur le thread de l'interface utilisateur, onOpen() utilise l'executor databaseWriteExecutor défini précédemment pour exécuter un lambda sur un thread d'arrière-plan. Le lambda supprime le contenu de la base de données, puis la remplit avec les deux mots "Hello" et "World". N'hésitez pas à ajouter d'autres mots !

data/db/WordRoomDatabase.java
private static RoomDatabase.Callback sRoomDatabaseCallback = new RoomDatabase.Callback() {
        @Override
        public void onOpen(@NonNull SupportSQLiteDatabase db) {
            super.onOpen(db);

            // Si vous souhaitez conserver les données au redémarrage de l'application
            // commentez le bloc suivant
            databaseWriteExecutor.execute(() -> {
                // Remplir la base de données en arrière-plan
                // Si vous voulez commencer avec plus de mots, il suffit de les ajouter.
                WordDao dao = INSTANCE.wordDao();
                dao.deleteAll();

                Word word = new Word("Hello");
                dao.insert(word);
                word = new Word("World");
                dao.insert(word);
            });
        }
    };

Ensuite, ajoutez le callback à la séquence de construction de la base de données juste avant d'appeler .build() sur Room.databaseBuilder() :

data/db/WordRoomDatabase.java
.addCallback(sRoomDatabaseCallback)