【发布时间】:2013-07-01 07:21:54
【问题描述】:
如果由于不同的原因我必须通过相同的ResultSet 使用while(rs.next()) 循环两次,我该怎么做才能使ResultSet 不会自动关闭并防止'ResultSet 关闭例外'?我尝试使用resultset.first() 将光标移回第一个循环后的第一行,但即使在此语句中也会触发此错误!
【问题讨论】:
如果由于不同的原因我必须通过相同的ResultSet 使用while(rs.next()) 循环两次,我该怎么做才能使ResultSet 不会自动关闭并防止'ResultSet 关闭例外'?我尝试使用resultset.first() 将光标移回第一个循环后的第一行,但即使在此语句中也会触发此错误!
【问题讨论】:
这取决于您使用的驱动程序。
某些驱动程序无法重置ResultSet。在这种情况下,您将在调用first() 时收到Exception。
如果您的驱动程序支持在ResultSet 中滚动,您可以通过调用getResultSetType() 来签入Statement。
如果可能,请尝试在一次迭代中完成两件事,因为您永远不知道是否可以在 ResultSet 上进行第二次迭代。
【讨论】: