2010-05-06 102 views
0

可以在单个ResultSet中使用两个查询结果集问题

+0

你能解释一下你想完成什么吗?我假设你想UNION两个差异查询合并结果集 – 2010-05-06 06:17:59

+0

您可能需要在这里给我们一个简单的例子... – ninesided 2010-05-06 06:18:40

回答

2

结果集对应于单个SQL查询。但是,您的“单个”查询可以使用UNION来有效地组合多个查询。

+1

或子查询;) – Bozho 2010-05-06 06:27:56

0

不,你不应该这样做。 例如

ResultSet rs = null; 
Statement stmt1 = con.createStatement("Query1"); 
Statement stmt2 = con.createStatement("Query2"); 
rs = stmt1.executeQuery(); 
while(rs.next()){ 
} 
//Here result set should be closed before assigning new result set to "rs" variable like 
stmt1.close(); 
rs.close(); 
rs = stmt2.executeQuery(); 

您应该在再次使用它之前关闭旧的结果集。如果你不关闭旧的resultset对象,那么它将在内存中并且永远不会被垃圾收集。 如果在这种情况下关闭数据库连接对象(没有正确关闭结果集),那么当连接具有引用(即未关闭结果集)时,连接对象不会被垃圾收集(未重新分配给池)。