我正在迭代一个ResultSet
,并试图在ArrayList
中复制它的值。问题是它只遍历一次。但是对resultset.getString('Col n")
使用resultset.getString("Col 1")
将显示所有列的所有条目。下面是代码片段-
ResultSet resultset = null;
ArrayList<String> arrayList = new ArrayList<String>();
int i = 1;
while (resultset.next()) {
arrayList.add(resultset.getString(i++));
System.out.println(resultset.getString("Col 1"));
System.out.println(resultset.getString("Col 2"));
System.out.println(resultset.getString("Col n"));
}
复制到ArrayList
中的ResultSet
的唯一值是列1。然后while退出。但是我可以看到所有列的值。为什么?
发布于 2014-09-23 21:43:59
为了好玩,我提供了一个使用jOOQ和Java8的替代解决方案。您可以使用任何其他将JDBC ResultSet
映射到List
的API,比如Spring JDBC或Apache DbUtils,或者编写您自己的ResultSetIterator
jOOQ 3.8或更低版本
List<Object> list =
DSL.using(connection)
.fetch("SELECT col1, col2, col3, ...")
.stream()
.flatMap(r -> Arrays.stream(r.intoArray()))
.collect(Collectors.toList());
jOOQ 3.9
List<Object> list =
DSL.using(connection)
.fetch("SELECT col1, col2, col3, ...")
.stream()
.flatMap(Record::intoStream)
.collect(Collectors.toList());
(免责声明,我为jOOQ背后的公司工作)
https://stackoverflow.com/questions/15517736
复制相似问题