Merging Multiple ResultSet into Single ResultSet in Java
Solution 1
If you are talking about a java.sql.ResultSet, it's not possible as far as I know. I suggest you change your query instead.
Or you can retrieve the results into an java object and then combine all the objects into a Collection.
Solution 2
I would do it this way
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;
}
...
the rest of the methods just delegate call to current ResultSet
Solution 3
If the results are gonna be from the same table, why not use UNION/UNION ALL
(depending on your needs) in your query itself.
Something like this:
select A, B
from C where Q = R
union
select A, B
from C where P = S
Or else, there is the hard way of iterating through each result set and populating POJOs and adding them to a List/Set
(Based on your needs). This seems to be an overkill if there are a lot of result sets.
Priyank Doshi
I am a software development engineer at Amazon. Language: java c/c++ html , css , jquery Frameworks: Spring core & MVC Hibernate
Updated on June 04, 2022Comments
-
Priyank Doshi almost 2 years
Let say I have multiple ResultSet(each resultSet would refer to 1 row in database) (they are of same table.) . Now I want to create consolidated ResultSet which would intern have all other resultSet. So my primary goal is to create a combined ResultSet which would point to all rows which where previously pointed by individual resultSet.
I am using Java. Do any one know how pragmatically we can achieve this?
Edit : we are using
java.sql.ResultSet
.Edit : To make it more clear :
Let say I have
List<ResultSet> someResults ; // each resultSet Would point to a single row in database.
I want to create a consolidated
ResultSet finalResults;
psudo code :
List<ResultSet> resultSets = // poppulated from code ResultSet rs = convert(resultSets) // psude conver method