java.sql.SQLException: ORA-01000: 超出打开游标的最大数的原因和解决方案
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
//oracle连接
public class UserConn {
public static String url="jdbc:oracle:thin:@192.168.49.92:1521:orcl";
public static String user="ur";
public static String pwd="ur";
static {
try {
Class.forName("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConn(){
Connection conn=null;
try {
conn=DriverManager.getConnection(url,user,pwd);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
}
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class UserImpl implements UserInterface {
Connection conn = null;
public UserImpl() {
conn = UserConn.getConn();
}
public void add(User user) {
String sql = "insert into register values(?,?,?,?,?,?) ";
// String userid="4028e4e937167cc80137169";
String userid = "4028e4e937167cc80137169";
String strTable = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz";
int len = strTable.length();
for (int i = 0; i < 9; i++) {
int intR = (int) Math.floor(Math.random() * len);
char c = strTable.charAt(intR);
userid += c;
}
// userid+=UUID.randomUUID().toString();
System.out.println("id:" + userid);
PreparedStatement pstm;
try {
pstm = conn.prepareStatement(sql);
pstm.setString(1, userid);
pstm.setString(2, user.getAddress());
pstm.setString(3, user.getSex());
pstm.setDate(4, new Date(user.getBirthday().getTime()));
pstm.setString(5, user.getName());
pstm.setInt(6, user.getAge());
pstm.executeUpdate();
pstm.close(); //问题所在,没有关闭pstm
System.out.println("增加成功");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
//测试
public class TestUser {
public static void main(String[] args){
UserInterface userdao=new UserImpl();
User user=new User();
//user.setId("1");
user.setAddress("aa");
user.setSex("aa");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
Date birDate = dateFormat.parse("2010-11-11");
user.setBirthday(birDate);
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
user.setName("aa");
user.setAge(20);
long startTime = System.currentTimeMillis();
for (int i = 0; i < 500000; i++) {
userdao.add(user);
}
long endTime = System.currentTimeMillis();
long totalTime = endTime - startTime;
System.out.println("add totalTime:"+totalTime);
}
}
这段代码是已经能运行正确的,但是如果不写pstm.close()时会报超出游标最大数的异常,这是因为在循环里面每次都
pstm = conn.prepareStatement(sql);而没有释放,这样每个都占用了一个服务器的游标资源,所以最后抛异常。
附件为oracle驱动包
分享到:
相关推荐
在oracle里面运行一下,解决Exception java.sql.SQLException ORA-00600 内部错误代码
- `java.sql.SQLException: ORA-01000: maximum open cursors exceeded`: 当打开的游标超过数据库允许的最大值时会出现此错误。检查代码中游标的关闭情况,避免资源泄漏。 8. **锁冲突** - `java.sql....
java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK ……
为了解析这个问题,我们需要深入理解Oracle数据库的锁定机制、死锁的原因以及如何诊断和解决死锁。 首先,Oracle数据库使用多粒度锁定(Multigranularity Locking,MGL)机制,提供行级、块级和表级的锁定。当事务...
在Java编程中,`java.sql.SQLException: 结果集已耗尽` 是一个常见的错误提示,通常出现在处理数据库查询结果集时。这个异常表明程序试图访问已经没有数据的结果集中下一行,即所有行已经被遍历完,尝试访问超出范围...
标题中的“Caused by: java.sql.SQLException: JZ0SJ: 没有在此数据库中发现元数据存取器信息。 请按 jConnect 文档中所述安装”是一个典型的错误信息,表明在尝试使用Java数据库连接(JDBC)驱动程序访问数据库时...
### ORA-01157 错误详解与解决方案 #### 错误代码与含义 ORA-01157 错误是 Oracle 数据库中一个常见的错误代码,其全称是:“ORA-01157: 无法识别/文件 - DBWR 文件”。这个错误通常发生在数据库启动过程中,当...
JDBC提供SQLException类及其子类来捕获和处理这些异常,确保程序的健壮性。 9. 执行批处理: 对于批量插入或更新操作,JDBC提供了BatchUpdateException和addBatch()方法,可以提高效率。 总结,JDBC驱动是Java与...
在Oracle数据库管理中,"ORA-28001 the password has expired" 是一个常见的错误,它表明数据库用户的密码已经超过了预设的有效期限,导致用户无法正常登录。这个错误主要出现在Oracle 11G及更高版本中,因为这些...
Oracle ORA 异常处理详解 Oracle 是一个强大的关系数据库管理系统,然而,在使用 Oracle 时,总是会遇到各种错误信息,这些错误信息是Oracle抛出的异常信息,用于提示开发者出现了什么问题。了解这些错误信息是...
"ora-dba.rar" 是一个专门针对Oracle数据库管理的实用工具集合,对于数据库开发者和管理员而言,它提供了全面的功能,极大地简化了日常的数据库管理和优化任务。这个工具集的使用不仅可以提升工作效率,还能帮助DBA...
Q: I am working with ... I am using updateBinaryStream method of resultset to update the BLOB field but it is failing after giving following exception java.sql.SQLException: Internal Error: Unable to
1. **共享池(Shared Pool)**:用于缓存最近执行的SQL语句和数据定义,包括库缓存和数据字典缓存。 2. **数据缓冲区(Database Buffer Cache)**:缓存从数据文件中检索的数据块,显著提升读写性能。 3. **日志缓冲...
它实现了Java Database Connectivity (JDBC) API,使得开发者可以使用Java语言来操作Oracle数据库,执行SQL语句,进行数据查询、插入、更新和删除等操作。Oracle JDBC驱动分为不同版本,包括 Thin、OCI、JDBC-ODBC ...
在JDBC中,CLOB对象被表示为`java.sql.Clob`接口的实例,提供了读取和修改CLOB字段的方法。 要读取CLOB字段并转换为String,你需要遵循以下步骤: 1. **建立连接**:使用`DriverManager.getConnection()`方法建立...
针对“ORA-24345”错误的解决方案可能涉及到检查SQL语句,确保所有字段的数据类型和长度都与数据库表结构相匹配,或者调整缓冲区大小以适应数据。对于文件管理功能的问题,可能需要修复或优化上传机制,确保只有安全...
java.sql.SQLException: null, message from server: “Host ‘223.72.41.7’ is not allowed to connect to this MySQL server” 客户端访问时报错: 解决方法: 1,登陆服务器 mysql> use mysql; //用mysql ...
"ora常用sql.rar"这个压缩包显然包含了DBA(Database Administrator,数据库管理员)在日常工作中经常会用到的一些Oracle SQL命令。让我们详细探讨一下这些关键命令及其用途。 1. **查看系统SGA区状态**: SGA...
Caused by: java.sql.SQLException: java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver at com.trs.gateway.commons.hive.HiveFeature.getConnection(HiveFeature.java:57) at ...