Как выполнить итерацию значений строки из набора результатов в java?

В результирующем наборе я говорю об этом: http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/ResultSet.html

Что я хотел бы сделать, так это...

for row in rows
    for col in row
        //col is the name of the column, row[col] is the value.

Я более разбираюсь в PHP, чем JSP, fyi. Это было бы сделано в PHP так:

foreach($rs as $row)
    foreach($row as $col => $val)
        //val is the cell value, and column is the column name

EDIT: Я ищу универсальное решение. обратите внимание, что col - это переменная, а не буквальная.

Ответ 1

Это просто вариант ответа a_horse_with_no_name.

final ResultSetMetaData meta = rs.getMetaData();
final int columnCount = meta.getColumnCount();
final List<List<String>> rowList = new LinkedList<List<String>>();
while (rs.next())
{
    final List<String> columnList = new LinkedList<String>();
    rowList.add(columnList);

    for (final int column = 1; column <= columnCount; ++column) 
    {
        final Object value = rs.getObject(column);
        columnList.add(String.valueOf(value));
    }
}

// add the rowList to the request.

Изменить Добавлен окончательный для всех переменных.

Ответ 2

ResultSetMetaData meta = rs.getMetaData();
int colCount = meta.getColumnCount();
while (rs.next())
{
    for (int col=1; col <= colCount; col++) 
    {
        Object value = rs.getObject(col);
        if (value != null) 
        {
            System.out.print(value.toString());
        }
    }
}

Но я бы не рекомендовал делать что-то подобное прямо на странице JSP. Создайте какой-либо держатель ценности (например, список списков) в бэкэнд и повторите это.

Ответ 3

Это легко, если вы используете Стандартную библиотеку тегов Java.

Проверьте это тоже:

http://docs.oracle.com/javaee/1.4/tutorial/doc/JSTL3.html

Я бы сильно отговорил вас от внедрения кода сценария в ваших JSP. Это не путь.

Если вы согласны с этим, тогда любой другой ответ, данный здесь, должен быть отброшен. Все они принадлежат серверным Java-классам, а не JSP.

Ответ 4

Обязательно сначала прочитайте The Tutorial.

while(rs.next()) {
    String col1 = rs.getString("NAME"); // if NAME is VARCHAR2, for eg.
}

В то время как в JSP вполне возможно читать результирующие объекты, это не правильный способ сделать это на Java. Такие вещи всегда должны выполняться в отдельном Java-классе, результат которого будет просто повторен в JSP.