共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