Java 删除使用setNull don';行不通
我想删除列为null的DB并使用preparedstatement 这是我的密码Java 删除使用setNull don';行不通,java,jdbc,Java,Jdbc,我想删除列为null的DB并使用preparedstatement 这是我的密码 String deletesql = "delete from user where e-mail = ?"; PreparedStatement prestmt = conn.prepareStatement(deletesql); prestmt.setNull(1,Types.VARCHAR); prestmt.executeUpdate(); 但是这些代码不起作用请用 String deletesql =
String deletesql = "delete from user where e-mail = ?";
PreparedStatement prestmt = conn.prepareStatement(deletesql);
prestmt.setNull(1,Types.VARCHAR);
prestmt.executeUpdate();
但是这些代码不起作用请用
String deletesql = "delete from user where e-mail is null";
如果某个内容未知(NULL),则它不等于其他内容(=
)请看这里
您必须使用类似“DELETE WHERE e-mail IS NULL”的语句,并省略“setNull”调用。可能您希望将其放入一个单独的准备好的语句中,因为该语句只适用于空列。在SQL
something=NULL
中未知,您需要使用something is NULL
,或者在参数something is?
的情况下,使用setNull(1,Types.NULL)
如果希望同时具有空值和非空值,则需要将其稍微复杂一些:
(something is ? or something = ?)
甚至(前一个可能不适用于所有数据库):
然后使用:
if (something == null) {
stmt.setNull(1, Types.NULL);
// NOTE: check behavior of your db, some might require a non-null value here
stmt.setXxxx(2, null);
} else {
// Setting a null-type parameter to a non-null value should mark it as not null
stmt.setObject(1, "not null", Types.NULL);
// Use appropriate setter
stmt.setXxxx(2, something);
}
为什么它不工作,它抛出异常或什么?@YCF_L它不会工作,因为
something=null
未知(或null)。嗯,谢谢@markrottveel:)
if (something == null) {
stmt.setNull(1, Types.NULL);
// NOTE: check behavior of your db, some might require a non-null value here
stmt.setXxxx(2, null);
} else {
// Setting a null-type parameter to a non-null value should mark it as not null
stmt.setObject(1, "not null", Types.NULL);
// Use appropriate setter
stmt.setXxxx(2, something);
}