1

我想从数据库中检索一组记录,执行 rs.next() 然后将其结果分配给一个变量以传递给将使用此记录的方法,就像我不分配它一样到一个变量并将其传递给一个方法有没有办法做到这一点?我正在使用 JAVA (1.5)


谢谢你的所有答案

我不想将整个结果集传递给一个方法,只传递当前行,但据我了解,这是不可能的

4

4 回答 4

1

不,不支持开箱即用,但也许以下想法可能对您有所帮助:

ResultSetMetaData meta = rs.getMetaData();
while (rs.next()) {
  Map<String,Object> row = new HashMap<String,Object>();
  for (int i = 1; i <= meta.getColumnCount(); ++i) {
    row.put(meta.getColumnName(i), rs.getObject(i));
  }
  processRow(row);
}

问题是,您需要从row-map 中转换值,processRow()并且它不适用于所有类型/驱动程序组合(BLOB,...)。

于 2008-12-29T11:55:25.877 回答
0

您想将rs.next()的结果分配给变量吗?

恐怕你不能那样做。您可以从该 rs 获得引用并以其他方法处理它(与不将其分配给 var 的方式相同)

当您将 rs 作为参数传递给您已经在做的方法时。

while( rs.next() ) { 
    list.add( createFrom( rs ) );
}

...

public Object createFrom( ResultSet rs ) {  // Here rs is a copy of the reference in the while above. 
}

我答对了你的问题吗?

于 2008-12-29T11:24:06.533 回答
0

我想我现在明白你了。:)

不,不可能那样做。ResultSet每次调用时都会更改其内部状态,因此ResultSet.next()存储对它的引用不会让您到任何地方。您必须将所需的数据提取到某个自定义对象中并存储。

CustomData cd = new CustomData();
cd.setString1(rs.getString(1));
cd.setInt1(rs.getInt(2));
...

然后,您可以存储cd变量并继续处理您的ResultSet.

于 2008-12-29T11:26:20.413 回答
-1

在处理结果集时,我经常发现 List> 数据结构非常有用。

于 2008-12-29T12:42:34.473 回答