Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 房间SQLite数据库-删除所有相似的%:参数%_Android_Sqlite_Kotlin_Android Room - Fatal编程技术网

Android 房间SQLite数据库-删除所有相似的%:参数%

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

我对Room有一个问题,我无法在其他地方找到帮助—在SQLite中使用“LIKE”时,通常用于匹配任意数量字符的“%”与我们在团队项目中使用的Room delete查询不兼容

我们在Kotlin中的一个DAO中有一个定义为字符串的删除查询:

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中处理问题,而不是用“%”来包装输入,谢谢您的帮助,我已经编辑了该问题,以帮助任何遇到该问题的其他人。感谢用户提供有用的答案!