首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >迭代ResultSet并在ArrayList中添加它的值

迭代ResultSet并在ArrayList中添加它的值
EN

Stack Overflow用户
提问于 2013-03-20 15:31:46
回答 1查看 142.6K关注 0票数 26

我正在迭代一个ResultSet,并试图在ArrayList中复制它的值。问题是它只遍历一次。但是对resultset.getString('Col n")使用resultset.getString("Col 1")将显示所有列的所有条目。下面是代码片段-

代码语言:javascript
复制
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退出。但是我可以看到所有列的值。为什么?

EN

回答 1

Stack Overflow用户

发布于 2014-09-23 21:43:59

为了好玩,我提供了一个使用jOOQ和Java8的替代解决方案。您可以使用任何其他将JDBC ResultSet映射到List的API,比如Spring JDBCApache DbUtils,或者编写您自己的ResultSetIterator

jOOQ 3.8或更低版本

代码语言:javascript
复制
List<Object> list =
DSL.using(connection)
   .fetch("SELECT col1, col2, col3, ...")
   .stream()
   .flatMap(r -> Arrays.stream(r.intoArray()))
   .collect(Collectors.toList());

jOOQ 3.9

代码语言:javascript
复制
List<Object> list =
DSL.using(connection)
   .fetch("SELECT col1, col2, col3, ...")
   .stream()
   .flatMap(Record::intoStream)
   .collect(Collectors.toList());

(免责声明,我为jOOQ背后的公司工作)

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15517736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档