如何在Android的房间库中的@query中使用where

时间:2018-07-13 06:53:35

标签: android android-room

我正在使用Room Persistence库访问数据库数据。

在我的dao课堂中,我将查询写为

@Query("SELECT id, uniqueId, number, user_id, first_name, last_name,
           image FROM CONTACTS WHERE status != stts")
    abstract fun allContacts(stts: Int): DataSource.Factory<Int, Contact>

很好。但是,如果我必须将状态与某个常数进行比较,该怎么办? 像状态!= Constant.STATUS_FAILED

这里 在常量文件中定义的val STATUS_FAILED = 5。

如何在查询中使用它。我知道我可以在allContacts方法中将其作为参数传递,并使用类似status!=:stts的参数。但是我不想要那样。 有没有办法像状态!= Constant.STATUS_FAILED一样直接使用它。

我在https://developer.android.com/training/data-storage/room/accessing-data上没有看到任何示例

3 个答案:

答案 0 :(得分:0)

尝试一下

@Query("SELECT id, uniqueId, number, user_id, first_name, last_name,
       image FROM CONTACTS WHERE status != " + Constant.STATUS_FAILED)
abstract fun allContacts(): DataSource.Factory<Int, Contact>

答案 1 :(得分:0)

您必须在@Query中添加此内容

  

@Query(“从锻炼中选择*,其中nameTypeTraining =:nameTypeTraining”)

  • getAllWorkout(String nameTypeTraining);

答案 2 :(得分:0)

您可以使用字符串格式输入常数。

@Query(String.format("SELECT id, uniqueId, number, user_id, first_name, last_name,
           image FROM CONTACTS WHERE status != %s", Constants.STATUS_FAILED))
    abstract fun allContacts(stts: Int): DataSource.Factory<Int, Contact>

希望这会有所帮助!