我尝试执行以下操作:
@Query("SELECT COUNT(s_row) FROM table WHERE data = :data")
fun isDataExist(data: String): Boolean{
if (*QUERY_RETURN*) > 0{
return true
} else {
return false
}
}
所以我的问题是,如果数据库中已经存在数据,是否有一种方法可以让主体测试查询返回,然后返回布尔值?
对于初学者来说,dao
是interface
,您不应该实现它的方法。
@Dao
interface DataDao {
//dao function should not have a body
@Query("SELECT * FROM some_table")
suspend fun selectFunction():List<String>
//dao function should not have a body
@Query("DELETE FROM some_table")
suspend fun clearData() .... }
你只需要编写查询,ROOM有底层逻辑来完成其余的工作
在您的情况下,您可以使用标识符或id来查询该项是否存在于数据库中。
您可以执行类似的操作——注意,这是一个suspend
函数,因为它是一个数据库操作。
@Query("SELECT EXISTS(SELECT 1 FROM table_name WHERE id=:id)")
suspend fun isDataExist(id: String): Boolean
之后,您可以在存储库实现或ViewModel(使用ViemodelScope(中使用此功能