使用connection.close()尝试/ catch / finally

时间:2018-05-14 14:21:01

标签: java mysql try-catch database-connection

我需要首先从方法返回数据,然后调用连接,但是警告告诉我:“此方法应该返回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) { }
    }
}

upd:选择将返回类型更改为字符串作为解决方案

1 个答案:

答案 0 :(得分:1)

我们可以修复此方法,以便返回对结果集的引用。但是这种方法正在关闭结果集。调用者无法使用该引用。

此代码模式,打开结果集,关闭结果集以及返回对已关闭结果集的引用不起作用。