Nic*_*ock 2 mysql postgresql groovy
我正在使用 Groovy 对我的数据库进行查询,查询运行良好并带回正确的数据,但是我在终端中收到此错误。
在 Groovy SQL 中,请不要在动态表达式(以 $ 开头)周围使用引号,因为这意味着我们不能使用 JDBC PreparedStatement,因此是一个安全漏洞。Groovy 已经解决了您的错误,但安全漏洞仍然存在。
这是我的查询
sql.firstRow("""select elem
from site_content,
lateral jsonb_array_elements(content->'playersContainer'->'series') elem
where elem @> '{"id": "${id}"}'
""")
Run Code Online (Sandbox Code Playgroud)
如果我将其更改为 $id 或
sql.firstRow("""select elem
from site_content,
lateral jsonb_array_elements(content->'playersContainer'->'series') elem
where elem @> '{"id": ?}'
""", id)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
org.postgresql.util.PSQLException:列索引超出范围:1,列数:0。
Positionalornamed参数由 groovy sql 正确处理,应使用而不是"'$id'".
正如@Opal 所提到的和此处所述,您应该将参数作为 alist或传递map:
sql.execute "select * from tbl where a=? and b=?", [ 'aa', 'bb' ]
sql.execute "select * from tbl where a=:first and b=:last", first: 'aa', last: 'bb'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1930 次 |
| 最近记录: |