ORA-01000:maximum open cursors excceeded;ORA-00604 :error occurred at recursive SQL level 1
数据库游标超限标错。
每个数据库分配的都有相应的游标连接数据量。eg:20个。如果一直建立数据库的连接,而不去关闭和释放,就会使得使用过的游标处于游离状态,实际上该游标也未关闭。
如果在java中使用了原始的操作数据库的语句 创建了 pstmt对象,每一个对象都必须关闭,包括结果集 resultset。
eg代码如下:
rs.close();
stmt.close();
conn.close();
这些关闭连接的代码特别重要,每次使用完一定记得关闭
public static void main(String[] args) throws SQLException {
//1.注册数据库的驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//2.通过 DriverManager获取数据库连接
String url="jdbc:mysql://localhost:3306/xyjtest";
String usernames="root";
String password="itcast";
Connection conn=DriverManager.getConnection(url, username, password);
//3.通过 Connection对象获取 Statement对象
Statement stmt= conn.createStatement();
//4.使用 Statement执行SQL语句
String sql="select * from student";
ResultSet rs=stmt.executeQuery(sql);
//5、操作 ResultSet结果集
System.out.println("id|name|password|email|birthday");
while (rs.next()) {
int id=rs.getInt("id"); //通过列名获取指定字段的值
String name=rs.getString("0");
String psw=rs.getString("1");
String email=rs.getString("2");
Date birthday=rs.getDate("3");
}
//6.关闭连接
rs.close();
stmt.close();
conn.close();
}
}
如果是循环,一定要在循环内部关闭psmt,使用完result也需要去关闭。
报错如下: