try{
String query= "select user_name from user";
ResultSet rs = queries.performQuery(query);
while(rs.next()){
System.out.println("User Name :" + rs.getString("user_name"));
}
в другом классе у меня есть что-то вроде этого:Вызов другого метода для получения результатов и закрытия соединения правильно?
public ResultSet performQuery(String query) throws SQLException
{
try
{
connection = DriverManager.getConnection(sqlUrl,sqlUser,sqlPassword);
stmt = connection.createStatement();
rs = stmt.executeQuery(query);
}
catch(SQLException ex)
{
}
finally{
close(rs);
close(stmt);
close(connection);
}
return rs;
}
Теперь я получаю ошибки операция не допускается после ResultSet закрыты, и это, очевидно, потому, что я закрываю RS/STMT/соединение.
У меня нет моего кода со мной, так что это просто с головы, игнорируйте любые синтаксические ошибки, и я надеюсь, что мой вопрос все еще достаточно ясен.
Так что мой вопрос заключается в следующем:
Если вы хотите иметь метод, который, например, выполняет запросы, и вы называете это в другом методе, а затем сделать rs.next, что является подходящим способом, чтобы закрыть ResultSet/STMT/соединение? Для меня имеет смысл закрыть их executeQuery, но это дает мне ошибку.
Ну, вы выполняете запрос и закрываете 'ResultSet', но на самом деле * извлекаете *, строки результатов должны иметь открытый' ResultSet'. Таким образом, ваш единственный вариант - оставить «ResultSet» открытым после выполнения запроса, чтобы вы могли получить результаты ... После этого закройте его. Вероятно, лучше создать 1 метод, который выполняет запрос И получает результаты (если это то, что вам нужно). – Torious