我有String
来自 Java 的变量(例如,str
),它存储一些GString
表达式,可以说,它绝对是来自用户输入的动态字符串,我不知道会有"SELECT ${path} path FROM dual"
多少。${}
而且我不想在通过当前绑定sql.rows()
评估的情况下使用它。${path}
PreparedStatement
问题是:
- 如果我不
str
以GString
某种方式转换,它将抛出SQLException
,因为没有PreparedStatement
我们需要在 . 周围使用引号'${path}'
。但它是不安全的,而且 Groovy 会生成警告(我们应该使用PreparedStatement
和删除引号)。 - 如果我将转换
str
为GString
这种方式:sql.rows("${str}")
,那么 Groovy 将使用绝对错误的准备好的语句,其中只包含"?"
,当然,它不起作用,我需要语句:"SELECT ? path FROM dual"
。
问题是我们如何GString
不String
使用 包装它"${}"
?或者我们如何才能只评估GString
(only str
, not path
) 的第一级?或者我该如何以其他方式解决这个问题?
谢谢你。