Bry*_*yen 3 sqlite android kotlin android-room
我有一个 Room 问题,我无法在其他地方找到帮助 - 在 SQLite 中使用“LIKE”时通常用于匹配任意数量字符的“%”不适用于我们正在使用的 Room 删除查询我团队的项目。
在我们的一个 DAO 中,我们有一个在 Kotlin 中定义为字符串的删除查询:
const val DELETE_BY_RESERVATION_CODE = "DELETE FROM ${TdaRoomDatabase.TABLE_REQUESTS} WHERE uri LIKE :reservationCode"
Run Code Online (Sandbox Code Playgroud)
以及同一个 DAO 中的 deleteRequest:
@Query(DELETE_BY_RESERVATION_CODE)
fun deleteRequest(reservationCode: String)
Run Code Online (Sandbox Code Playgroud)
但是,在 ':reservationCode' 参数引用周围添加百分比符号后,我们得到以下错误:
在输入“DELETE FROM requests WHERE uri LIKE %”处没有可行的替代方案
有没有人知道在 Room DB 查询中使用“LIKE”时如何使用百分比符号?我和我的团队(不精通 SQL)希望它的行为像 SQLite,但事实并非如此!
谢谢你的帮助!我找到了两种解决方案 - 一种在评论中进行了描述,它涉及在调用 DAO 方法时用 '%' 包装输入参数。
我发现更优雅的解决方案是 stackoverflow.com/questions/44234644/android-rooms-search-in-string,它将输入选择器符号保留在 DAO 中的查询字符串中,而不是包装输入调用 DAO 方法的任何地方的参数。
这意味着 DAO 字符串最终看起来像这样:
const val DELETE_BY_RESERVATION_CODE = "DELETE FROM ${TdaRoomDatabase.TABLE_REQUESTS} WHERE uri LIKE '%' || :reservationCode || '%'"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1188 次 |
最近记录: |