【发布时间】:2011-07-13 14:32:53
【问题描述】:
是否有内置方法可以为 SQL 转义字符串?我会使用 setString,但碰巧我在同一个组合 SQL 语句中多次使用 setString,如果转义只发生一次而不是每次我说 setString 时,性能会更好(我认为)。如果我在变量中有转义字符串,我可以重复使用它。
在 Java 中没有办法做到这一点吗?
当前方法,多源搜索。实际上,它们是三个完全不同的 where 语句,包括连接,但在本例中,我将只显示每个表的相同 where 语句。
String q = '%' + request.getParameter("search") + '%';
PreparedStatement s = s("SELECT a,b,c FROM table1 where a = ? UNION select a,b,c from table2 where a = ? UNION select a,b,c FROM table3 where a = ?");
s.setString(1, q);
s.setString(2, q);
s.setString(3, q);
ResultSet r = s.executeQuery();
我知道这没什么大不了的,但我喜欢让事情变得高效,而且在某些情况下使用" + quote(s) + " 而不是? 更易读,然后在某处找到setString .
【问题讨论】:
-
你想逃避什么角色?
-
向我们展示您的一些代码会对您有所帮助。
-
@RMT: 所有被
setString转义的字符我不希望由于搜索值而导致注入攻击或语法错误的可能性。