我注意到,当我使用PreparedStatement时,它似乎无法转义某些通配符,如“%”或“_”。我知道在MySql中可以使用反斜杠对它们进行转义。这让我想知道,PreparedStatement会转义哪些字符?
发布于 2010-10-14 23:45:02
PreparedStatement不会逃脱任何东西-它依赖于数据库对预编译语句的支持。
也就是说,PreparedStatement永远不会为了形成文字查询字符串而用?代替参数值。相反,它将带有占位符的查询字符串发送到数据库,并使用数据库支持来绑定查询参数(但是,这可能取决于JDBC驱动程序实现)。
发布于 2012-04-09 09:24:18
在我的测试中,它转义了单引号、\r、\t、\n等。它工作得很好:
String sql = "INSERT INTO test(title) VALUES(?)";
PreparedStatement stmt = con.prepareStatement(sql);
String title = "I'm a \"student\" in a \t (university) \r\n";
stmt.setString(1, title);
stmt.executeUpdate();https://stackoverflow.com/questions/3934943
复制相似问题