В коде в отдельном классе произвожу выборки и возвращаю ResultSet
public static ResultSet exe() throws Exception {
ResultSet rout;
Class.forName("oracle.jdbc.driver.OracleDriver");
...
ResultSet rs = stmt.executeQuery(sql); // 1
rout = rs; // 2
stmt.close();
conn1.close();
return rout;
}
А вызываю и обрабатываю так
public static void main(String args[]) throws Exception {
ResultSet r;
r = exe();
while (r.next()){
out(r.getString(1)); // Класс для вывода, работает
}
}
Я переписываю в новый ResultSet (2) и возвращаю. Но у меня выводится ошибка
Exception in thread "main" java.sql.SQLRecoverableException: Закрытое соединение: next
Почему закрытие соединения влияет на копию ResultSet и когда мне тогда закрывать соединение? Объясните, пожалуйста.
P.S.: Причем, если не закрывать соединение, все работает нормально. Но его же нужно закрывать обязательно?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей