准备好的语句java中的OR子句

问题描述

我们可以在使用 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");