gpt4 book ai didi

Java、ResultSet.close()、PreparedStatement.close()——有什么用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:31 38 4
gpt4 key购买 nike

在我的网络应用程序中,我广泛使用了数据库。

我有一个抽象的 servlet,所有需要数据库连接的 servlet 都继承自它。该抽象 servlet 创建一个数据库连接,调用必须由继承 servlet 覆盖的抽象方法来执行它们的逻辑,然后关闭连接。我不使用连接池,因为我的应用程序的用户和操作数量非常有限。

我的问题是,如果我不关闭 ResultSetPreparedStatementStatement,最糟糕的情况是什么如果创建它们的 Connection 始终关闭,我的继承 servlet 会创建什么?

最佳答案

Statement#close() 的 javadoc说:

Note:When a Statement object is closed, its current ResultSet object, if one exists, is also closed.

所以您不必担心关闭 ResultSets,只要您始终及时关闭 Statements 即可。

Connection#close() 的 javadoc没有做出相应的保证,但确实写着:

Releases this Connection object's database and JDBC resources immediately instead of waiting for them to be automatically released.

您可能会合理地将其解释为暗示任何陈述都将被关闭。查看开源 jTDS 驱动程序,并查看一个知名且昂贵的商业数据库的驱动程序,我可以看到他们正是这样做的。

关于Java、ResultSet.close()、PreparedStatement.close()——有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4872830/

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