﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-天道酬勤</title><link>http://www.blogjava.net/snoopy/</link><description>没有成功，说明努力还不够！</description><language>zh-cn</language><lastBuildDate>Sun, 03 May 2026 06:24:48 GMT</lastBuildDate><pubDate>Sun, 03 May 2026 06:24:48 GMT</pubDate><ttl>60</ttl><item><title>关于ORACLE游标的问题(ORA-01000: maximum open cursors exceeded)</title><link>http://www.blogjava.net/snoopy/archive/2005/01/27/744.html</link><dc:creator>候鸟南飞</dc:creator><author>候鸟南飞</author><pubDate>Thu, 27 Jan 2005 02:15:00 GMT</pubDate><guid>http://www.blogjava.net/snoopy/archive/2005/01/27/744.html</guid><wfw:comment>http://www.blogjava.net/snoopy/comments/744.html</wfw:comment><comments>http://www.blogjava.net/snoopy/archive/2005/01/27/744.html#Feedback</comments><slash:comments>27</slash:comments><wfw:commentRss>http://www.blogjava.net/snoopy/comments/commentRss/744.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/snoopy/services/trackbacks/744.html</trackback:ping><description><![CDATA[<P>昨天在开发过程中，经常碰到ORA-01000: maximum open cursors exceeded这个错误。一看报错，知道是游标超过最大数了，以前在做DB2开发的时候，也曾遇到过类似的问题。虽然解决了，但一直没弄清楚，JDBC是如何和数据库发生交互的？又是在什么时候打开数据库游标的？脑袋就跟浆糊一样，说来真是惭愧啊<IMG height=19 src="http://www.blogjava.net/Emoticons/red_smile.gif" width=19 border=0></P>
<P>昨天google了一把，终于解开一点迷惑了。</P>
<P>下面的片断转载于<A href="http://www.itpub.net">www.itpub.net</A></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff"><FONT color=#0000ff><FONT face=Verdana>[TIP]关于Java开发中使用Oracle数据库的一点注意事项（原创）</FONT> </FONT></FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffffff" face="verdana, arial, helvetica" color=#0000ff size=2>很多朋友在Java开发中，使用Oracle数据库的时候，经常会碰到有ORA-01000: maximum open cursors exceeded.的错误。 <BR><BR>实际上，这个错误的原因，主要还是代码问题引起的。 <BR>ora-01000: maximum open cursors exceeded. <BR>表示已经达到一个进程打开的最大游标数。 <BR><BR>这样的错误很容易出现在Java代码中的主要原因是：Java代码在执行conn.createStatement()和conn.prepareStatement()的时候，实际上都是相当与在数据库中打开了一个cursor。尤其是，如果你的createStatement和prepareStatement是在一个循环里面的话，就会非常容易出现这个问题。因为游标一直在不停的打开，而且没有关闭。 <BR><BR>一般来说，我们在写Java代码的时候，createStatement和prepareStatement都应该要放在循环外面，而且使用了这些Statment后，及时关闭。最好是在执行了一次executeQuery、executeUpdate等之后，如果不需要使用结果集（ResultSet）的数据，就马上将Statment关闭。 <BR><BR>对于出现ORA-01000错误这种情况，单纯的加大open_cursors并不是好办法，那只是治标不治本。实际上，代码中的隐患并没有解除。 <BR>而且，绝大部分情况下，open_cursors只需要设置一个比较小的值，就足够使用了，除非有非常特别的要求。</FONT></P>
<P><FONT face=Verdana><FONT color=#000000 size=2>我昨天犯的错误就是把创建statement放到了循环之内，结果导致cursor猛增，到达了数据库设置的最大数。</FONT></FONT><BR>虽然解决了问题，也清楚了游标是何时创建的，但还有几个问题比较迷糊。<BR>1、通过查询，JDBC是将所有的查询结果一次性放到ResultSet中，还是一次只放一定数目的记录？例如，查询结果为2000条数据，JDBC是一次性将2000条数据放到结果集中，还是分批放置呢？</P>
<P>2、当通过ResultSet.next()，移动结果集指针时，此时是否还与数据库发生交互？</P><img src ="http://www.blogjava.net/snoopy/aggbug/744.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/snoopy/" target="_blank">候鸟南飞</a> 2005-01-27 10:15 <a href="http://www.blogjava.net/snoopy/archive/2005/01/27/744.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>终于有了java的blog了</title><link>http://www.blogjava.net/snoopy/archive/2005/01/13/267.html</link><dc:creator>候鸟南飞</dc:creator><author>候鸟南飞</author><pubDate>Thu, 13 Jan 2005 03:18:00 GMT</pubDate><guid>http://www.blogjava.net/snoopy/archive/2005/01/13/267.html</guid><wfw:comment>http://www.blogjava.net/snoopy/comments/267.html</wfw:comment><comments>http://www.blogjava.net/snoopy/archive/2005/01/13/267.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/snoopy/comments/commentRss/267.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/snoopy/services/trackbacks/267.html</trackback:ping><description><![CDATA[<p>在cnblogs也呆了快大半年了，但由于平时事情比较多，在公司也很少有心情去写东西，所以也闲置了很久。</p> <p>前天收到dudu的邀请，抢注了一个java的blog。以后会经常来，也写下自己的成长历程，不仅是为了日省三身，不断提高自己，同时也是为了在以后，能给自己留下一点东西。无论是好是坏，都是自己的。</p> <p>&nbsp;</p><img src ="http://www.blogjava.net/snoopy/aggbug/267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/snoopy/" target="_blank">候鸟南飞</a> 2005-01-13 11:18 <a href="http://www.blogjava.net/snoopy/archive/2005/01/13/267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>