提问者:小点点

Try-with-resource“必须是变量声明”[重复]


因此,我使用JDBC连接到本地主机MySQL服务器,当我编写try块以连接服务器并发送查询时,我会收到一个'找不到符号'错误。

我理解这是因为对象是在try条件内初始化的,并且我试图从finally条件中使用它,但是我也不能在try块外初始化它,因为我得到一个错误:'the try-with-resources resource must be a variable声明或表示final或有效final变量的表达式'

我试图编码的一般思想是,无论是否抛出异常,都能够在finally块中关闭与数据库的连接。 所讨论的代码如下(突出显示有错误的行):

public static String returnEmployeeName(String ID) throws ClassNotFoundException, SQLException {
    HashMap<String, String> infoHR = connectionInfoHR();

    String query = "SELECT first_name FROM employees WHERE employee_id = '" + ID + "'";

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

    Statement st;
    ResultSet rs;
    Connection con;

    try (con = DriverManager.getConnection(infoHR.get("url"), infoHR.get("uname"), infoHR.get("pass"))) {
        //Error on line above relating to not initialising the object within the statement

        st = con.createStatement();
        rs = st.executeQuery(query);

        rs.next();
        return rs.getString("first_name");

    } finally {

        st.close();
        con.close();
    }
}

提前为任何可以提供的帮助欢呼:)


共2个答案

匿名用户

我想你的意思是:

    ResultSet rs;
    try (Connection con = DriverManager.getConnection(infoHR.get("url"), infoHR.get("uname"), infoHR.get("pass")); 
         Statement st = con.createStatement()) {
        //Error on line above relating to not initialising the object within the statement

        rs = st.executeQuery(query);

        rs.next();
        return rs.getString("first_name");
    }

请记住,您使用的是自动关闭连接的try-with-resources块。 您不需要在之前声明连接并在finnaly块中关闭它。

匿名用户

您需要更改代码,如下所示

 try (Connection con = DriverManager.getConnection(infoHR.get("url"), infoHR.get("uname"), infoHR.get("pass")),
              Statement st = con.createStatement()) {
        //Error on line above relating to not initialising the object within the statement

        rs = st.executeQuery(query);

        rs.next();
        return rs.getString("first_name");
    }

Java 7-允许我们声明要在try块中使用的资源,并保证在执行该块之后资源将被关闭。

您可以在以下网址找到更多信息:https://www.baeldung.com/java-try-with-resources

相关问题