Я пытаюсь добавить обновление и удалить из таблицы 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