Оболочка базы данных комнаты с LiveData - не удалось просмотреть значения в базе данных - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь добавить обновление и удалить из таблицы SQLLite с интерфейсом Room. Все параметры в списке работают нормально, кроме обновления. Когда я пытаюсь просмотреть данные в базе данных, я не вижу даже таблицы.

@Dao
public interface DaoAccess {

    @Insert(onConflict = OnConflictStrategy.IGNORE)
    long insertTodo(ToDo_Item todo);

    @Insert
    void insertTodoList(List<ToDo_Item> todoList);

    @Query("SELECT * FROM " + ToDo_DB.TABLE_NAME_TODO)
    LiveData <List<ToDo_Item>> fetchAllTodos();

    @Query("SELECT * FROM " + ToDo_DB.TABLE_NAME_TODO + " WHERE category = :category")
    LiveData <List<ToDo_Item>> fetchTodoListByCategory(String category);

    @Query("SELECT * FROM " + ToDo_DB.TABLE_NAME_TODO + " WHERE todo_id = :todoId")
    LiveData <List<ToDo_Item>> fetchTodoListById(int todoId);

    @Query("SELECT * FROM " + ToDo_DB.TABLE_NAME_TODO + " WHERE done = :vardone")
    LiveData <List<ToDo_Item>> fetchTodoListByDone(boolean vardone);

    @Update
    int updateTodo(ToDo_Item todo);

    @Delete
    int deleteTodo(ToDo_Item todo);

    @Query("DELETE FROM " + ToDo_DB.TABLE_NAME_TODO )
    int deleteAll();
}

Это мой DaoAccess для базы данных.

@Database(entities = {ToDo_Item.class}, version = 1, exportSchema = false)
public abstract class ToDo_DB extends RoomDatabase {

    public static final String DB_NAME = "todo_db";
    public static final String TABLE_NAME_TODO = "todo";

    public abstract DaoAccess daoAccess();

    private static volatile ToDo_DB INSTANCE;
    private static final int NUMBER_OF_THREADS = 4;
    static final ExecutorService databaseWriteExecutor =
            Executors.newFixedThreadPool(NUMBER_OF_THREADS);

    static ToDo_DB getDatabase(final Context context) {
        if (INSTANCE == null) {
            synchronized (ToDo_DB.class) {
                if (INSTANCE == null) {
                    INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
                            ToDo_DB.class, DB_NAME).addCallback(sRoomDatabaseCallback)
                            .build();
                }
            }
        }
        return INSTANCE;
    }

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

            // If you want to keep data through app restarts,
            // comment out the following block
            databaseWriteExecutor.execute(() -> {
                // Populate the database in the background.
                // If you want to start with more words, just add them.
                DaoAccess dao = INSTANCE.daoAccess();
                dao.deleteAll();

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

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

Скриншот пустой базы данных просматривается через браузер sqllite

...