我有两个结果集,一个来自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>
}
我们有什么方法可以遍历这两个结果集吗?没有任何例外。
答案 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>
}
根据您的要求对此代码进行更改。