Android 房间SQLite数据库-删除所有相似的%:参数%
我对Room有一个问题,我无法在其他地方找到帮助—在SQLite中使用“LIKE”时,通常用于匹配任意数量字符的“%”与我们在团队项目中使用的Room delete查询不兼容 我们在Kotlin中的一个DAO中有一个定义为字符串的删除查询:Android 房间SQLite数据库-删除所有相似的%:参数%,android,sqlite,kotlin,android-room,Android,Sqlite,Kotlin,Android Room,我对Room有一个问题,我无法在其他地方找到帮助—在SQLite中使用“LIKE”时,通常用于匹配任意数量字符的“%”与我们在团队项目中使用的Room delete查询不兼容 我们在Kotlin中的一个DAO中有一个定义为字符串的删除查询: const val DELETE_BY_RESERVATION_CODE = "DELETE FROM ${TdaRoomDatabase.TABLE_REQUESTS} WHERE uri LIKE :reservationCode" 和同一DAO中的d
const val DELETE_BY_RESERVATION_CODE = "DELETE FROM ${TdaRoomDatabase.TABLE_REQUESTS} WHERE uri LIKE :reservationCode"
和同一DAO中的deleteRequest:
@Query(DELETE_BY_RESERVATION_CODE)
fun deleteRequest(reservationCode: String)
但是,在“:reservationCode”参数引用周围添加百分比符号后,我们会出现以下错误:
输入“从uri为%的请求中删除”时没有可行的替代方案
有人知道在房间数据库查询中使用“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 || '%'"
输入查询的可能重复是基于网络响应中的字符串,我认为使用
“%”+input+“%”之类的东西来包围输入查询是非常难看的,但是我找到了一个更漂亮的解决方案,它在DAO中处理问题,而不是用“%”来包装输入,谢谢您的帮助,我已经编辑了该问题,以帮助任何遇到该问题的其他人。感谢用户提供有用的答案!