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

aki*_*ila 4 java oracle jdbc

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

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

ORA-01000: maximum open cursors exceeded
Run Code Online (Sandbox Code Playgroud)

我的问题是托管环境(使用连接池在Java EE Application Server上部署的代码):

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

我假设池中的连接并没有真正关闭 - oracle会话将会活着.

Ste*_*n C 5

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