Как проверить, есть ли определенный элемент в базе данных при использовании Room в Android? - PullRequest
0 голосов
/ 08 марта 2020
@Dao
interface ExampleDao {

    @Query("SELECT * FROM example_table WHERE id = :id")
    fun get(id: Int): LiveData<Example>

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insert(something: Example)
}

Когда я пытаюсь проверить, есть ли определенная строка в базе данных, используя строку ниже

val exists = dao.get(id).value != null
if (exists) {
    ...
}

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

1 Ответ

1 голос
/ 08 марта 2020

Я бы сделал это, сделав другой запрос, который возвращает true, если элемент существует, или false, если он не существует.

@Query("SELECT EXISTS (SELECT 1 FROM example_table WHERE id = :id)")
fun exists(id: Int): Boolean

И вызову его так, чтобы вам не нужно было проверять, Нет или нет:

val exists = dao.exists(id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...