попробуй / поймай / наконец с connection.close () - PullRequest
0 голосов
/ 14 мая 2018

Мне нужно сначала вернуть данные из метода, а затем вызвать соединение, но предупреждение говорит мне: «Этот метод должен возвращать результат типа ResultSet», добавляя возврат в конец метода после закрытия, но если вы напишите это так, что предупреждение все еще существует. Может быть, я должен удалить все это и использовать инкапсуляцию по-другому? Вот метод

public ResultSet doSQLQuery(String query) throws ClassNotFoundException{

    Class.forName("com.mysql.jdbc.Driver");

    String SQLQuery = query;

    Connection connection = null;
    PreparedStatement statement = null;
    ResultSet resultSet = null;

    try{
        connection = DriverManager.getConnection(DB_URL,login,password);

        statement = connection.prepareStatement(SQLQuery);
        resultSet = statement.executeQuery();

        return resultSet; //return from this place doesnt possible(?)

    } catch (SQLException e) {
        System.err.println("SQLException caught");
        e.printStackTrace();
    }finally {
        if (resultSet != null)
            try { resultSet.close(); }
            catch (SQLException ignore) { }
        if (statement != null)
            try { statement.close(); }
            catch (SQLException ignore) { }
        if (connection != null)
            try { connection.close(); }
            catch (SQLException ignore) { }
    }
}

обн .: в качестве решения выбрано изменение типа возвращаемого значения на строку

1 Ответ

0 голосов
/ 14 мая 2018

Мы можем исправить этот метод, чтобы он возвращал ссылку на набор результатов.Но этот метод закрывает набор результатов.Вызывающая сторона не сможет использовать ссылку.

Этот шаблон кода, открывающий набор результатов, закрывающий набор результатов и возвращающий ссылку на закрытый набор результатов, не будет работать.

...