Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jdbc:我什么时候可以关闭什么_Java_Database_Jdbc - Fatal编程技术网

Java jdbc:我什么时候可以关闭什么

Java jdbc:我什么时候可以关闭什么,java,database,jdbc,Java,Database,Jdbc,目前,我有以下基本结构的jdbc代码: 取得联系 (将下面4行重复几次,不要结束语句) 获取语句 获取结果集 处理结果集 封闭结果集 密切联系 写了这段代码后,我突然想到需要关闭语句。 1不结束声明会产生什么影响。 2以下工作是否正常,此si关闭语句是否会阻止我正常处理结果集 取得联系 (将下面5行重复几次) 获取语句 获取结果集 结束语句 处理结果集 封闭结果集 紧密连接答案取决于您的JDBC驱动程序。你在那里写的可能有用 但是,一般规则是,只有在处理完相应的resultset后,才能关闭语句

目前,我有以下基本结构的jdbc代码:

取得联系

(将下面4行重复几次,不要结束语句)
获取语句
获取结果集
处理结果集
封闭结果集

密切联系

写了这段代码后,我突然想到需要关闭语句。
1不结束声明会产生什么影响。
2以下工作是否正常,此si关闭语句是否会阻止我正常处理结果集

取得联系

(将下面5行重复几次)
获取语句
获取结果集
结束语句
处理结果集
封闭结果集


紧密连接

答案取决于您的JDBC驱动程序。你在那里写的可能有用

但是,一般规则是,只有在处理完相应的resultset后,才能关闭语句


编辑:我知道你有第二个问题,你问了不关闭语句/结果集的影响等等。影响也取决于您的JDBC驱动程序,但它可能导致严重的资源泄漏。

关闭行为在中指定。关闭连接将释放与连接关联的所有JDBC资源,并将隐式关闭所有语句、结果集等。关闭语句将关闭结果集

示例2不能保证有效。应在使用ResultSet后关闭该语句。该规范说,如果您尝试使用该结果集,您应该得到一个SQLException(一些JDBC驱动程序没有严格遵循该规范,MS也不是最大的违规者)


如果您忘记关闭ResultSet或语句,那么最糟糕的情况是您消耗数据库和JVM资源的时间超过了需要的时间。在资源受限或高负载的系统上,这可能会导致内存/连接/资源错误或性能降低。

如果您使用的是Oracle,而忘记关闭将得到的语句

ORA-01000: maximum open cursors exceeded
过了一会儿