`
lihong11
  • 浏览: 456980 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

java.sql.SQLException: ORA-01000: 超出打开游标的最大数的原因和解决方案

阅读更多

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驱动包

分享到:
评论

相关推荐

    解决Exception java.sql.SQLException ORA-00600 内部错误代码

    在oracle里面运行一下,解决Exception java.sql.SQLException ORA-00600 内部错误代码

    oracle+ora-各种常见java.sq

    - `java.sql.SQLException: ORA-01000: maximum open cursors exceeded`: 当打开的游标超过数据库允许的最大值时会出现此错误。检查代码中游标的关闭情况,避免资源泄漏。 8. **锁冲突** - `java.sql....

    java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK

    java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK ……

    java.sql.SQLException: 结果集已耗尽

    在Java编程中,`java.sql.SQLException: 结果集已耗尽` 是一个常见的错误提示,通常出现在处理数据库查询结果集时。这个异常表明程序试图访问已经没有数据的结果集中下一行,即所有行已经被遍历完,尝试访问超出范围...

    Caused by: java.sql.SQLException: JZ0SJ: 没有在此数据库中发现元数据存取器信息。 请按 jConnect 文档中所述安装

    标题中的“Caused by: java.sql.SQLException: JZ0SJ: 没有在此数据库中发现元数据存取器信息。 请按 jConnect 文档中所述安装”是一个典型的错误信息,表明在尝试使用Java数据库连接(JDBC)驱动程序访问数据库时...

    ORA-00060: 等待资源时检测到死锁--oracle 数据库表死锁异常

    为了解析这个问题,我们需要深入理解Oracle数据库的锁定机制、死锁的原因以及如何诊断和解决死锁。 首先,Oracle数据库使用多粒度锁定(Multigranularity Locking,MGL)机制,提供行级、块级和表级的锁定。当事务...

    服务器出现java.sql.SQLException No suitable driver found for 的.pdf

    ### 服务器出现java.sql.SQLException No suitable driver found for 的解析与解决方案 #### 问题背景 在进行Servlet开发过程中,尤其是在尝试连接数据库时,遇到了一个常见的异常:“java.sql.SQLException: No ...

    ORA-01157解决方案.txt

    ### ORA-01157 错误详解与解决方案 #### 错误代码与含义 ORA-01157 错误是 Oracle 数据库中一个常见的错误代码,其全称是:“ORA-01157: 无法识别/文件 - DBWR 文件”。这个错误通常发生在数据库启动过程中,当...

    JDBC驱动for sqlserver、oracle、mysql

    JDBC提供SQLException类及其子类来捕获和处理这些异常,确保程序的健壮性。 9. 执行批处理: 对于批量插入或更新操作,JDBC提供了BatchUpdateException和addBatch()方法,可以提高效率。 总结,JDBC驱动是Java与...

    ORA-28001 the password has expired密码过期.docx

    在Oracle数据库管理中,"ORA-28001 the password has expired" 是一个常见的错误,它表明数据库用户的密码已经超过了预设的有效期限,导致用户无法正常登录。这个错误主要出现在Oracle 11G及更高版本中,因为这些...

    oracle ora-各种常见java.sql.SQLException归纳

    Oracle ORA 异常处理详解 Oracle 是一个强大的关系数据库管理系统,然而,在使用 Oracle 时,总是会遇到各种错误信息,这些错误信息是Oracle抛出的异常信息,用于提示开发者出现了什么问题。了解这些错误信息是...

    ora-dba.rar

    "ora-dba.rar" 是一个专门针对Oracle数据库管理的实用工具集合,对于数据库开发者和管理员而言,它提供了全面的功能,极大地简化了日常的数据库管理和优化任务。这个工具集的使用不仅可以提升工作效率,还能帮助DBA...

    java.sql.SQLException: 内部错误: Unable to construct a Datum from the specified input

    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

    oracle实例的内存(SGA和PGA)进行调整,优化数据库性

    1. **共享池(Shared Pool)**:用于缓存最近执行的SQL语句和数据定义,包括库缓存和数据字典缓存。 2. **数据缓冲区(Database Buffer Cache)**:缓存从数据文件中检索的数据块,显著提升读写性能。 3. **日志缓冲...

    oracle jdbc dirver

    它实现了Java Database Connectivity (JDBC) API,使得开发者可以使用Java语言来操作Oracle数据库,执行SQL语句,进行数据查询、插入、更新和删除等操作。Oracle JDBC驱动分为不同版本,包括 Thin、OCI、JDBC-ODBC ...

    数据库连接利用工具–Sylas

    针对“ORA-24345”错误的解决方案可能涉及到检查SQL语句,确保所有字段的数据类型和长度都与数据库表结构相匹配,或者调整缓冲区大小以适应数据。对于文件管理功能的问题,可能需要修复或优化上传机制,确保只有安全...

    java.sql.SQLException: null,  message from server: “Host ‘%’ is not allowed to connect to

    java.sql.SQLException: null, message from server: “Host ‘223.72.41.7’ is not allowed to connect to this MySQL server” 客户端访问时报错: 解决方法: 1,登陆服务器 mysql&gt; use mysql; //用mysql ...

    ora常用sql.rar

    "ora常用sql.rar"这个压缩包显然包含了DBA(Database Administrator,数据库管理员)在日常工作中经常会用到的一些Oracle SQL命令。让我们详细探讨一下这些关键命令及其用途。 1. **查看系统SGA区状态**: SGA...

    oracle数据库的clob大字段在jdbc中的处理方式

    在JDBC中,CLOB对象被表示为`java.sql.Clob`接口的实例,提供了读取和修改CLOB字段的方法。 要读取CLOB字段并转换为String,你需要遵循以下步骤: 1. **建立连接**:使用`DriverManager.getConnection()`方法建立...

    hive-jdbc-1.1.0-cdh5.4.5-standalone.jar

    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 ...

Global site tag (gtag.js) - Google Analytics