婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Oracle出現超出打開游標最大數的解決方法

Oracle出現超出打開游標最大數的解決方法

熱門標簽:圖吧網站地圖標注 山東crm外呼系統軟件 開發外呼系統 地圖標注養老院 慧營銷crm外呼系統丹丹 哈爾濱電話機器人銷售招聘 百度地圖標注途經點 愛客外呼系統怎么樣 哪個400外呼系統好

本文實例講述了Oracle出現超出打開游標最大數的解決方法。分享給大家供大家參考,具體如下:

Java代碼在執行conn.createStatement()和conn.prepareStatement()的時候,實際上都是相當與在數據庫中打開了一個cursor。尤其是,假如你的createStatement和prepareStatement是在一個循環里面的話,就會非常輕易出現這個問題。因為游標一直在不停的打開,而且沒有關閉。

一般來說,我們在寫Java代碼的時候,createStatement和prepareStatement都應該要放在循環外面,而且使用了這些Statment后,及時關閉。最好是在執行了一次executeQuery、executeUpdate等之后,假如不需要使用結果集(ResultSet)的數據,就馬上將Statement或PreparedStatement關閉。

對于出現ORA-01000錯誤這種情況,單純的加大open_cursors并不是好辦法,那只是治標不治本。實際上,代碼中的隱患并沒有解除。而且,絕大部分情況下,open_cursors只需要設置一個比較小的值,就足夠使用了,除非有非常非凡的要求。

假如你不使用連接池,那么就沒有什么問題,一旦Connection關閉,數據庫物理連接就被釋放,所有相關Java資源也可以被GC回收了。

但是假如你使用連接池,那么請注重,Connection關閉并不是物理關閉,只是歸還連接池,所以PreparedStatement和ResultSet都被持有,并且實際占用相關的數據庫的游標資源,在這種情況下,只要長期運行,往往就會報“游標超出數據庫答應的最大值”的錯誤,導致程序無法正常訪問數據庫。

正確的代碼,如下所示:

for(int i=0;ibalancelist.size();i++)
{
  prepstmt = conn.prepareStatement(sql[i]);
  prepstmt.setBigDecimal(1,nb.getRealCost());
  prepstmt.setString(2, adclient_id);
  prepstmt.setString(3, daystr);
  prepstmt.setInt(4, ComStatic.portalId);
  prepstmt.executeUpdate();
  //循環到一定數量就要關閉,防止出現超出最大游標數量
  prepstmt.close();
}

希望本文所述對大家Oracle數據庫程序設計有所幫助。

您可能感興趣的文章:
  • 詳解Oracle游標的簡易用法
  • Oracle游標的使用實例詳解
  • Oracle中游標Cursor基本用法詳解
  • 詳解Oracle隱式游標和顯式游標
  • Oracle中的游標和函數詳解
  • Oracle顯示游標的使用及游標for循環
  • Oracle存儲過程返回游標實例詳解
  • Oracle 游標使用總結
  • oracle 在一個存儲過程中調用另一個返回游標的存儲過程
  • Oracle游標使用參考語句實例解析

標簽:周口 固原 和田 武漢 青島 承德 開封 甘肅

巨人網絡通訊聲明:本文標題《Oracle出現超出打開游標最大數的解決方法》,本文關鍵詞  Oracle,出現,超出,打開,游標,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle出現超出打開游標最大數的解決方法》相關的同類信息!
  • 本頁收集關于Oracle出現超出打開游標最大數的解決方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 仁怀市| 涟水县| 金乡县| 萨迦县| 阿拉善右旗| 徐州市| 鹤岗市| 荣昌县| 汉川市| 江门市| 莱芜市| 罗甸县| 临泽县| 白城市| 汨罗市| 右玉县| 夏津县| 库车县| 赤峰市| 虎林市| 湘潭市| 富源县| 福贡县| 离岛区| 磐石市| 金华市| 蒙阴县| 尖扎县| 双江| 昌宁县| 柏乡县| 丘北县| 凯里市| 娄底市| 离岛区| 体育| 紫金县| 泰顺县| 泗阳县| 平阴县| 宁晋县|