如何在java中循环访问结果集中的行的值?

2022-09-03 04:16:19

我说的是结果集: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.

我比JSP更精通PHP,fyi。这将在PHP中完成,如下所示:

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

编辑:我正在寻找一个通用的解决方案。请注意 col 是一个变量,而不是一个文字。


答案 1

这只是a_horse_with_no_name答案的变体。在这里,我们按照建议使用对象列表List

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 (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 页面中执行此类操作。在后端建立某种价值持有者(例如列表列表),并对其进行迭代。