假设我有多个resultSet (每个resultSet引用数据库中的一行)(它们属于同一个表)。现在我想创建合并后的resultSet,它将在实习生中拥有所有其他ResultSet。因此,我的主要目标是创建一个组合的resultSet,它将指向先前由单个ResultSet指向的所有行。
我使用的是Java。有没有人知道我们可以如何务实地实现这一点?
编辑:我们使用的是java.sql.ResultSet。
编辑:为了让它更清楚:
比方说我有
List<ResultSet> someResults ; // each resultSet Would point to a single row in database.我想创建一个整合的ResultSet finalResults;
psudo代码:
List<ResultSet> resultSets = // poppulated from code
ResultSet rs = convert(resultSets) // psude conver method发布于 2013-05-08 17:17:32
据我所知,如果你说的是java.sql.ResultSet,那是不可能的。我建议您改为更改您的查询。
或者,您可以将结果检索到一个java对象中,然后将所有对象组合到一个集合中。
发布于 2013-05-08 17:39:48
我会这样做的
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
发布于 2013-05-08 17:19:20
如果结果来自同一个表,为什么不在查询本身中使用UNION/UNION ALL(取决于您的需要)。
如下所示:
select A, B
from C where Q = R
union
select A, B
from C where P = S否则,很难遍历每个结果集,填充POJO并将它们添加到List/Set(根据您的需要)。如果有很多结果集,这似乎有点过头了。
https://stackoverflow.com/questions/16436806
复制相似问题