2011-08-30 371 views
1

我有一個java類,我正在執行一個查詢並將查詢結果分配給一個字符串數組,最後返回數組。在java中返回一個空數組字符串

一切工作正常。但是如果db值爲空(不是整個數組),我想返回「無數據」。我能爲此做些什麼?

代碼:

query="select `t1`,`t2`,`t3` from test"; 

       PreparedStatement pre = conn.prepareStatement(query); 
       ResultSet res = pre.executeQuery(); 
       String val[][] = new String[res.getRow()][3]; 
      while (res.next()) { 
       val[i][0] = res.getString(1); 
       val[i][1] = res.getString(2); 
       val[i][2] = res.getString(3); 
       i++; 
       } 

       res.close(); 
       conn.close(); 
       pre.close(); 

       return (val); 

(我想要的val[1][1]是 「無數據」 如果res.getString(2)爲空)。

+1

只需添加如果條件檢查 –

+0

你,我已經試過這樣的'如果(res.getString(1 )!= null && res.getString(1).equals(「」)){val [i] [0] = res.getString(1);} else {val [i] [0] =「No Data」;}但我越來越錯誤作爲'org.apache.jasper.JasperException:java.lang.NumberFormatException:對於輸入字符串:「無數據」' – ashu

+0

您可能正在做一些數字操作'無數據' –

回答

2

否數據似乎是您顯示的值超過邏輯值。

所以你應該決定一個特殊的價值並以特殊的方式展示它。我們通常把這稱爲哨兵價值。

該值可能爲空或不能在您的數據庫中的字符串。 (也許它不適用於此,因爲一切都可能在數據庫中)。

另請注意,使用異常代替這個特殊值可能很有吸引力,但它實際上是非常差的異常使用,主要用於性能問題,因此它是一種設計,如果可能的話,導致您的客戶類出現問題。

+1

同意100% - 您不應將顯示元素與您的模型混合。 – I82Much

0

嘗試這種方式

val[i][0] = (res.getString(1)!=null & !res.getString(1).equals(""))?res.getString(1).equals(""):"No Data"; 

val[i][1] = (res.getString(1)!=null & !res.getString(2).equals(""))?res.getString(3).equals(""):"No Data"; 

val[i][2] = (res.getString(1)!=null & !res.getString(3).equals(""))?res.getString(3).equals(""):"No Data"; 

使用只有一個「&」什麼,當你與& &檢查車況發生首先它會如果檢查第一即rs.getString(1)!= NULL是否爲空它將檢查另一個條件,即rs.getString(1).equal(「」),因此如果您檢查並且它將爲空,那麼在第二個條件中它將導致NullPointerException的錯誤。

而如果你只使用一個&那麼它會檢查第一個條件,如果是真的,那麼只有去檢查另一個條件,否則不是。

0

添加少量的輔助方法是這樣的:

public static String getValue(String value) { 
    return getValue(value, "No Data"); 
} 

public static String getValue(String value, String default) { 
    return value == null ? default : value; 
} 

使用方法如下:

val[i][0] = getValue(res.getString(1)); // standard 
val[i][0] = getValue(res.getString(1), "NULL"); // with custom default message