Java,MySQL - Исключение в потоке "main" java.sql.SQLException: операция не разрешена после закрытия ResultSet
Я пытаюсь получить первый элемент ResultSet
, Почему я получаю эту ошибку
public ResultSet executeSearch(String q){
openConnection();
ResultSet resultSet = null;
try{
Statement statement = connection.createStatement();
resultSet = statement.executeQuery(q);
closeConnection();
return resultSet;
}
catch (Exception e){
JOptionPane.showMessageDialog(null, e.getMessage());
}
finally {
closeConnection();
}
return resultSet;
}
public int getAddressID(String city) throws SQLException{
String q = "SELECT PK_ADDRESS_ID FROM tbl_addresses WHERE city =" + "\'"+ city + "\';";
System.out.println(q);
ResultSet rs = executeSearch(q);
int i = 0;
if (rs.next()){
i = rs.getInt(1);
};
return i;
}
1 ответ
Решение
Вы получаете эту ошибку, потому что вы пытаетесь прочитать ваш ResultSet
после закрытия, что запрещено.
Вам необходимо закрыть соединение (и ваш ResultSet
) в вашем методе getAddressID
вместо этого, как следующее:
public ResultSet executeSearch(String q){
openConnection();
try {
return connection.createStatement().executeQuery(q);
} catch (Exception e){
JOptionPane.showMessageDialog(null, e.getMessage());
}
return null;
}
public int getAddressID(String city) throws SQLException{
...
try (ResultSet rs = executeSearch(q)) {
...
} finally {
closeConnection();
}
return i;
}