rs返回值的問題:getInt方法返回的是數值“0”的解決辦法

問題描述及原因:

rs.getInt方法,若數據庫中記錄的數值爲nullgetInt返回的是數值“0”,而不是null

long java.sql.ResultSet.getLong(String columnLabel) 
int java.sql.ResultSet.getInt(String columnLabel)

 等均爲:若數據庫中記錄的數值爲null,返回數值“0”,而不是null”

因此,

“category.setIsLeaf(rs.getInt("IS_LEAF"));”

 執行後,categoryisLeaf屬性不可能爲NULL

如想讓categoryisLeaf屬性有NULL值,就需要其它處理了

jdk中的相關解釋:

int java.sql.ResultSet.getInt(String columnLabel) throws SQLException

Retrieves the value of the designated column in the current row of this ResultSet object as an int in the Java programming language.

Parameters:

columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column

Returns:

the column value; if the value is SQL NULL, the value returned is 0

Throws:

SQLException - if the columnLabel is not valid; if a database access error occurs or this method is called on a closed result set

解決方案:

我個人是加上判斷,代碼如下:

ResultSet rs = statement.executeQuery("select Id from table");
                   Integer id = 0;
                   if (rs.getObject("Id") != null) {
                            id = rs.getInt("Id");
                   } else {
                            id = null;
                   }

 

 通過獲取對象來首先判斷其是否爲空,然後再用對應的getXXX方法得到具體的值。

發佈了192 篇原創文章 · 獲贊 30 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章