`
java虫
  • 浏览: 535723 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用ORACLE数据库的游标错误( maximum open cursors exceeded)

    博客分类:
  • DB
阅读更多
最近开发第一次遇到“ maximum open cursors exceeded”这个错误。表示已经达到一个进程打开的最大游标数
游标:当返回一个含有多条记录的结果集时,游标就像指向结果集中当前记录的指针,通过游标我们可以处理结果集中的每一条记录。
对于出现ORA-01000 maximum open cursors exceeded错误这种情况,单纯的加大open_cursors并不是好办法,那只是治标不治本。实际上,代码中的隐患并没有解除。 而且,绝大部分情况下,open_cursors只需要设置一个比较小的值,就足够使用了,除非有非常特别的要求。

从网上查了一下这个错误的原因,主要还是代码问题引起的。

这样的错误很容易出现在Java代码中的主要原因是:Java代码在执行conn.createStatement()和conn.prepareStatement()的时候,实际上都是相当于在数据库中打开了一个cursor。尤其是,如果你的createStatement和prepareStatement是在一个循环里面的话,就会非常容易出现这个问题。因为游标一直在不停的打开,而且没有关闭。

一般来说,我们在写Java代码的时候,createStatement和prepareStatement都应该要放在循环外面,而且使用了这些Statment后,及时关闭。最好是在执行了一次executeQuery、executeUpdate等之后,如果不需要使用结果集(ResultSet)的数据,就马上将Statment关闭。

我就是在循环里调用con.prepareStatement(sql)导致的这个错误。
修改方法,
在遍历完ResutSet后关闭rs和stmt就可以了。
rs.close();
stmt.close();

或者改程序,不要在循环里调用con.prepareStatement(sql)。
分享到:
评论

相关推荐

    Oracle 数据库游标使用大全

    Oracle数据库游标是数据库管理系统中用于处理查询结果的一种机制,它允许程序逐行处理查询结果,而不是一次性加载所有数据。在Oracle中,游标对于实现复杂的数据操作和控制流程至关重要,特别是在存储过程和触发器中...

    oracle数据库游标使用例子

    Oracle数据库中的游标是PL/SQL编程中一种重要的控制结构,它允许程序逐行处理查询结果,而不是一次性处理所有结果。游标对于处理大量数据或需要根据每行数据执行不同操作的情况非常有用。以下是关于Oracle游标使用的...

    快速掌握Oracle数据库游标的使用方法

    Oracle 数据库游标的使用方法 Oracle 数据库游标是指在查询返回结果超过一行时,需要使用的显式游标。用户不能使用 select into 语句,而是需要使用游标来处理多行查询结果。在 PL/SQL 中,隐式游标会在查询开始时...

    oracle数据库游标实验报告

    oracle数据库游标实验报告!oracle数据库游标实验报告!oracle数据库游标实验报告!

    Oracle数据库游标使用.rar

    “Oracle数据库游标使用大全.pdf”这份文档可能详细介绍了以上内容,并提供了具体的示例代码和实践技巧,帮助读者深入理解和应用Oracle数据库游标。通过学习和实践这些知识,开发者能够更好地掌握Oracle数据库编程,...

    oracle数据库的游标

    游标是Oracle数据库中一个重要的概念,它是一种在内存中用于存储SQL查询结果的临时工作...随着Oracle数据库的不断更新和发展,对于初学者和数据库管理员来说,学习和使用游标是数据库管理和编程中必不可少的技能之一。

    Oracle数据库游标连接超出解决方案

    oracle数据库忽然连不上了,一查是游标数量超了。 1.查看游标数 show parameter open_cursors 2.修改游标数 alter system set open_cursors = 10000; 3.获取打开的游标数 select o.sid, osuser, machine, count...

    Oracle数据库游标使用大全

    整理的Oracle数据库游标使用大全 SQL是用于访问ORACLE数据库的语言,PL/SQL扩展和加强了SQL的功能,它同时引入了更强的程序逻辑。 PL/SQL支持DML命令和SQL的事务控制语句。DDL在PL/SQL中不被支持,这就意味作在PL/...

    Oracle数据库游标使用大全.doc

    Oracle数据库游标使用大全

    oracle数据库 游标、存储过程和触发器.ppt

    Oracle 数据库游标、存储过程和触发器 Oracle 数据库是一种关系型数据库管理系统,它提供了多种机制来提高数据库的性能和安全性。在本文中,我们将讨论 Oracle 数据库中的三个重要概念:游标、存储过程和触发器。 ...

    Oracle数据库的游标学习总结

    本文将详细介绍Oracle数据库中的游标概念、分类及其使用方法,并通过具体的例子进行说明。 #### 二、游标的分类 Oracle游标主要分为两大类:显示游标和隐式游标。其中,显示游标又可以根据定义方式的不同细分为...

    数据库游标练习

    本小练习主要目的是帮助你理解和掌握如何在Oracle数据库中使用游标。 1. **游标的定义** 游标(Cursor)是数据库系统中用来跟踪查询结果集的一个结构化对象。它允许用户按行处理查询结果,一次只处理结果集中的一...

    使用游标更新数据库

    使用游标更新数据库 使用游标更新数据库是指在游标定位下,修改或删除表中指定的数据行。...* 在使用游标更新数据库时,需要确保游标结果集中当前行对应的数据行没有被其他用户锁定,否则可能会出现错误。

    数据库游标的使用数据库游标的使用.doc

    数据库游标的使用 数据库游标是数据库系统中的一种机制,允许开发者逐行地读取查询结果集,并对每一行记录进行操作。下面是关于数据库游标的使用的详细知识点: 1. 为什么要使用游标? 在查询结果集中逐行地读取...

    Oracle数据库添加 更新 游标 过程 Java Project

    总结来说,这个Java项目的核心是通过Oracle数据库的添加、更新操作以及使用游标处理过程来管理数据。这涵盖了数据库基础、SQL语法、PL/SQL编程以及Java中的JDBC应用。理解和掌握这些知识点,对于进行企业级的Java...

    Oracle12c数据库基础教程Oracle12c数据库游标、存储过程和触发器.pptx

    Oracle 12c 数据库基础教程 - 游标、存储过程和触发器 Oracle 12c 数据库基础教程中,游标、存储过程和触发器是三个重要的概念。本文将详细介绍游标的基本概念、类型、声明、打开、读取和关闭,存储过程的定义和...

    超出打开游标的最大数的原因和解决方案

    如果应用程序打开的游标数超过这个限制,会引发 ORA-01000: maximum open cursors exceeded 异常。下面将探讨超出打开游标的最大数的原因和解决方案。 原因 应用程序打开的游标数超过 OPEN_CURSORS 参数指定的最大...

Global site tag (gtag.js) - Google Analytics