Как я могу удалить все записи в определенной таблице, используя Библиотеку комнат? Мне нужно удалить таблицу, но я не могу найти какую-либо информацию, как это сделать.
Только когда база данных мигрирует или загружает все записи и удаляет их :)
Как я могу удалить все записи в определенной таблице, используя Библиотеку комнат? Мне нужно удалить таблицу, но я не могу найти какую-либо информацию, как это сделать.
Только когда база данных мигрирует или загружает все записи и удаляет их :)
clearAllTables()
команду «удаляет все строки из всех таблиц, которые зарегистрированы в этой базе данных как лица ()». Я включил это как ответ ниже, но я воспроизвожу здесь для наглядности.Ответы:
Вы можете создать метод DAO для этого.
источник
@Query
было ограничено вещами, которые возвращают наборы результатов (сродниrawQuery()
). Очень круто!@Delete
принимает параметров и удалить все из таблицы? Я пытаюсь найти трекер комнаты, чтобыIds
? Мне это понравилось, но идентификаторы таблиц продолжают увеличиваться. В реальной таблице идентификаторы сброса также сбрасываются, чтобы начать с 0 снова.Начиная с Room
1.1.0
вы можете использовать clearAllTables (), которая:источник
SELECT name FROM sqlite_master WHERE type='table'
а затем вручнуюDELETE FROM {TABLE}
. Хотя не проверял это.Если вы хотите удалить запись из таблицы в комнате, просто вызовите эту функцию,
Обновление: и если вы хотите удалить полную таблицу, вызовите функцию ниже,
Примечание. Здесь MyModel - это имя таблицы.
источник
Используйте clearAllTables () с RXJava, как показано ниже, чтобы избежать
java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.
источник
У меня были проблемы с методом удаления всех при использовании RxJava для выполнения этой задачи в фоновом режиме. Вот как я наконец решил это:
и
источник
thread {}
вместо того, чтобы возиться с RxJavaОбъединяя то, что говорит Дик Лукас, и добавляя автоинкремент сброса из других сообщений StackOverFlow, я думаю, что это может сработать:
источник
Чтобы использовать Комнату без злоупотребления
@Query
аннотацией, сначала@Query
выберите все строки и поместите их в список, например:@Query("SELECT * FROM your_class_table")
Поместите его список в аннотацию удаления, например:
@Delete
источник
Вот как я это сделал в Котлине.
Введите номер db в упражнении, используя DI (Koin).
Тогда вы можете просто вызвать clearAllTables ()
личное развлечение clearRoomDB () {GlobalScope.launch {appDB.clearAllTables () Предпочтения.
источник