2014-02-18 32 views
0

我試圖將表中的行存儲到數組中。我可以得到第一個結果並存儲,但我似乎無法存儲任何其他數據。將MySQL表中的行存儲到Java中的數組中

這是代碼我已經寫

try 
    { 
     test = "select * from Arsenal order by 'MatchNumber' ASC";     
     rs = st.executeQuery(test); 

     while (rs.next()) 
     { 
      //This retrieves each row of Arsenal table and adds it to an array in the Team Results class. 

      matchno = rs.getString("MatchNumber");      
      hometeam = rs.getString("HomeTeam");      
      awayteam = rs.getString("AwayTeam");       
      homegoals = rs.getString("HomeGoals");     
      awaygoals = rs.getString("AwayGoals");     
      result = rs.getString("Result");        


      teams = (matchno + "," + hometeam + "," + awayteam + "," + homegoals + "," + awaygoals + "," + result);  // Takes all the variables containging a single customers information and puts it into a string, seperated by commas. 
      TeamResults.add(matchno,hometeam,awayteam,homegoals,awaygoals,result); 
     } 
    } 

任何想法,我要去哪裏錯了嗎?

回答

0

while條件更改爲hasNext()並在循環內使用next()將數據庫遊標向前移動。

+0

這是完全錯誤的,'next()'負責移動光標從當前位置移動一行,所以他不需要改變它,也沒有在'ResultSet中有'hasNext()'方法可用'類 – Salah

+0

是的,就像我寫的一樣。 – Smutje

+0

你是什麼意思? – user3139748

0

嘗試波紋管使用此方法:

public void SelectData(String sqlcounter ,String sql){ 

     try { 
     RsCounter=stmt.executeQuery(sqlcounter); 
      System.out.println(sqlcounter); 
      while(RsCounter.next()){ 

       countrow=RsCounter.getInt("COUNTR"); 
       System.out.println(countrow+"\n"); 
          } 
      System.out.println(sql); 
     RsSelecting = stmt.executeQuery(sql); 
     data=new String[countrow][RsSelecting.getMetaData().getColumnCount()]; 

     header= new String[RsSelecting.getMetaData().getColumnCount()]; 

    i=0; 
    while(RsSelecting.next()){ 
     for(j=0;j<RsSelecting.getMetaData().getColumnCount();j++){ 

       data[i][j]=(RsSelecting.getString(j+1)); 
       header[j]=RsSelecting.getMetaData().getColumnName(j+1); 
       System.out.print(data[i][j]+"\n"); 

    }  


     i++; 

    } 
     i=j=0; 
     } catch (SQLException ex) { 
         ex.printStackTrace(); 

      Logger.getLogger(Connect.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

其中

sqlcounter ="select COUNT(*) as COUNTR from Arsenal order by 'MatchNumber' ASC"; 

sql ="select * from Arsenal order by 'MatchNumber' ASC"; 
0

驗證列名一次。有時候ALIAS不工作,我不知道爲什麼。

從結果集獲取元數據:

ResultSetMetaData metaData = resultSet.getMetaData(); 
int size = metaData.getColumnCount(); 

for (int i = 0; i < size; i ++) 
    System.out.println(metaData.getColumnName(i); 

也只是表現,列出,而不是在SELECT查詢中使用*列名。此外,您還可以在com.sun.rowset.CachedRowSetImpl.看看它的使用,如:

CachedRowSetImpl crs = new CachedRowSetImpl(); 
crs.populate(resultSet); 

我想這也實現了CachedRowSet,但我不能完全肯定。

相關問題