代码之家  ›  专栏  ›  技术社区  ›  Amit

如何在Java中组合两个结果集?

  •  6
  • Amit  · 技术社区  · 14 年前

    我有两个结果集( rs1 rs2 )拥有相同的领域。现在,如何将这两个结果集合并为一个结果集,以便显示一次重复的行。

    2 回复  |  直到 14 年前
        1
  •  11
  •   Adamski    14 年前

    如果两者 ResultSet s来自同一个数据库,那么为什么不在检索期间使用 union 例如

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

    但是,如果这不是一个选项,那么我建议定义 Row 类来表示从 结果集 和实施 equals / hashCode 允许 为了平等而进行比较。然后简单地添加每个 到A Set (例如) HashSet )以便删除重复项。

        2
  •  3
  •   Bozho Michał Mech    14 年前

    你可以:

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

      set combineddataset=new hashset();

    4. 迭代每个结果集,并构造对象:

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

      同样的迭代也适用于 rs2

    这样做 只有在万一情况下 您无法通过SQL查询获得所需的结果!