2013-05-29 166 views
0

編輯:隨後檢查addrline2(addrline2 == null)顯示addrline2實際上是null,打印出導致字符串「空」去標準輸出。Oracle ResultSet.getString(「colname」)返回字符串「null」而不是java null

我正在使用帶有Oracle 11g數據庫的Oracle 11g瘦客戶機。查詢包含null的列時,getString(「colname」)將返回一個字符串「null」而不是Java null值。這是預期的行爲? Javadoc表示我應該收到一個Java null。

ResultSet rs = descStatement.executeQuery(); 

    rs.next(); 
    String addrline2 = rs.getString("addressLine2"); 
    System.out.println("addrLine2->"+addrline2+"<-"); 

    boolean wasNull = rs.wasNull(); 
    System.out.println("Wasnull: "+wasNull); 

輸出:

addrLine2->null<- 
Wasnull: true 
+4

你確定該列中的值不是「null」?你有任何一種數據庫瀏覽器,所以你可以肯定嗎? – darijan

+1

是的,試試'+(addrline2 == null)+'。 String + calls String.valueOf(...) –

回答

7

注意,一個空對象,轉換成字符串時,打印輸出爲 「空」。你實際上並沒有在任何地方檢查null-ness。

嘗試增加

if (addrline2 == null) { 
    System.out.println("It's null!") 
} 
+0

你是對的。我得到一個Java null。謝謝。 (我使用的是Spring的BeanPropertyRowMapper,它將String屬性設置爲字符串「null」,所以當我看到null打印輸出時,我認爲我從驅動程序中獲得了「null」,而不是它的toString() Java null對象。謝謝。 – user2433225

1

rs.getString( 「addressLine2」)只返回null,但是當喲做

System.out.println("addrLine2->"+addrline2+"<-"); 

其打印null作爲字符串字面

像這樣做

System.out.println("addrLine2->"+addrline2!=null ? addrline2 : "Its null"+"<-"); 
相關問題