当前位置: 首页 > 知识库问答 >
问题:

房间SQLite数据库-删除所有类似%:param%

桂梓
2023-03-14

我对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为%的请求中删除”时没有可行的替代方案

有人知道在房间数据库查询中使用“喜欢”时如何使用百分比符号吗?我和我的团队(不太熟悉SQL)期望它表现得像SQLite,但事实似乎并非如此!

共有1个答案

东郭兴学
2023-03-14

谢谢你的帮助!我发现了两种解决方案——一种在注释中描述过,它涉及在调用DAO方法时用“%”包装输入参数。

我发现更优雅的解决方案是stackoverflow.com/questions/44234644/android-rooms-search-in-string,它将输入选择器符号保留在DAO中的查询字符串中,而不是在调用DAO方法的任何地方包装输入参数。

这意味着刀串最终是这样的:

const val DELETE_BY_RESERVATION_CODE = "DELETE FROM ${TdaRoomDatabase.TABLE_REQUESTS} WHERE uri LIKE '%' || :reservationCode || '%'"
 类似资料:
  • 我知道我不能在查询中使用删除(顺便说一句,这很遗憾),我会得到以下错误: 但是我不能使用Delete(其中…xxx)那么如何通过参数删除特定行?

  • 附注。我对Sqlite没有太多的经验

  • 我开始使用一个代码,使用Firebase实时数据库。我将它实现到我的解决方案中。连接和控制非常完美,所以我将其用于生产环境。 一段时间后,我在升级,我需要再次删除所有数据-但请稍候,控制台中最高根级别不再有删除按钮,并且一次只允许在一个选定项目中: 上次更新仅显示此消息,没有后续步骤: 只读 问:如何一次删除所有数据?

  • 这是提供用户输入的主活动 } 这是Add_prople类 公共类Add_people扩展AppCompatActivity实现视图。OnClickListener{private EditText name EditText;private EditText ageEditText;private EditText heightEditText;private EditText weightede

  • 我在编码方面是新手,所以我复制粘贴了一些教程的代码,但是当我试图删除“睡眠”列中的所有数据时,出现了这个错误。 Android数据库sqlite。SQLiteException:在“20170128”附近:编译时出现语法错误(代码1)::在android上从20170128删除。数据库sqlite。SQLiteConnection。android上的nativePrepareStatement(本

  • 错误:查询有问题:[SQLITE_ERROR]SQL错误或缺少数据库(没有这样的表:任务) 显示了这个错误,我怎么可能修复它? 我正在学习这个教程