我正在寻找比较java(ResultSet
和RS1
)中两个RS2
的方法。
需要注意的事项/要求
结果集来自两个不同的数据库(Oracle
& SQl-Server
)。因此,我无法进行任何sql查询更改以复制所提取的结果。
ResultSet
中的任何一个都可以拥有更多的行。
ResultSet
中的任何一个都可能包含其他ResultSet
示例:
RS1 RS2
Column1 Column2 Column1 Column2 Column3
A 1 A 2 ITEM1
C 1 B 4 ITEM2
D 2 C 2 ITEM3
E 5 D 1 ITEM4
预期结果
==> A有效,因为它位于RS1
&对于RS2中的A,RS2
,也是Column2
> RS1中的A Column2
==> B无效,因为RS1中没有它
==> C有效,因为它位于RS1
&对于RS2中的C,RS2
也是Column2
>对于RS1中的C,Column2
==> D无效,因为即使它位于RS1
和RS2
中,但{2}中的Column2
仍然存在于Column2
和RS2
中。 RS1中的D为{{1}}
==> E无效,因为{{1}}
中没有寻找解决此问题的可能方案。
答案 0 :(得分:3)
遍历您的ResultSet
并将其存储在Map<String, Integer>
中。之后,您可以遍历keySet
中的任何一个并继续比较values
。
这使您可以比较任何类型的数据库(ResultSet
)中的2 Oracle, MySql, SQLServer, etc.
。
答案 1 :(得分:0)
我只是将结果读入两个映射,其中key作为主键,在您的情况下似乎是Column1,值为Column2。
然后你可以遍历第一张地图的入口集,看看第二张地图是否有钥匙,如果是,则比较这些值。
答案 2 :(得分:0)
我建议读取每个ResultSet中的值,然后将它放在List中
比较两个列表。
您可以对每个结果集执行getMetaData
以获取有关列的信息。
这将包括列数等信息,然后您将能够编写一个简单的循环,它将获取每列的值并将其添加到列表中。
答案 3 :(得分:0)
循环遍历第一个ResultSet并将它们存储在HashMap<String , Object>
中,其中使用column1作为Key,并将所有剩余列放在Bean对象中。
在迭代完第二个resultSet之后,通过只进行查找来检查是否存在于HashMap中的column1。如果存在,则使用getValue获取Object,然后与resultSet2列进行比较。