我有一些从 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/