2011-02-11 32 views
1

我真的很困惑,爲什麼只有一個值被這組代碼返回。我在這裏要做的是查詢所有以主鍵爲參數的* sense_num *(不是主鍵)。結果應該包含2個或更多的sense_num,所以在每個sense_num結果中,我嘗試將每個元素存儲在一個int []數組中,並分別返回int數組。例如,來自這個查詢的結果是sense_num 172 & 173.它們都應該已經在陣列中,但是當我測試調用函數時,它收到的是最後一個值,即173.如何處理Java中的ResultSet並將其轉換爲int數組?

我希望你能幫忙我與此。謝謝!

公衆詮釋[] getAllSenseID(INT primeID){

int[] objects = {}; 
    String qry = "SELECT sense_num FROM cebuano_sense WHERE id_num = '" + primeID + "'"; 
    try { 
     DatabaseConn db = new DatabaseConn("cebuano_wsd"); 
     db.connect(); 
     db.query(qry); 
     ResultSet result = db.getResult(); 
     ResultSetMetaData data = db.getData(); 


     if (result.next() == true) { 

      java.sql.ResultSetMetaData rsmd = result.getMetaData(); 
      int colNo = rsmd.getColumnCount(); 
      result.beforeFirst(); 
      int row = 0; 
      System.out.println(colNo + "::> Column Number"); 

      while (result.next()) { 
       objects = new int[colNo + 1]; 

       int i = 0; 

//對象[0]擁有所有的值時,我測試了它,這就是爲什麼只接受最後一個// ...如何是否獲得或接收這兩個值?

   while (i < colNo) { 
        objects[i] = result.getInt(colNo); 

        //print to test 
        System.out.println(objects.length + " >> Count of Objects"); 
        System.out.println(i + " :: " + objects[i] + " >> result"); 
        i++; 
       } 

      } 
     } 
    } catch (SQLException ex) { 
     ex.printStackTrace(); 
    } catch (ClassNotFoundException ex) { 
     ex.printStackTrace(); 
    } 

    return objects; 
} 

回答

2

你行

objects = new int[colNo + 1]; 

替代以前的行你有,那麼你只有最後一排你知道的。您可以爲每行添加一個List<int[]>

+0

謝謝!它已經工作了,謝謝你的建議! :) – khryz88 2011-02-12 02:25:56

0

你QRY選擇從表一列,所以colNo始終爲1

因此,我認爲你的對象數組需要對應於行數,並在results.next循環,您填寫的陣列。希望有所幫助, - MS。

+0

我搞混了我的自我與我不得不循環和存儲對象的部分[i] = result.getInt(colno)<<無論它需要多少循環,colNo實際上是1.我相信在這樣的情況下,得到ArrayList || ArrayList 效果最好,我可以簡單地將其轉換爲數組! :)感謝評論,我真的很感激它。 – khryz88 2011-02-12 02:33:34

0

它看起來像你期待的對象[0]是你的結果集中的第一行,對象[1]是第二行等等。你實際做的是把第一列放在對象中[ 0],對象[1]等中的第二列以及每一行都會覆蓋前一個。由於您的查詢只有一列,因此您並不需要內部循環。只需遍歷ResultSet並將每行的sense_num放入對象[]中的下一個可用元素中即可。然後對象[]將包含我認爲你期待的內容。

+0

這就是我希望它發生的方式。將ArrayList 作爲result.get(Int)的捕獲器使我的代碼正常工作!我appreaciate您的評論! :) – khryz88 2011-02-12 02:28:06

相關問題