2016-08-29 2 views
0

다음 경우에 입력 된 값이 NULL이 아닌 경우 UPDATE 쿼리가 올바르게 실행됩니다. 그러나 시간 변수에 NULL 값이 주어지면 쿼리가 작동하지 않습니다. 무슨 문제가있는 것 같습니까? 고맙습니다.UPDATE 쿼리에서 NULL 값 설정, JDBC

String sql = "UPDATE table1 SET col1=?, col2=? WHERE col1=? and col2=?"; 
java.sql.PreparedStatement stmt = conn.prepareStatement(sql); //conn is sql connection to DB 

if (time1 != null) stmt.setTimestamp(1, time1); else stmt.setNull(1, java.sql.Types.TIMESTAMP); 
if (time2 != null) stmt.setTimestamp(2, time2); else stmt.setNull(2, java.sql.Types.TIMESTAMP); 
if (time3 != null) stmt.setTimestamp(3, time3); else stmt.setNull(3, java.sql.Types.TIMESTAMP); 
if (time4 != null) stmt.setTimestamp(4, time4); else stmt.setNull(4, java.sql.Types.TIMESTAMP); 

stmt.executeUpdate(); 

답변

1

문제는 (기술적으로는 NULL을 반환 거짓으로 취급되는) = NULL는 결코 true를 반환하지 않는다는 것이다.

where col1 <=> ? and col2 <=> ? 
:

간단한 용액 NULL - 안전 비교를 사용하는