我有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) 的第一级?或者我该如何以其他方式解决这个问题?
谢谢你。