繁体   English   中英

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

[英]How do I iterate through the values of a row from a result set in 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,仅供参考。 这将在 PHP 中完成,如下所示:

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

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

这只是a_horse_with_no_name 答案的一个变体。 下面我们用一个ListList对象作为建议在那里。

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.

编辑 将final 添加到所有变量中。

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

如果您使用Java 标准标记库,这很容易。

也看看这个:

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

我强烈建议您不要在 JSP 中嵌入 scriptlet 代码。 这不是要走的路。

如果你接受这一点,那么这里给出的所有其他答案都必须被丢弃。 它们都属于服务器端 Java 类,而不是 JSP。

请务必先通读教程

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM