我知道Java中的安全模式是在finally块中依次关闭ResultSet,Statement和Connection。
如果您关闭连接,然后尝试关闭语句(不抛出异常)。但是,如果您尝试从语句中调用任何方法,则会引发异常。
我想知道关闭连接是否会自动关闭从该连接创建的所有语句对象?
更新:
我正在使用DatabaseProductVersion:Oracle Database 11g版本11.1.0.0.0 DriverName:Oracle JDBC驱动程序 DriverVersion:10.2.0.4.0
是的,Connection.closeAPI说“立即释放此Connection对象的数据库和JDBC资源,而不是等待它们被自动释放”。问题在于应用程序通常使用数据库连接池,而这些连接池可能只是将Connection返回到Connection.close上的池。
无论如何,总是始终显式关闭ResultSet和Statement而不依赖于Connection.close是一个好习惯。
此外,直接使用JDBC并不是最好的主意。您可以改用Spring JDBC,而不必担心释放资源的问题。
我知道Java中的安全模式是在finally块中按顺序关闭结果集、语句和连接。 若您关闭连接,然后尝试关闭语句(不引发异常)。但若您试图从语句中调用任何方法,则会引发异常。 我想知道关闭连接是否会自动关闭所有由该连接创建的语句对象? 更新:我正在使用DatabaseProductVersion:Oracle Database 11g Release 11.1.0.0.0驱动程序名称:Oracle
我有一个spring应用程序,它的主页发出多个ajax调用,这些调用反过来从DB中提取数据并返回。DB已配置连接池,minPoolSize为50,maxPoolSize为100。 现在,当我打开主页时,大约有7个连接与DB建立,这是因为大约有7个ajax调用被调用,我假设所有调用都创建了自己的连接。现在,当我刷新页面时,我看到又建立了7个新连接(我看到db2监控中总共有14个物理连接),这似乎出乎
我最近转到了一个项目,在这个项目中我遇到了很多这种性质的代码--(这是使用jdbc postgres驱动程序) 显然,这段代码已经在生产中运行了一段时间,没有引起问题。 为了进一步澄清,如果我的理解是正确的(即,statement和resultset必须在连接关闭之前而不是之后关闭),我需要在catch和finally之间重复一些代码。修订后的代码如下所示。这可以简化吗? 只是为了透视,这段代码是
JavaDoc for没有提到关闭底层的: https://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#close-- 从课堂上复制的描述:Reader 关闭流并释放与之关联的所有系统资源。流关闭后,进一步的read()、ready()、mark()、reset()或skip()调用将抛出IOException。
我们有一个java应用程序,我们使用多个语句变量。为什么需要多个语句的问题是,有时在为循环内的一个结果运行循环时,我们需要执行其他一些查询操作。大多数地方,单一的stmt被使用了很多次,最后我们关闭。现在我们要确认的是,我们没有关闭resultset变量,我们注意到内存的使用情况会波动。那么,在得到结果后立即关闭resultset的最佳机制是什么,还是在结束时关闭stmt之前关闭resultset
问题内容: 是否可以自动关闭?即,代替: …我能说......么: …在Java 7中? 问题答案: 不,该接口(也不是该类)都未实现该接口,而新的try- with-resource语法必须使用该接口。 如果您想使其工作,可以编写一个简单的包装器: 现在您可以编写如下代码: 我认为您最好还是坚持使用旧语法。使锁定逻辑完全可见是更安全的。