首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java中将多个ResultSet合并为一个ResultSet

在Java中将多个ResultSet合并为一个ResultSet
EN

Stack Overflow用户
提问于 2013-05-08 17:14:12
回答 4查看 13.9K关注 0票数 2

假设我有多个resultSet (每个resultSet引用数据库中的一行)(它们属于同一个表)。现在我想创建合并后的resultSet,它将在实习生中拥有所有其他ResultSet。因此,我的主要目标是创建一个组合的resultSet,它将指向先前由单个ResultSet指向的所有行。

我使用的是Java。有没有人知道我们可以如何务实地实现这一点?

编辑:我们使用的是java.sql.ResultSet

编辑:为了让它更清楚:

比方说我有

代码语言:javascript
运行
复制
List<ResultSet> someResults ; // each resultSet Would point to a single row in database.

我想创建一个整合的ResultSet finalResults;

psudo代码:

代码语言:javascript
运行
复制
List<ResultSet> resultSets = // poppulated from code
ResultSet rs  = convert(resultSets) // psude conver method
EN

回答 4

Stack Overflow用户

发布于 2013-05-08 17:17:32

据我所知,如果你说的是java.sql.ResultSet,那是不可能的。我建议您改为更改您的查询。

或者,您可以将结果检索到一个java对象中,然后将所有对象组合到一个集合中。

票数 3
EN

Stack Overflow用户

发布于 2013-05-08 17:39:48

我会这样做的

代码语言:javascript
运行
复制
class GatheringResultSet implements ResultSet {
    List<E> resultSets;
    ResultSet current;

    GatheringResultSet(List resultSets) {
        this.resultSets = new ArrayList(resultSets);
        current = resultSets.remove(0);
    }

    @Override
    public boolean next() throws SQLException {
        if (current.next()) {
            return true;
        }
        if (resultSets.isEmpty()) {
            return false;
        }
        current = resultSets.remove(0);
        return true;
    }

..。

其余的方法只是将调用委托给当前ResultSet

票数 2
EN

Stack Overflow用户

发布于 2013-05-08 17:19:20

如果结果来自同一个表,为什么不在查询本身中使用UNION/UNION ALL(取决于您的需要)。

如下所示:

代码语言:javascript
运行
复制
select A, B
from C where Q = R
union
select A, B
from C where P = S

否则,很难遍历每个结果集,填充POJO并将它们添加到List/Set(根据您的需要)。如果有很多结果集,这似乎有点过头了。

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

https://stackoverflow.com/questions/16436806

复制
相关文章

相似问题

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