<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    天道酬勤

    沒有成功,說明努力還不夠!
    隨筆 - 2, 文章 - 0, 評(píng)論 - 29, 引用 - 0
    數(shù)據(jù)加載中……

    2005年1月27日

    關(guān)于ORACLE游標(biāo)的問題(ORA-01000: maximum open cursors exceeded)

    昨天在開發(fā)過程中,經(jīng)常碰到ORA-01000: maximum open cursors exceeded這個(gè)錯(cuò)誤。一看報(bào)錯(cuò),知道是游標(biāo)超過最大數(shù)了,以前在做DB2開發(fā)的時(shí)候,也曾遇到過類似的問題。雖然解決了,但一直沒弄清楚,JDBC是如何和數(shù)據(jù)庫(kù)發(fā)生交互的?又是在什么時(shí)候打開數(shù)據(jù)庫(kù)游標(biāo)的?腦袋就跟漿糊一樣,說來真是慚愧啊

    昨天google了一把,終于解開一點(diǎn)迷惑了。

    下面的片斷轉(zhuǎn)載于www.itpub.net

    [TIP]關(guān)于Java開發(fā)中使用Oracle數(shù)據(jù)庫(kù)的一點(diǎn)注意事項(xiàng)(原創(chuàng))

    很多朋友在Java開發(fā)中,使用Oracle數(shù)據(jù)庫(kù)的時(shí)候,經(jīng)常會(huì)碰到有ORA-01000: maximum open cursors exceeded.的錯(cuò)誤。

    實(shí)際上,這個(gè)錯(cuò)誤的原因,主要還是代碼問題引起的。
    ora-01000: maximum open cursors exceeded.
    表示已經(jīng)達(dá)到一個(gè)進(jìn)程打開的最大游標(biāo)數(shù)。

    這樣的錯(cuò)誤很容易出現(xiàn)在Java代碼中的主要原因是:Java代碼在執(zhí)行conn.createStatement()和conn.prepareStatement()的時(shí)候,實(shí)際上都是相當(dāng)與在數(shù)據(jù)庫(kù)中打開了一個(gè)cursor。尤其是,如果你的createStatement和prepareStatement是在一個(gè)循環(huán)里面的話,就會(huì)非常容易出現(xiàn)這個(gè)問題。因?yàn)橛螛?biāo)一直在不停的打開,而且沒有關(guān)閉。

    一般來說,我們?cè)趯慗ava代碼的時(shí)候,createStatement和prepareStatement都應(yīng)該要放在循環(huán)外面,而且使用了這些Statment后,及時(shí)關(guān)閉。最好是在執(zhí)行了一次executeQuery、executeUpdate等之后,如果不需要使用結(jié)果集(ResultSet)的數(shù)據(jù),就馬上將Statment關(guān)閉。

    對(duì)于出現(xiàn)ORA-01000錯(cuò)誤這種情況,單純的加大open_cursors并不是好辦法,那只是治標(biāo)不治本。實(shí)際上,代碼中的隱患并沒有解除。
    而且,絕大部分情況下,open_cursors只需要設(shè)置一個(gè)比較小的值,就足夠使用了,除非有非常特別的要求。

    我昨天犯的錯(cuò)誤就是把創(chuàng)建statement放到了循環(huán)之內(nèi),結(jié)果導(dǎo)致cursor猛增,到達(dá)了數(shù)據(jù)庫(kù)設(shè)置的最大數(shù)。
    雖然解決了問題,也清楚了游標(biāo)是何時(shí)創(chuàng)建的,但還有幾個(gè)問題比較迷糊。
    1、通過查詢,JDBC是將所有的查詢結(jié)果一次性放到ResultSet中,還是一次只放一定數(shù)目的記錄?例如,查詢結(jié)果為2000條數(shù)據(jù),JDBC是一次性將2000條數(shù)據(jù)放到結(jié)果集中,還是分批放置呢?

    2、當(dāng)通過ResultSet.next(),移動(dòng)結(jié)果集指針時(shí),此時(shí)是否還與數(shù)據(jù)庫(kù)發(fā)生交互?

    posted @ 2005-01-27 10:15 候鳥南飛 閱讀(52591) | 評(píng)論 (27)編輯 收藏

    主站蜘蛛池模板: 亚洲AV第一成肉网| 18禁成人网站免费观看| 欧洲乱码伦视频免费国产 | 亚洲国产综合人成综合网站| 亚洲欧美黑人猛交群| 免费鲁丝片一级观看| 亚洲av无码日韩av无码网站冲| 成人人观看的免费毛片| 国产大陆亚洲精品国产| 亚洲а∨天堂久久精品| 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www | 最新亚洲卡一卡二卡三新区| 无码视频免费一区二三区| 亚洲色中文字幕在线播放| 日本v片免费一区二区三区| 国产亚洲视频在线| 亚洲区小说区图片区QVOD| 国产成人AV片无码免费| 亚洲国产成人精品无码区在线秒播 | 91精品国产免费久久久久久青草 | 黄网站色成年片大免费高清| 亚洲AV无码一区二三区 | 国产乱子伦精品免费视频| 亚洲va久久久噜噜噜久久天堂| 精品一区二区三区无码免费视频| 亚洲国产日韩在线| 亚洲AV成人潮喷综合网| 国产在线精品免费aaa片| 亚洲精品**中文毛片| 女性自慰aⅴ片高清免费| 成年网在线观看免费观看网址| 美女视频黄是免费的网址| 精品亚洲成a人在线观看| 日韩亚洲一区二区三区| 1024免费福利永久观看网站| 精品国产_亚洲人成在线| 亚洲∧v久久久无码精品| 最近的免费中文字幕视频| 99久久免费国产特黄| 久久精品国产亚洲av麻豆蜜芽| 国产午夜免费福利红片|