Java JDBC关闭资源

Java JDBC关闭资源,java,jdbc,connection,resultset,Java,Jdbc,Connection,Resultset,我不确定是在每次查询后还是在所有查询完成后(即在关闭连接的同时)关闭语句和结果集 如果我错了,请纠正我,但我很确定这两种方法都有效 但是,如果我在每次查询之后不关闭一个语句,然后执行大量查询,数据库最终会崩溃吗 另一方面,继续关闭并为每个查询创建语句是否效率低下和浪费时间 在问这个问题之前,我已经读了很多关于这个问题的书,但我仍然不确定。感谢您的帮助 tre.来自: 完成后关闭结果集 使用完ResultSet后立即关闭ResultSet对象 对象,即使语句对象关闭了ResultSet对象 当它关

我不确定是在每次查询后还是在所有查询完成后(即在关闭连接的同时)关闭语句和结果集

如果我错了,请纠正我,但我很确定这两种方法都有效

但是,如果我在每次查询之后不关闭一个语句,然后执行大量查询,数据库最终会崩溃吗

另一方面,继续关闭并为每个查询创建语句是否效率低下和浪费时间

在问这个问题之前,我已经读了很多关于这个问题的书,但我仍然不确定。感谢您的帮助

tre.

来自:

完成后关闭结果集

使用完ResultSet后立即关闭ResultSet对象 对象,即使语句对象关闭了ResultSet对象 当它关闭时,关闭ResultSet显式地提供机会 要使垃圾收集器尽早重新收集内存,因为 ResultSet对象可能会占用大量内存,具体取决于查询


简而言之,您不必显式地关闭
ResultSet
对象,但最好这样做,以便更早地释放内存。如果不关闭
结果集
对象,只会导致它所占用的内存(根据结果集的大小,内存可以小,也可以大)被占用,直到相应的
语句
对象关闭为止。

这有多重要实际上取决于您所做的具体操作。但通常最好关闭一个结果集(在finally块中)。从我一直阅读和看到的所有内容来看,打开连接本身就是性能损失所在


您不想快速打开/关闭连接(这就是许多应用程序和服务器实现连接池的原因)。

您好,非常感谢您的回答。我以前读过这篇文章,但不确定——这是否意味着我应该在每次查询后关闭ResultSet,但只在执行所有查询后关闭语句?谢谢。@tre我详细说明了我的答案。如果您需要更多的澄清,请告诉我。确实如此,很抱歉要求进一步澄清,但这确实会有所帮助-这是否意味着单个语句的每个结果集都将保留到该语句关闭为止?非常感谢,竖起大拇指。编辑:我必须等一分钟才能说这是正确的答案:)如果您从一条语句中获得多个结果集,那么它们都将保持打开状态,直到您1)手动关闭结果集对象或2)关闭该语句。如果从一条语句中获取多个结果集,那么最好在处理完未使用的结果集后关闭它们,否则应用程序将继续占用更多内存空间。希望有帮助!非常感谢这非常非常非常有帮助-非常快速地打开/关闭连接正是我使用当前代码要做的事情,所以现在我知道我绝对不应该这样做。但是,在每次查询之后打开/关闭一条语句会怎么样?这是否也是不好的和不必要的?我怀疑关闭并重新创建该语句会有多大伤害,但如果我一次完成几个查询,我不会关闭该语句。