繁体   English   中英

如何在Java中组合两个ResultSet?

[英]How to combine two ResultSets in Java?

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

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

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

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

您可以:

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

    设置combinedDataSet = new HashSet();

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

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

    rs2相同的迭代

仅在您无法通过SQL查询获得所需结果时执行此操作!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM