2011-05-04 27 views
32

A ResultSet提供了返回原語int的方法getInt()。是否有可能獲得Integer對象,它允許null?我正在檢索的數據庫字段爲空,並且getInt()只要字段爲null就會返回0從結果集中獲取整數對象

感謝

回答

33

只要檢查該字段爲null或不使用ResultSet#getObject()

Integer foo = resultSet.getObject("foo") != null ? resultSet.getInt("foo") : null; 

或者,如果你能保證你使用正確的數據庫列類型,以便ResultSet#getObject()真正返回Integer(因此不LongShortByte),那麼你也可以只是強制轉換它。

Integer foo = (Integer) resultSet.getObject("foo"); 
+0

它應該是低效率的,因爲只要不使用構造函數(Boolean.TRUE和FALSE),就會緩存對Boolean的引用。 – 2011-05-04 10:32:57

+0

謝謝。不幸的是,它增加了樣板代碼。希望有一個更清潔的方式。 – 2011-05-04 10:36:36

+3

'Integer foo =(Integer)rs.getObject(「foo」);'? (或者使用try-catch來捕獲鑄造錯誤並根據需要將其設置爲空/報告錯誤)。 – ADTC 2013-08-02 11:20:36

11

檢索值後可以檢查wasNull

documentation

報告最後一個讀取的列是否具有SQL NULL值。
請注意,您必須首先調用列上的某個getter方法以嘗試讀取其值,然後調用wasNull方法以查看讀取的值是否爲SQL NULL。

+0

不幸的是,在單一代碼行中不能很好地實現。 – BalusC 2011-05-04 10:21:49

7

有一個更簡單的方法,只需鍵入它。如果爲null,則爲空。如果有效,那麼它將成爲自動綁定的對象。

(Integer) resultSet.getObject("foo")