Oracle中打开游标超出最大值
向Oracle数据库表中插入十几万条数据,可是当插入3万多条后,程序就抛
Java代码
ORA-01000 maximum open cursors exceeded
ORA-01000 maximum open cursors exceeded
异常信息。Google了异常信息,得知这样的错误很容易出现在Java代码中的主要原因是:Java代码在执行conn.createStatement()和conn.prepareStatement()的时候,实际上都是相当于在数据库中打开了一个cursor。尤其是,如果你的createStatement和prepareStatement是在一个循环里面的话,就会非常容易出现这个问题。因为游标一直在不停的打开,而且没有关闭。
一般来说,我们在写Java代码的时候,createStatement和prepareStatement都应该要放在循环外面,而且使用了这些Statment后,及时关闭。最好是在执行了一次executeQuery、executeUpdate等之后,如果不需要使用结果集(ResultSet)的数据,就马上将Statment关闭(statementName.close())。
下面将代码附上
抛异常代码:
Java代码
Connection conn = DBUtils.getConnection();//获取数据库连接
PreparedStatement pstmt = conn.prepareStatement("select statement...");
ResultSet rset = pstmt.executeQuery();
while (rset.next()) {
PreparedStatement pst=conn.prepareStatement("insert statement...");//开启一个游标
//pst.setXXX()...;
pst.executeUpdate();
pst=conn.prepareStatement("another insert statement");//再开启一个游标
//pst.setXXX()...;
pst.executeUpdate();
pst=conn.prepareStatement("third insert statement");//开启一个游标
//pst.setXXX()...;
&
相关文档:
很久没有更新Oracle数据库的文章了,今天小编整理了一下资料,和大家分享Oracle的体系。oracle的体系很庞大,要学习它,首先要了解oracle的框架。在这里,简要的讲一下oracle的架构,让初学者对oracle有一个整体的认识。
1、物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成) 控 ......
SQL> show user
USER is "SYS"
SQL> create user t1 identified by t1;
create user t1 identified by t1
*
ERROR at line 1:
ORA-01920: user name 'T1' conflicts with another user or role name
SQL> drop user t1 cascade;
User dropped.
SQL> create user t1 identified by t1;
Us ......
安装过程中出现“X11/extensions/Print.h: No such file or directory”的解决方法
这是因为系统中缺少libXp-devel
# yum install libXp-devel
安装过程中出现“X11/bitmaps/gray: No such file or directory”的解决方法
这是因为系统中缺少xorg-x11-xbitmaps(x11/xbitmaps (Ubuntu) and xorg-x1 ......
导出Oracle数据库结构
1.方法一:直接写sql语句
//获取一个SCHEMA下的所有建表和建索引的语法,以scott为例:
spool portal_schema.sql
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)
from USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)
from USER_INDEXES u;
spool off;
2. ......