try-with-resource'必须是一个变量声明'[重复]

问题描述 投票:-1回答:2

因此,我正在使用JDBC连接到本地主机MySQL服务器,并且在编写try块以与服务器连接并发送查询时,出现'Cannot find symbol'错误。

[我知道这是因为对象是在try条件内初始化的,而我正在尝试从finally条件使用它,但是我也无法在try块之外对其进行初始化,因为出现错误提示'The try-with-resources resource must be a variable declaration or an expression denoting to a final or effectively final variable'] >

我试图编写代码的总体思路是,无论是否引发异常,都能够在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();
    }
}

提前为可以提供的帮助加油:)

[因此,我正在使用JDBC连接到本地主机MySQL服务器,并且在对try块进行编码以使其与服务器连接并发送查询时,出现“找不到符号”错误。我了解...

java mysql jdbc
2个回答
0
投票

您需要像下面一样更改代码


0
投票

我认为您打算使用:

© www.soinside.com 2019 - 2024. All rights reserved.