Room 的 SQL 参数 ':par'

问题描述 投票:0回答:1

enter image description here

看这张图,我的参数deviceType是int,所以使用:deviceType是正确的,但是我的deviceId是String,我需要使用'deviceId',所以是错误的。请询问 Room 如何转义单引号'

我尝试使用,他不能

"SELECT  * from anitsnore_statistics where Device_type=:deviceType and deviceid =\':deviceId\'"
android sqlite android-room
1个回答
0
投票

假设您希望

deviceId = 'whatever_device_passed'
(注意不是按照要求的 SQL 包含单引号)作为搜索内容。

deviceId 传递给函数hold 的值是

whatever_device_passed
,但是您希望将其括在单引号中,那么您可以使用:-

deviceid =''''||:deviceId||''''
  • 即文本值内的 2 个引号(因此解析的值是单引号)与传递的 deviceid(将在引号中)连接,再次与单引号连接。因此,您将
    deviceid = 'whatever_device_passed'
    作为完全解析的值(即单引号是要比较的值的一部分)。

但是,如果您只是搜索传递的 deviceId,则 deviceid =:deviceId 就足够了。也就是说 Room 在处理传递的值时会正确地将值括在单引号中。

  • 您确定这实际上不是您想要的吗? (修辞)

另一种方法是包含单引号,即在传递给函数的 deviceId 值中包含单引号。在这种情况下,SQLite 绑定将正确括起单引号。

© www.soinside.com 2019 - 2024. All rights reserved.