Java、MySQL - 线程 "main" java.sql.SQLException 中的异常:ResultSet 关闭后不允许操作

Java,MySQL - Exception in thread "main" java.sql.SQLException: Operation not allowed after ResultSet closed

我正在尝试获取 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;
}

您收到此错误是因为您在关闭 ResultSet 后尝试读取它 ,这是被禁止的。

您需要在您的方法 getAddressID 中关闭您的连接(和您的 ResultSet),如下所示:

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;
}