读书人

事宜提交前CURSOR不会关闭

发布时间: 2011-12-05 22:12:57 作者: rapoo

事务提交前CURSOR不会关闭?
下面是简化后的代码片段:

transaction begin
for(............){

try{
ps=conn.prepareStatement(....);
rs = stmt.executeQuery();
rs.close();
stmt.close();
stmt = conn.prepareStatement( sql.toString() );
stmt.executeUpdate();
}catch
........
}finally {
stmt.close
conn.close

}
}
transaction commit

问题描述:
commit之前出现了 ORA-01000: maximum open cursors exceeded 异常,
想问是否commit之前所有打开的cursors不会关闭?即使显示调用了close

针对上面这样的程序逻辑有没有办法回避上述问题?

[解决办法]
把transaction放入for循环,每次循环算作一个事务
[解决办法]
试试batchUpdate
[解决办法]
参考一下

http://www.blogjava.net/snoopy/archive/2005/01/27/744.html


尝试在for循环外创建Statement和PreparedStatement

[解决办法]
conn.close 放到循环外 ?

读书人网 >J2SE开发

热点推荐