【问题标题】:How to use where in @query in room library in Android如何在Android房间库的@query中使用where
【发布时间】:2018-07-13 06:53:34
【问题描述】:

我正在使用我的 Room 持久性库来访问数据库数据。

在我的 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 。但我不希望那样。 有什么办法可以像 status != Constant.STATUS_FAILED 一样直接使用它。

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

【问题讨论】:

    标签: android android-room


    【解决方案1】:

    您必须在@Query 中添加:

    @Query("Select * from Workout where nameTypeTraining= :nameTypeTraining")

    • getAllWorkout(String nameTypeTraining);

    【讨论】:

      【解决方案2】:

      这样试试

      @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>
      

      【讨论】:

        【解决方案3】:

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

        @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>
        

        希望对您有所帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-19
          • 1970-01-01
          • 2022-09-30
          • 1970-01-01
          • 2021-09-13
          • 1970-01-01
          • 2021-12-17
          • 1970-01-01
          相关资源
          最近更新 更多