Java數據庫連接(JDBC)結果集類掩蓋了一個微小的bug,如果你忘記了使用wasNull方法的話。關系數據庫中的NULL值的概念和Java中null的值的概念相似,前者任何類型都可以為null,但是在Java中,基本數據類型不能為null。當要讀取一個數據庫域賦值給一個基本類型的時候(例如resultSet.getInt(1)),可能會造成問題。這樣的例子已經讓JDBC規范的制訂者開始研究如何解決。
當一個值通過如getInt、getLong、getFloat這樣的getXxx方法從數據庫中得到後,開發者可以調用wasNull()方法來找出其值是否為null。如果wasNull返回true,那麼可以讓開發者為基本類型選擇使用合適的null值。GetXxx方法獲得的值與JDBC的驅動緊密相關。
例如,在某個數據庫驅動中,它返回0,另一個也許返回那一列的缺省值,也許還有一個返回驅動在那一列讀取的最後一個值。
所以當你准備讀取數據庫中的NULL值的時候,要小心缺省值,你也許需要以下面的習慣編碼:
int idx = resultSet.getInt(1); if(resultSet.wasNull( )) { idx = -1; // this is our default value for idx }
(Java研究組織)