问题描述
我们可以在使用 Java 的 PreparedStatement 中使用 OR 子句吗?
PreparedStatement stmt=con.prepareStatement("delete from emp where id=?");
stmt.setString(1,"'MIKE' || 'ANDY'");
int i = stmt.executeUpdate();
System.out.println(i + " records deleted");
解决方法
没有。这不是原始文本替换,您不能放入查询的块中并期望它们被合并。替换占位符的每个内容都会被清理、编码并作为单独的值引用。
但是你可以用 2 个占位符来写:
PreparedStatement stmt=con.prepareStatement(
“delete from emp where id in (?,?)”);
stmt.setString(1,"MIKE”);
stmt.setString(2,“ANDY”);
如果 IN 子句中有很多值,另一种方法是将这些值放在一个表中并连接到它。
,您可以简单地使用两个参数。
PreparedStatement stmt=con.prepareStatement("delete from emp where id=? or id=?");
stmt.setString(1,"ANDY");
stmt.setString(2,"MIKE");