当前位置: 首页 > 知识库问答 >
问题:

SupportSQLiteQueryBuilder的选择方法的问题-房间原始查询

林元明
2023-03-14

我正在尝试使用SupportSQLiteQueryBuilder生成RawQuery,它工作得很好,但是当我尝试添加用于生成WHERE条件的选择方法时,它就不起作用了。

从这里引用文档:https://developer . Android . com/reference/androidx/SQLite/db/SupportSQLiteQueryBuilder # selection(Java . lang . string,java.lang.Object[])并发现该方法接受两个参数。

    < li >列名(对于WHERE条件) < li >价值

尝试过,但不知何故,第二个参数即bindArgs数组没有添加到查询中

我想要的查询:

选择 *从植物中植物原产地 = “日本”

所述查询被生成:

选择 *从植物那里 植物原产地

https://stackoverflow.com/a/56780629/8442557 尝试了这个答案,但仍然无法获得所需的结果。

大刀

@RawQuery(observedEntities = [Plant::class])
fun getPlantsFromOrigin(query: SupportSQLiteQuery): LiveData<List<Plant>>

存储库

 fun getPlantsFromOrigin(origin: String, isFavorite: Boolean = false): LiveData<List<Plant>> {
    return plantDao.getPlantsFromOrigin(QueryUtils().getPlantsBasedOnOrigin(origin, isFavorite))
}

QueryUtils 类 - getPlantsBasedOnOrigin 方法

fun getPlantsBasedOnOrigin(origin: String, showOnlyFav: Boolean): SimpleSQLiteQuery {
    val queryBuilder = SupportSQLiteQueryBuilder
        .builder(TABLE_NAME)
        .selection(COL_ORIGIN, arrayOf(origin))
    if (showOnlyFav) {
        queryBuilder.selection(COL_FAVORITE, arrayOf("1"))
    }
    val query = SimpleSQLiteQuery(queryBuilder.create().sql)
    Log.d("Generated SQL query", query.sql)
    return query
}

暂时还没有答案

 类似资料:
  • 我想实现Android房间持久性。这是我的DAO接口。 出于某种原因,我有以下编译错误: 错误:可观察的查询返回类型(LiveData、Flowable、DataSource、DataSourceFactory等)只能与直接或间接(例如通过@关系)访问至少一个表的SELECT查询一起使用。对于@RawQuery,您应该通过observedEntities字段指定要观察的表的列表。公开摘要andro

  • 如果我的查询结果是带有原始值的单个列,是否有办法使用jooq获取它们,避免原始装箱? 例如,从表中的每本书中获取页数作为int[]。

  • 我开始使用最新的androidx。支持io的文件室版本。reactivex返回类型。 简单dao类 生成用户dao\u Impl。java出现错误 错误:从内部类访问局部变量用户;需要宣布为最终 突出显示的字段在此方法中 的确,在java中应该将声明为final,但它是由类生成的。有人遇到过这个吗?

  • JavaScript 允许我们像使用对象一样使用原始类型(字符串,数字等)。JavaScript 还提供了这样的调用方法。我们很快就会学习它们,但是首先我们将了解它的工作原理,毕竟原始类型不是对象(在这里我们会分析地更加清楚)。 我们来看看原始类型和对象之间的关键区别。 一个原始值: 是原始类型中的一种值。 在 JavaScript 中有 7 种原始类型:string,number,bigint,

  • 问题内容: 我有一个JTree,其节点由JLabel和JComboBox组成。我想要的是,当单击时,选定的JComboBox会展开,但似乎第一次单击是JTree本身(?)占用的,因此我必须单击两次。 这是我的代码: 问题答案: 这是一个简短的示例: 这对我有用:Bug ID:JDK-8023474第一次按下鼠标并没有开始在JTree中进行编辑

  • 在eclipse RCP应用程序中,我有一个具有VIRTUAL样式的桌面浏览器,用于显示大量数据。 我正在使用自定义内容提供程序实现IStructuredContentProvider 我需要通过所有列对表数据进行排序。 所有列的排序都非常好。但是,我在表上有一个选择事件,并且有一些基于表选择的操作。 假设以下项目按顺序显示在视图上 A B C D E 单击特定列后,视图按下面提到的顺序排序 E