Java-从同一个Statement对象创建多个ResultSet - 它会产生任何影响吗?

Aru*_*run 4 java database jdbc resultset

我有一个从同一个Statement对象生成的2个ResultSet.

代码示例如下:

Connection con            = null;
Statement  stmt           = null;
ResultSet rs = null;

con = DBAccess.getConnection();
stmt = con.createStatement();

rs = stmt.executeQuery(Query1);
// operate on the resultset

rs = stmt.executeQuery(Query2);   // Is it legal and do not have side-effects?
// operate on the resultset

// close everythings (Resultset, Statement, Connection)
Run Code Online (Sandbox Code Playgroud)

我检查它运作良好.我怀疑是否会有任何副作用?

Den*_*ret 9

来自javadoc:

默认情况下,每个Statement对象只能同时打开一个ResultSet对象.因此,如果读取一个ResultSet对象与另一个ResultSet对象的读取交错,则每个ResultSet对象必须由不同的Statement对象生成.如果存在打开的对象,则Statement接口中的所有执行方法都会隐式关闭该语句的当前ResultSet对象.

所以是的,你可以安全地做到.执行第二个查询后,您无法使用第一个结果集.