gpt4 book ai didi

如果继续重新实例化对象,是否需要 Java SQL .close()?

转载 作者:行者123 更新时间:2023-12-05 09:31:10 25 4
gpt4 key购买 nike

我知道如果您创建一个 SQL PreparedStatement 或 ResultSet,您应该在完成后对资源使用 .close()。但是,如果我正在循环并在每次迭代时重新创建 PreparedStatement,我是否仍然需要在每次迭代期间或在我完成时对其调用 .close()?

例如,如果我有这个:

private Connection con;
private String[] queries;
private PreparedStatement stmt;

...
create connection
fill array queries with 10 queries in it
...

for (int i = 0; i < 10; i++) {

stmt = con.prepareStatement(queries[i], Statement.RETURN_GENERATED_KEYS);
stmt.executeUpdate();

// necessary?
stmt.close()
}

是否有必要在每次迭代时执行 .close() stmt,还是应该在循环完成时才执行?为什么或者为什么不?谢谢。

最佳答案

每次迭代都会创建一个新对象。您保持打开状态的每个语句都可以使资源在数据库服务器上打开的时间超过必要的时间。关闭连接应该会清除所有内容,但已知 JDBC 驱动程序存在无法清除的错误。

在 finally block 中将它们全部关闭,或者对资源使用 try。

关于如果继续重新实例化对象,是否需要 Java SQL .close()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69037954/

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