共999条数据,只插入298条,报错:java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误

共999条数据,只插入298条,报错:java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01000: 超出打开游标的最大数
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01000: 超出打开游标的最大数
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01000: 超出打开游标的最大数


代码:

public class test {

public static void main(String[] args) {
// TODO Auto-generated method stub
       DButil db=new DButil();
       db.getConnection();
       List<Object>  param=new ArrayList<Object>();
       String sql="insert into person1 values(?,?,?,?)";
       for(int i=0;i<999;i++){
      db.getConnection();
      param.add(i+1);
      param.add("name"+i);
      if(i%2==0){
         param.add("男");
      }else{
      param.add("女");
      }
       param.add(20+i);
       try {
db.update(sql, param);
param.clear();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
       db.close();
       
       }
      
}

}


public class DButil {
private String driver = "oracle.jdbc.driver.OracleDriver";
private String url = "jdbc:oracle:thin:@localhost:1521:orcl";
private String user = "qierian";
private String password = "123456";
private Connection conn = null;
private PreparedStatement ps = null;
private ResultSet rs = null;


public Connection getConnection() {
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}


// 查询数据
public ResultSet quarryPerson(String sql, List<Object> param) throws SQLException {
ps = conn.prepareStatement(sql);
//System.out.println(sql);
//System.out.println(param);
if (param!=null && param.size()!= 0) {
for (int i = 1; i <= param.size(); i++) {
ps.setObject(i, param.get(i-1));
}

}
rs = ps.executeQuery();


return rs;
}


// 增删改数据
public void  update(String sql,List<Object>param) throws SQLException{
ps = conn.prepareStatement(sql);
if (param != null || param.size() != 0) {
for (int i = 1; i <= param.size(); i++) {
ps.setObject(i, param.get(i-1));
}
ps.executeUpdate();
}
}


public void close(){

try {
if(rs!=null){
  rs.close();
}

if(ps!=null){
ps.close();
}

if(conn!=null){
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 

在命令窗口,输入如下命令

show parameters open_cursors

看看这个参数设置的多少。默认是300
游标使用完了记得关闭。
如果实在不能关,那就增大游标数
alter system set open_cursors=2000 scope=both;

2:每次访问,关闭连接

 

链接:http://blog.csdn.net/zq9017197/article/details/7345352

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值