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: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK ……
- `java.sql.SQLException: ORA-01000: maximum open cursors exceeded`: 当打开的游标超过数据库允许的最大值时会出现此错误。检查代码中游标的关闭情况,避免资源泄漏。 8. **锁冲突** - `java.sql....
在Java编程中,`java.sql.SQLException: 结果集已耗尽` 是一个常见的错误提示,通常出现在处理数据库查询结果集时。这个异常表明程序试图访问已经没有数据的结果集中下一行,即所有行已经被遍历完,尝试访问超出范围...
标题中的“Caused by: java.sql.SQLException: JZ0SJ: 没有在此数据库中发现元数据存取器信息。 请按 jConnect 文档中所述安装”是一个典型的错误信息,表明在尝试使用Java数据库连接(JDBC)驱动程序访问数据库时...
为了解析这个问题,我们需要深入理解Oracle数据库的锁定机制、死锁的原因以及如何诊断和解决死锁。 首先,Oracle数据库使用多粒度锁定(Multigranularity Locking,MGL)机制,提供行级、块级和表级的锁定。当事务...
在Oracle数据库管理中,"ORA-28001 the password has expired" 是一个常见的错误,它表明数据库用户的密码已经超过了预设的有效期限,导致用户无法正常登录。这个错误主要出现在Oracle 11G及更高版本中,因为这些...
Oracle ORA 异常处理详解 Oracle 是一个强大的关系数据库管理系统,然而,在使用 Oracle 时,总是会遇到各种错误信息,这些错误信息是Oracle抛出的异常信息,用于提示开发者出现了什么问题。了解这些错误信息是...
"ora-dba.rar" 是一个专门针对Oracle数据库管理的实用工具集合,对于数据库开发者和管理员而言,它提供了全面的功能,极大地简化了日常的数据库管理和优化任务。这个工具集的使用不仅可以提升工作效率,还能帮助DBA...
服务器出现java.sql.SQLException No suitable driver found for 的
ORA-01157解决方案
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
它实现了Java Database Connectivity (JDBC) API,使得开发者可以使用Java语言来操作Oracle数据库,执行SQL语句,进行数据查询、插入、更新和删除等操作。Oracle JDBC驱动分为不同版本,包括 Thin、OCI、JDBC-ODBC ...
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 ...
利用时执行如 tasklist /svc 、net user 等命令时出现 ORA-24345: 出现截断或空读取错误,且文件管理功能出现问题,无法上传webshell,因此萌生了重写利用工具的想法。
"ora常用sql.rar"这个压缩包显然包含了DBA(Database Administrator,数据库管理员)在日常工作中经常会用到的一些Oracle SQL命令。让我们详细探讨一下这些关键命令及其用途。 1. **查看系统SGA区状态**: SGA...
oracle实例的内存(SGA和PGA)进行调整,优化数据库性
本文主要介绍了关于MySQL存储表情报错:java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x92\xA9\x0D\x0A…’的相关解决方法,分享出供大家参考学习,下面话不多说了,来一起看看详细的介绍: ...
2008/06/25 13:30:57 - oracl - ERROR : java.sql.SQLException: ORA-01722: 无效数字 2008/06/25 13:30:57 - oracl - ERROR : at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
主要给大家介绍了关于MySQL存储表情时报错:java.sql.SQLException: Incorrect string value: 'xF0x9Fx92xA9x0Dx0A...'的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。