我用这种方式打开表, 更新记录
pstment = con.prepareStatement(strSql,
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rst = pstment.executeQuery(); rst.updateString("DELIVERTIME", dateStr);
rst.updateRow();
用完后关闭
pstment.close();
为什么还会出现这个错误?
java.sql.SQLException: ORA-01000: maximum open cursors exceeded at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oopen.receive(Oopen.java:120)
at oracle.jdbc.ttc7.TTC7Protocol.open(TTC7Protocol.java:586)
at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:385)
at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:413)
at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:119)
at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:92)
at oracle.jdbc.driver.OracleConnection.privatePrepareStatement(OracleConnection.java:950)
at oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection.java:802)
at oracle.jdbc.driver.ScrollableResultSet.prepare_refetch_statement(ScrollableResultSet.java:2380)
at oracle.jdbc.driver.ScrollableResultSet.refreshRowsInCache(ScrollableResultSet.java:292)
at oracle.jdbc.driver.UpdatableResultSet.execute_updateRow(UpdatableResultSet.java:2240)
at oracle.jdbc.driver.UpdatableResultSet.updateRow(UpdatableResultSet.java:1369)
at sms.app.service.post.HttpPostService.start(HttpPostService.java:135)
at sms.app.service.post.HttpPostService.run(HttpPostService.java:20)
at java.lang.Thread.run(Thread.java:534)
pstment = con.prepareStatement(strSql,
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rst = pstment.executeQuery(); rst.updateString("DELIVERTIME", dateStr);
rst.updateRow();
用完后关闭
pstment.close();
为什么还会出现这个错误?
java.sql.SQLException: ORA-01000: maximum open cursors exceeded at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oopen.receive(Oopen.java:120)
at oracle.jdbc.ttc7.TTC7Protocol.open(TTC7Protocol.java:586)
at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:385)
at oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:413)
at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:119)
at oracle.jdbc.driver.OraclePreparedStatement.<init>(OraclePreparedStatement.java:92)
at oracle.jdbc.driver.OracleConnection.privatePrepareStatement(OracleConnection.java:950)
at oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection.java:802)
at oracle.jdbc.driver.ScrollableResultSet.prepare_refetch_statement(ScrollableResultSet.java:2380)
at oracle.jdbc.driver.ScrollableResultSet.refreshRowsInCache(ScrollableResultSet.java:292)
at oracle.jdbc.driver.UpdatableResultSet.execute_updateRow(UpdatableResultSet.java:2240)
at oracle.jdbc.driver.UpdatableResultSet.updateRow(UpdatableResultSet.java:1369)
at sms.app.service.post.HttpPostService.start(HttpPostService.java:135)
at sms.app.service.post.HttpPostService.run(HttpPostService.java:20)
at java.lang.Thread.run(Thread.java:534)
ResultSet rst = pstment.executeQuery();
返回的结果集记录很多吧?
如果确定你的程序没问题,修改oracle的配置参数
可以这样
dba 连接上数据库
select value from v$parameter where name like '%open_cursors%',
如果参数过小,将它调大一点
alter system set open_cursors=你设定的值;(oracle9i版本)
目前发现错误是在 打开32745 次时出错