2011-09-07 67 views
3

我不确定是否Statement和ResultSet应该每次查询后关闭或已作出后,我所有的问题(即在同一时间,我关闭连接)?JDBC闭幕资源

纠正我,如果我错了,但我敢肯定,这两个工作?

然而,将数据库最终崩溃,如果我没有每次查询后关闭语句,然后进行大量的查询?

在另一方面,那会是低效和浪费时间的,以保持关闭&创建报表,每次查询?

我已经阅读了关于这个问题有很多问这个问题之前,但我仍不明朗。任何帮助表示赞赏,

tre。

回答

2

http://www.precisejava.com/javaperf/j2ee/JDBC.htm#JDBC118

尽快使用完的ResultSet 对象的工作,即使Statement对象关闭ResultSet对象 它关闭隐时完成

关闭ResultSet对象时关闭的ResultSet,关闭ResultSet明确地给予机会 垃圾收集器尽可能早地回忆内存,因为 ResultSet对象可能会占用大量内存,具体取决于que RY。

概括地说,你不明确地关闭ResultSet对象,但最好这样做早些时候释放内存。未能关闭对象只会导致其占用的内存(可能较小或较大,取决于结果集的大小)被占用,直到相应的对象关闭。

+0

嗨,非常感谢您的回答。我以前读过这个,但对此不确定 - 这是否意味着我应该在每次查询后关闭ResultSet,但只能在执行所有查询后关闭语句?谢谢。 – tre

+0

@tre我详细阐述了我的答案。让我知道你是否需要更多的澄清。 –

+0

它做到了,并且对于要求进一步澄清感到抱歉,但它确实有帮助 - 这是否意味着单个声明的每个结果集都会保留到声明结束?非常感谢,竖起大拇指。编辑:我必须等待一分钟,说这是正确的答案:) – tre

0

这个多少钱重要真的取决于你在做什么的具体细节。但通常最好关闭结果集(在finally块中)。从我一直阅读和看到的所有内容来看,打开连接本身就是性能处罚的地方。

不要想要做的就是打开/关闭连接非常快(这就是为什么许多应用程序和服务器实现连接池)。

+0

非常感谢这真的,真的帮助 - 非常快速地打开/关闭连接正是我正在用我当前的代码正在做的事情,所以现在我知道我绝对不应该这样做。但是,在每个查询后打开/关闭语句怎么样 - 这是否也是不好的和不必要的? – tre

+0

我怀疑关闭并重新创建声明会有很大的伤害,但如果我一次只做几个查询,我就不会关闭声明。 – Manius