【发布时间】:2018-07-02 12:56:11
【问题描述】:
是否可以在 Room 中使用 SQLite 的 IN 条件?
我正在尝试从我的数据库中选择一个项目列表,其中某个列的值(在本例中为 TEXT 列)与一组过滤器值中的任何一个匹配。据我所知,这在 SQL 和 SQLite 中很容易完成,只需在 SELECT 语句 (see here) 中添加 IN 条件即可。但是,我似乎无法让它与 Room 一起使用。
我不断收到此错误:
Error:(70, 25) error: no viable alternative at input 'SELECT * FROM Table WHERE column IN :filterValues'
(其中DAO @Query-annotated 方法的输入称为filterValues)
我现在尝试了三种不同的方法:
- 将参数作为
List<String>传递 - 将参数作为
String[]传递 - 最后将参数传递为简单的
String,但格式为(value_1, value_2, ..., value_n)
最后一个应该很容易工作,因为它将(或至少应该)直接转换为SELECT * FROM Table WHERE column IN (value_1, value_2, ..., value_n),如果您只是访问直接数据库。
【问题讨论】:
-
@CommonsWare 是的,这会立即解决我的问题。不幸的是,我在所有搜索中都没有遇到过这个问题,因为我专门寻找有关 Room 和
SELECT的信息,并带有IN条件(该问题中实际上没有提到)。 -
请注意,the question 中提到了所有这些内容。
标签: android sqlite select android-room sql-in