预处理语句如何跳过转义字符?



我有一个这样的查询

val ps = con.prepareStatement(s"SELECT * from employee where name LIKE ?")
ps.setString(1, "%" + searchTerm + "%")
val rs = ps.executeQuery()

,当我打印预处理语句时,我得到

:HikariProxyPreparedStatement@710925960 wrapping com.mysql.cj.jdbc.ClientPreparedStatement: SELECT * from employee where name LIKE '%abc''%'

如果我在mysql编辑器中运行SELECT查询,我得到错误,因为查询是畸形的。但是当我运行准备好的语句时,我没有得到错误。为什么?

如果上面的查询出错,准备好的语句运行什么查询?我看到一个空的结果集,这意味着查询没有失败。准备好的语句是否自行更改查询?

使用预处理语句时,在被解析后,参数的值才会与查询合并。因此,参数值中的任何特殊字符都不可能打乱查询的语法。

相关内容

  • 没有找到相关文章

最新更新