Reputation: 1769
@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)
}
When I try to check if there's a certain row in the database using line below
val exists = dao.get(id).value != null
if (exists) {
...
}
exists variable always return null I know there's the row already in the database and UI shows the info correctly. Why it always return null and how do I check if there's the row or not in the room database?
Upvotes: 9
Views: 8700
Reputation: 3745
I would do it by making another query that returns true if the item exists or false if it doesn't.
@Query("SELECT EXISTS (SELECT 1 FROM example_table WHERE id = :id)")
fun exists(id: Int): Boolean
And call it like this so you don't need to check if it's null or not:
val exists = dao.exists(id)
Upvotes: 22