java jdbc 和 oracle - 超出最大打开游标数

标签 java oracle jdbc

我有一些从 Oracle 检索数据的 JDBC 代码。

在我的方法中,我使用了一个准备好的语句,但是我没有关闭那个准备好的语句。 为了测试它,我在一个循环中运行了它,果然我得到了一个异常:

ORA-01000: maximum open cursors exceeded

我的问题是在托管环境的情况下(代码部署在使用连接池的 Java EE 应用程序服务器上):

  • 应用程序会怎样?
  • 除非关闭/回收连接,否则它永远无法向数据库发出任何 SQL 查询吗? (假设池中只有1个连接)

我假设池中的连接并未真正关闭 - oracle session 将处于 Activity 状态。

最佳答案

您需要关闭执行查询时返回的ResultSet 对象。并确保您不会泄漏游标,您需要在 finally block 中执行此操作。我相信这也适用于托管环境。

关于java jdbc 和 oracle - 超出最大打开游标数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8552440/

相关文章:

java - 将两个数组列表合二为一

java - Controller 和 Wicket 页面的设计模式帮助

java - 我无法将记录插入到在 oracle 数据库中创建的表中。我犯了什么错误?

java - 尝试使用 JDBC 连接到 Java Derby 数据库

java - 不通过 while (rs.next()) 处理所需的输出

java "error cannot open file"jar

java - 将 Java vector 写入分隔文件

sql - Oracle Apex 5 错误,ORA-00907 : missing right parenthesis. 看不到缺少的括号?

Oracle sqlplus 执行不同编码的文件

java - 为什么 Exception.getMessage() 在 postgres jdbc 8.3 和 jdbc 8.4 版本之间不同?