2016-08-29 45 views
0

在以下情況下,如果輸入的值不是NULL,則UPDATE查詢運行良好。但是,如果爲時間變量給出NULL值,則查詢就不起作用。什麼似乎是這個問題?謝謝。在更新查詢中設置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從未返回true(在技術上,它返回NULL,這被視爲假)。

最簡單的解決方案是使用一個NULL -safe比較:

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