如何在java中合并来自两个不同DB的两个不同的结果集

时间:2014-12-22 11:42:44

标签: java mysql jdbc resultset

我有两个结果集,一个来自DB2,另一个来自Sybase。 我想基于某些条件合并这些结果集,为此我创建了一个函数,它将采用两个结果集并合并它们。

但我得到SQL异常 - 结果集已关闭

我正在使用Connection对象和Prepared语句连接到相应的数据库并执行查询。

public void ExecuteDB2Query(SQLQuery){
Connection DB2con = DB2Sess.connection();
PreparedStatement statement = DB2con.prepareStatement(SQLQuery);
MyResulset1= statement.executeQuery();
}

另一种方法:

public void ExecuteSybaseQuery(SQLQuery){
Connection Sybasecon = SybaseSess.connection();
PreparedStatement statement = Sybasecon.prepareStatement(SQLQuery);
MyResulset2= statement.executeQuery();
}

最终合并方法

puble void merge{
while(MyResultset1.next()){
while(MyResultset2.next()){
<some code here>
}

我们有什么方法可以遍历这两个结果集吗?没有任何例外。

2 个答案:

答案 0 :(得分:0)

看起来你正试图用嵌套循环遍历这两个结果集。无法完成,因为在内循环完成第一次迭代后,MyResultset2不能再使用了。

我建议你分别迭代两个结果集并将它们的数据存储在一些集合中。然后,您可以根据需要迭代这些集合。

答案 1 :(得分:0)

好的,我会给你代码检查一下。

public void ExecuteDB2Query(SQLQuery){
Connection DB2con = DB2Sess.connection();
PreparedStatement statement = DB2con.prepareStatement(SQLQuery,ResultSet.TYPE_SCROLL_INSENSITIVE);
MyResulset1= statement.executeQuery();
}


public void ExecuteSybaseQuery(SQLQuery){
Connection Sybasecon = SybaseSess.connection();
PreparedStatement statement = Sybasecon.prepareStatement(SQLQuery,ResultSet.TYPE_SCROLL_INSENSITIVE);
MyResulset2= statement.executeQuery();
}

puble void merge{
while(MyResultset1.next()){
MyResultset2.first();
while(MyResultset2.next()){
<some code here>
}

根据您的要求对此代码进行更改。