2014-02-18 2 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 -condition на hasNext() и используйте next() внутри цикла, чтобы переместить курсор базы данных вперед.

+0

Thats Totally Wrong, 'next()' отвечает за перемещение курсора froward в одну строку от текущей позиции, поэтому ему не нужно его изменять, также нет метода 'hasNext()', доступного в 'ResultSet 'class – 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, но я не совсем уверен.

Смежные вопросы