濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Oracle出現(xiàn)超出打開游標(biāo)最大數(shù)的解決方法

Oracle出現(xiàn)超出打開游標(biāo)最大數(shù)的解決方法

熱門標(biāo)簽:圖吧網(wǎng)站地圖標(biāo)注 山東crm外呼系統(tǒng)軟件 開發(fā)外呼系統(tǒng) 地圖標(biāo)注養(yǎng)老院 慧營(yíng)銷crm外呼系統(tǒng)丹丹 哈爾濱電話機(jī)器人銷售招聘 百度地圖標(biāo)注途經(jīng)點(diǎn) 愛客外呼系統(tǒng)怎么樣 哪個(gè)400外呼系統(tǒng)好

本文實(shí)例講述了Oracle出現(xiàn)超出打開游標(biāo)最大數(shù)的解決方法。分享給大家供大家參考,具體如下:

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)閉。

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

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

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

但是假如你使用連接池,那么請(qǐng)注重,Connection關(guān)閉并不是物理關(guān)閉,只是歸還連接池,所以PreparedStatement和ResultSet都被持有,并且實(shí)際占用相關(guān)的數(shù)據(jù)庫(kù)的游標(biāo)資源,在這種情況下,只要長(zhǎng)期運(yùn)行,往往就會(huì)報(bào)“游標(biāo)超出數(shù)據(jù)庫(kù)答應(yīng)的最大值”的錯(cuò)誤,導(dǎo)致程序無(wú)法正常訪問數(shù)據(jù)庫(kù)。

正確的代碼,如下所示:

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();
  //循環(huán)到一定數(shù)量就要關(guān)閉,防止出現(xiàn)超出最大游標(biāo)數(shù)量
  prepstmt.close();
}

希望本文所述對(duì)大家Oracle數(shù)據(jù)庫(kù)程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • 詳解Oracle游標(biāo)的簡(jiǎn)易用法
  • Oracle游標(biāo)的使用實(shí)例詳解
  • Oracle中游標(biāo)Cursor基本用法詳解
  • 詳解Oracle隱式游標(biāo)和顯式游標(biāo)
  • Oracle中的游標(biāo)和函數(shù)詳解
  • Oracle顯示游標(biāo)的使用及游標(biāo)for循環(huán)
  • Oracle存儲(chǔ)過程返回游標(biāo)實(shí)例詳解
  • Oracle 游標(biāo)使用總結(jié)
  • oracle 在一個(gè)存儲(chǔ)過程中調(diào)用另一個(gè)返回游標(biāo)的存儲(chǔ)過程
  • Oracle游標(biāo)使用參考語(yǔ)句實(shí)例解析

標(biāo)簽:周口 固原 和田 武漢 青島 承德 開封 甘肅

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle出現(xiàn)超出打開游標(biāo)最大數(shù)的解決方法》,本文關(guān)鍵詞  Oracle,出現(xiàn),超出,打開,游標(biāo),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Oracle出現(xiàn)超出打開游標(biāo)最大數(shù)的解決方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Oracle出現(xiàn)超出打開游標(biāo)最大數(shù)的解決方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    镇赉县| 沂源县| 黑水县| 孝感市| 扶余县| 乌拉特后旗| 福泉市| 成都市| 营口市| 莒南县| 固原市| 若羌县| 鞍山市| 大英县| 东丽区| 汤原县| 迁西县| 南阳市| 桓台县| 赤城县| 乃东县| 嘉禾县| 平潭县| 顺义区| 海门市| 怀来县| 开远市| 西藏| 慈利县| 海伦市| 辉县市| 九龙城区| 高唐县| 洛阳市| 城口县| 宽甸| 永丰县| 高台县| 太白县| 济源市| 寻乌县|