A ResultSet
提供了返回原語int
的方法getInt()
。是否有可能獲得Integer
對象,它允許null
?我正在檢索的數據庫字段爲空,並且getInt()
只要字段爲null
就會返回0
。從結果集中獲取整數對象
感謝
A ResultSet
提供了返回原語int
的方法getInt()
。是否有可能獲得Integer
對象,它允許null
?我正在檢索的數據庫字段爲空,並且getInt()
只要字段爲null
就會返回0
。從結果集中獲取整數對象
感謝
只要檢查該字段爲null
或不使用ResultSet#getObject()
。
Integer foo = resultSet.getObject("foo") != null ? resultSet.getInt("foo") : null;
或者,如果你能保證你使用正確的數據庫列類型,以便ResultSet#getObject()
真正返回Integer
(因此不Long
,Short
或Byte
),那麼你也可以只是強制轉換它。
Integer foo = (Integer) resultSet.getObject("foo");
檢索值後可以檢查wasNull
。
報告最後一個讀取的列是否具有SQL NULL值。
請注意,您必須首先調用列上的某個getter方法以嘗試讀取其值,然後調用wasNull方法以查看讀取的值是否爲SQL NULL。
不幸的是,在單一代碼行中不能很好地實現。 – BalusC 2011-05-04 10:21:49
有一個更簡單的方法,只需鍵入它。如果爲null,則爲空。如果有效,那麼它將成爲自動綁定的對象。
(Integer) resultSet.getObject("foo")
它應該是低效率的,因爲只要不使用構造函數(Boolean.TRUE和FALSE),就會緩存對Boolean的引用。 – 2011-05-04 10:32:57
謝謝。不幸的是,它增加了樣板代碼。希望有一個更清潔的方式。 – 2011-05-04 10:36:36
'Integer foo =(Integer)rs.getObject(「foo」);'? (或者使用try-catch來捕獲鑄造錯誤並根據需要將其設置爲空/報告錯誤)。 – ADTC 2013-08-02 11:20:36