解决java.sql.BatchUpdateException: ORA-01000: 超出打开游标的最大数

原因:Java代码在执行conn.createStatement()和 conn.prepareStatement()的时候,实际上都是相当与在数据库中打开了一个cursor。尤其是,如果你的 createStatement和prepareStatement是在一个循环里面的话,就会非常容易出现这个问题。
游标一直在不停的打开,而且没有关闭。
一般情况createStatement和prepareStatement应该放在循环外面,而且使用了这些 Statment后,及时关闭。
最好是在执行了一次executeQuery、executeUpdate等之后,如果不需要使用结果集(ResultSet)的数据,就马上将Statement或PreparedStatement关闭。

for(int i=0;i<balancelist.size();i++)
{
     prepstmt = conn.prepareStatement(sql[i]);
     prepstmt.setBigDecimal(1,nb.getRealCost());
     prepstmt.setString(2, adclient_id);
     prepstmt.setString(3, daystr);
     prepstmt.setInt(4, ComStatic.portalId);
     prepstmt.executeUpdate();
     //马上将Statement或PreparedStatement关闭
     prepstmt.close();
}
上一篇:关于jdbc的连接的建立过程


下一篇:JDBC——CreateStatement和PrepareStatement作用区别