如何在Java中组合两个ResultSet?

时间:2010-02-18 16:45:32

标签: java jdbc

我有两个结果集(rs1rs2)具有相同的字段。现在,如何将这两个结果集合并为一个,以便重复的行显示一次。

2 个答案:

答案 0 :(得分:11)

如果两个ResultSet来自同一个数据库,那么为什么不在检索过程中使用union组合它们; e.g。

select A, B
from C
union
select A, B
from D

但是,如果这不是一个选项,那么我建议您定义一个Row类来表示从ResultSet中提取的行并实施equals / hashCode以允许Row进行平等比较。然后,只需将每个Row添加到Set(例如HashSet),即可删除重复项。

答案 1 :(得分:3)

你可以:

  1. 创建一个具有与列
  2. 对应的属性的类
  3. 使用您定义“重复”的字段实现equals()hashCode()方法(让您的IDE帮助您生成这些)
  4. 创建SetHashSet):

    设置combinedDataSet = new HashSet();

  5. 迭代每个resultSet,并构造对象:

    while (rs1.next) {
        YourClass obj = new YourClass();
        obj.setSomeProperty(rs.getString(1));
        obj.setAnotherProperty(rs.getString(2));
        // etc..
        cominbedDataSet.add(obj);
    }
    

    同样的迭代适用于rs2

  6. 只有在无法通过SQL查询获得所需结果的情况下执行此