使用静态变量更新房间数据库 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 注入的保护。
我找不到在 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 注入的保护。