使用静态变量更新房间数据库 android

Update room db android with static variables

我找不到在 DAO 方法中使用我的静态变量的方法,而不通过方法本身传递它们。

示例:

这个有效:

@Transaction
@Query("UPDATE OpsPrinterDevice SET connectionStatus=:from WHERE connectionStatus=:to")
abstract fun switchDevicesConnection(from: String = Parameters.CONNECTED,to: String = Parameters.DISCONNECTED)

这不起作用:

@Transaction
@Query("UPDATE OpsPrinterDevice SET connectionStatus=${Parameters.CONNECTED} WHERE connectionStatus=${Parameters.DISCONNECTED}")
abstract fun switchDevicesConnection()

后者之所以不起作用,是因为SQLite syntax for literal values。您需要用单引号将字符串值括起来,例如

@Query("UPDATE OpsPrinterDevice SET connectionStatus='${Parameters.CONNECTED}' WHERE connectionStatus='${Parameters.DISCONNECTED}'")
  • 但是,建议不要使用嵌入变量,而不是绑定它们。绑定值(又名使用 :passed_variable)会自动正确包含并提供针对 SQL 注入的保护。