2012-06-29 53 views
1

在暴露我的問題之前,我不得不說我從未有過Java甚至開發研究。所以對不起如果我的問題似乎「愚蠢」...JDBC - 多維數組和分析結果

我必須從德比數據庫的幾列顯示結果到面板。

爲了做到這一點,我有它返回我的陣列爲一列和一個結果的方法:

public String[] toStringArray(ResultSet resultSet, int columnIndex) { 
    LinkedList<String> resultList = new LinkedList<String>(); 
    try { 
     while (resultSet.next()) { 
      resultList.add(resultSet.getString(columnIndex)); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    return resultList.toArray(new String[0]); 
} 

這是我的從第一返回一個二維陣列throught第一方法第二methoid和我的數據庫的第二列...

public String[][] GetArray() { 
String[] arrayone = new String[0]; 
String[] arraytwo = new String[1]; 
String[][] array = new String[2][]; 

try { 
    String getInfo = 
        "SELECT ONE, TWO FROM APP.DB "; 

ResultSet listR = s.executeQuery(getInfo); 
arrayone = toStringArray(listR,1); 
arraytwo = toStringArray(listR,2); 
    array [0] = arrayone; 
    array [1] = arraytwo; 

} } }catch (SQLException ex) { 
      Logger.getLogger(CalendarPanelTest.class.getName()).log(Level.SEVERE, null, ex); 
     }} 
     return array; 

} 

所以我回兩個陣列尺寸從數據庫中兩列的結果...

現在我的存款保險計劃玩它像(的想法,結果數是從兩列相同的結果查詢 - 或空值已被feeded顯示):

String[][] result = GetArray(); 

int nb = array.length; 
for(int a=0; a < nb; a++) 
{ 
System.print.ln(result[0][a]+result[1][a]) 
} 

我認爲這個問題是在

return resultList.toArray(new String[0]); 

我試圖改變這個對象沒有結果......

這似乎推DATAS只到第一列...

或形式我的方法還是在delacart該colums陣列的離子:

String[] arrayone = new String[0]; 
String[] arraytwo = new String[1]; 
String[][] array = new String[2][]; 

但我嘗試了所有可能數量和這一個給我從第一科拉姆的結果時,我想以顯示它...:

String[][] array = new String[2][]; 

即使

String[][] array = new String[1][] 

String[][] array = new String[0][1]; 

似乎更合乎邏輯......

我會很高興的解決方案的一些建議,正確構建這兩dimensionnal陣列或給我的方式到其他更好的解決辦法...

是一個數組最好的方法來做到這一點?如果我需要顯示10個colmuns的結果,這可能是實現這一目標的最佳/快捷方式?

最好的問候,並對不起,我的英文不好...

編輯:我的解決辦法是增加一個第二個結果的第二個值:

ResultSet listR = s.executeQuery(getInfo); 
    ResultSet listR2 = s.executeQuery(getInfo); 
    arrayone = toStringArray(listR,1); 
    arraytwo = toStringArray(listR2,2); 

感謝Soumyadip達斯他的幫助! !問候,

工作速度在第一時間正常工作...

回答

1

我想你錯過了右括號如下:

public String[] toStringArray(ResultSet resultSet, int columnIndex) { 
    LinkedList<String> resultList = new LinkedList<String>(); 
    try { 
     while (resultSet.next()) { // where is the closing bracket ?? 
      resultList.add(resultSet.getString(columnIndex)); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    return resultList.toArray(new String[0]); 
} 

如果這只是一個過帳的錯誤然後檢查如下:


我想使它簡單,可能是我我錯了,但你可以試試這個:

public String[] toStringArray(ResultSet resultSet, int columnIndex) { 
    ArrayList<String> results = new ArrayList<String>(); 
    try { 
    // COMMENT: please debug your code to be sure the resultSet is not empty. 
     while (resultSet.next()) { 
      results.add(resultSet.getString(columnIndex));} 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    return results.toArray(); 
} 

fo llowing 2號線可能會導致問題:

array [0] = arrayone; 
    array [1] = arraytwo; 

建議:總是正確調試代碼..它可以解決你的問題80%。

+0

謝謝你的回答。抱歉,括號中有一些「println」代碼,我用「while end」括號刪除。我試過你的解決方案,但是數組[1] = arraytwo;和array [0] = arrayone;導致問題,我不知道如何找回數據......我將繼續搜索,如果發現有問題,我會再次發佈。你怎麼說「調試你的代碼」,你說「注意力」還是「使用像Junit這樣的工具?」我是一個網絡和系統管理員,糟糕的是我編碼像我腳本... – neuronsoverflow

+0

Finnaly上面的代碼工作,但我不得不添加第二個結果集的第二個值... ResultSet listR = s.executeQuery(getInfo); ResultSet listR2 = s.executeQuery(getInfo); arrayone = toStringArray(listR,1); arraytwo = toStringArray(listR2,2);你是對的,調試我的代碼是第一件事!問候, – neuronsoverflow

+0

很高興知道它幫助你...一切順利。請給予答案並加油! :) –