Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除使用setNull don';行不通_Java_Jdbc - Fatal编程技术网

Java 删除使用setNull don';行不通

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 =

我想删除列为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 = "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);
}