oracle超出打开游标的最大数的原因和解决方案

处理超出打开游标的最大数异常(ORA-01000: maximum open cursors exceeded)

在执行如下代码时,经常会出现ora-01000: maximum open cursors exceeded异常

	for(int i=0;i

一般来说,我们在写Java代码的时候,createStatement和prepareStatement都应该要放在循环外面,而且使用了这些 Statment后,及时关闭。最好是在执行了一次executeQuery、executeUpdate等之后,如果不需要使用结果集(ResultSet)的数据,就马上将Statement或PreparedStatement关闭。
如果你使用连接池,那么请注意,Connection关闭并不是物理关闭,只是归还连接池,所以PreparedStatement和 ResultSet都被持有,并且实际占用相关的数据库的游标资源,在这种情况下,只要长期运行,往往就会报“游标超出数据库允许的最大值”的错误,导致程序无法正常访问数据库。
正确的代码,如下所示:

for(int i=0;i

在执行了一次executeQuery、executeUpdate等之后,如果不需要使用结果集(ResultSet)的数据,就马上将Statement或PreparedStatement关闭。

你可能感兴趣的:(java)