Ale*_*alo 6 sql android android-room
我正在使用 Room 库,有数据库站,并希望执行查询以获取带/不带过滤器的站。
更新。我有 DAO,我想在我的数组 (groupIds) 为空或为空时获取所有记录,如果我在列表中有一个数组元素,则获取过滤列表。
@Query("SELECT * FROM $STATIONS_TABLE_NAME WHERE ((:groupIds) IS NULL OR $GROUP_ID IN(:groupIds))
fun getStationsWithFilter(groupIds: IntArray?): Flowable<List<DbStation>>
Run Code Online (Sandbox Code Playgroud)
此刻我遇到了一个问题
08-29 16:09:00.139 9508-9508/->BaseActivity: showError: exception - near ",": syntax error (code 1): , while compiling: SELECT * FROM Stations WHERE ((?,?,?,?,?,?,?,?,?,?) IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
所以,
1)我可以检查空传递值来查询和动态chabge SQL查询吗?
2)如果是 - 我有什么语法问题?
交易是在 SQL 查询的这一部分
WHERE ((:groupIds) IS NULL
Run Code Online (Sandbox Code Playgroud)
groupIds - 是一个数组,我在那个地方有一个语法异常。
我的解决方法:我开始传递 2 个参数来查询而不是 1,第一个 - 字符串作为 Nullable 标志(我认为它可能是一个直接的布尔值),第二个 - 第二个子句的 Int 数组。
@Query("SELECT * FROM $STATIONS_TABLE_NAME WHERE :nullableFlag IS NULL OR $GROUP_ID IN (:groupIds))
fun getStationsWithFilter(nullableFlag: String?, groupIds: IntArray?): Flowable<List<DbStation>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1996 次 |
| 最近记录: |