2013-12-12 4 views
7

Как я могу получить все значения из всех столбцов?Resultset получить все значения

Ive пытался с этим кодом:

values.add(rs.getString(number)); 

Где номер на сверку.

Но это только дает мне все значения из последнего столбца.

Мне нужно захватить значения из каждого столбца, а затем добавить их в arraylist.

Это мой полный код:

// The column count starts from 1 
    int number = 0; 
    for (i = 1; i < columnCount + 1; i++) { 
    number++; 
    ColumnNames = rsmd.getColumnName(i); 

    ar.add(ColumnNames); 
    System.out.println(ar); 
    } 
model.setColumnCount(columnCount); 

    while (rs.next()) { 
// values.add(rs.getString(ar.indexOf(i))); 
values.add(rs.getString(number)); 
System.out.println(values); 



    model.addRow(new Object[] {value1, value2, value3, value4}); 

    } 
+0

возможно дубликат [Dynamic ResultSet (Java)] (http://stackoverflow.com/questions/20543309/dynamic-resultset-java) – LionC

+2

Никогда не отправляйте свой вопрос дважды, вместо этого улучшите свой старый. – LionC

+1

Я удалил свой предыдущий и сделал это официальным – Looptech

ответ

6

Для каждого rs.next():

Object[] row = new Object[columnCount]; 
for (int i = 1; i <= columnCount; ++i) { 
    row[i - 1] = rs.getString(i); // Or even rs.getObject() 
} 
model.addRow(row); 
+0

Он работает, хотя я не получаю последний столбец в каждую таблицу я пытаюсь выбрать. – Looptech

+0

Я исправил проблему, добавив +1 в columnCount в цикл for. – Looptech

+0

, хотя теперь в некоторых таблицах исчезает последнее значение в первой строке? – Looptech

10

ResultSetMetaData держит Ваш подсчет колонки тоже. Ниже приведенный ниже фрагмент заполнит массив объектов для каждого столбца в наборе результатов.

Этот API документ является вашим другом: http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSetMetaData.html

ResultSet resultSet = getResultSetFromSomewhere(); 
ResultSetMetaData resultSetMetaData = resultSet.getMetaData(); 
int columnCount = resultSetMetaData.getColumnCount(); 

while (resultSet.next()) { 
    Object[] values = new Object[columnCount]; 
    for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) { 
     values[i - 1] = resultSet.getObject(i); 
    } 
    model.addRow(values); 
} 
Смежные вопросы