stmt = conn.createStatement();
rs = stmt.executeQuery("select * from t1");
rst = stmt.executeQuery("select * from t2"); // 此行隱式關閉 rs
rs.last(); // 拋 SQLException: Operation not allowed after ResultSet closed
By default, only one ResultSet object per Statement object can be open at the same time. All execution methods in the Statement interface implicitly close a statement's current ResultSet object if an open one exists.
同一 Statement 執行新查詢會隱式關閉前一個 ResultSet。
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from t1");
rs.last(); // 立即處理完 rs
rst = stmt.executeQuery("select * from t2"); // 再開新的
rst.last();
stmt1 = conn.createStatement();
stmt2 = conn.createStatement();
rs = stmt1.executeQuery("select * from t1");
rst = stmt2.executeQuery("select * from t2");
rs.last();
rst.last(); // 互不干擾
一個 Statement 同一時刻只能擁有一個開啟的 ResultSet。若需同時持有多個結果集,必須建立多個 Statement。