gpt4 book ai didi

java - 语句中的 try-with-resources 是否会关闭连接?

转载 作者:行者123 更新时间:2023-11-30 08:17:58 25 4
gpt4 key购买 nike

在这段代码中,连接会被关闭吗?

Connection con = DriverManager.getConnection(dbUrl, user, pass);
try (Statement st = con.createStatement()) {
ResultSet rs = st.executeQuery(query);
}

我的代码中有些东西意外地关闭了连接,我想确保不是这个原因。

最佳答案

不,在 Statement 上调用 close 不会关闭 Connection。这将阻止我们在已经打开的连接上创建下一条语句,这意味着我们必须为每个语句创建新的连接(这可能是昂贵的操作)。

你可以很容易地测试它。只需在前一个语句关闭后尝试创建另一个语句即可。

Connection con = DriverManager.getConnection(dbUrl,user,pass);
try (Statement st = con.createStatement()) {
ResultSet rs = st.executeQuery(sqlQuery1);
simplePrint(rs);
} catch (SQLException e) {
e.printStackTrace();
}//here `st` will be closed automatically by try-with-resources

try (Statement st = con.createStatement()) {//lets try to create next statement
ResultSet rs = st.executeQuery(sqlQuery2);
simplePrint(rs);
} catch (SQLException e) {
e.printStackTrace();
}

simplePrint 方法可能如下所示:

public static void simplePrint(ResultSet rs) throws SQLException {
ResultSetMetaData meta = rs.getMetaData();
while (rs.next()) {
for (int i = 1; i <= meta.getColumnCount(); i++) {
System.out.print(rs.getObject(i)+"\t");
}
System.out.println();
}
}

关于java - 语句中的 try-with-resources 是否会关闭连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27870964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com