JDBC异常:ORA-01000: maximum open cursors exceeded

最近因要删除大量数据,于是写了个程序来小批量删除
所以会用到了循环
当循环执行了一段时间后就会抛出异常----ORA-01000: maximum open cursors exceeded
于是到网上查了一下,原来是跟ps =con.prepareStatement(sqlBuffer.toString());有关


异常表示已经达到了一个进程打开的最大游标数

起因:con.cteateStatement()或con.prepareStatement()放在循环体内,而又没有在循环体内关闭statement or preparedStatement。上面语句在执行时相当于在数据库打开一个curesor,游标一直打开而没有关闭。

解决办法:把createStatement() and prepareStatement()放在循环体外,或者在循环体内及时关闭它们。

oracle查看最大游标连接数:show parameter open_cursors;

你可能感兴趣的:(oracle,jdbc)