如何在java中的结果集中迭代行的值?

时间:2012-01-25 20:01:09

标签: java sql jsp

结果集我说的是: 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
编辑:我正在寻找通用的解决方案。注意col是一个变量,而不是文字。

4 个答案:

答案 0 :(得分:19)

这只是变种the a_horse_with_no_name answer。 在这里,我们使用List Listfinal 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. 对象。

{{1}}

修改为所有变量添加了final。

答案 1 :(得分:14)

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页面中做这样的事情。在后端建立某种价值持有者(例如列表清单)并对其进行迭代。

答案 2 :(得分:1)

如果您使用Java Standard Tag Library

,这很容易

也要检查一下:

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

我强烈建议您不要在JSP中嵌入scriptlet代码。这不是可行的方法。

如果您接受,那么此处给出的每个其他答案都必须被丢弃。它们都属于服务器端Java类,而不是JSP。

答案 3 :(得分:0)

请务必先阅读The Tutorial

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

虽然完全可以在JSP中读取结果集,但这不是在Java中执行它的正确方法。这些事情应该始终在一个单独的Java类中执行,其结果将仅在JSP中进行迭代。