程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Java開發中使用Oracle數據庫的一點提醒

Java開發中使用Oracle數據庫的一點提醒

編輯:Oracle數據庫基礎

很多朋友在Java開發中,使用Oracle數據庫的時候,經常會碰到有ORA-01000: maximum open cursors exceeded的錯誤。

實際上,這個錯誤的原因,主要還是代碼問題引起的。

ora-01000: maximum open cursors exceeded.

表示已經達到一個進程打開的最大游標數。

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

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

對於出現ORA-01000錯誤這種情況,單純的加大open_cursors並不是好辦法,那只是治標不治本。實際上,代碼中的隱患並沒有解除。

而且,絕大部分情況下,open_cursors只需要設置一個比較小的值,就足夠使用了,除非有非常特別的要求。實際上不管連什麼數據庫,都要記得及時關掉不需要再用的連接。

Java連結Oracle時常犯的錯誤列舉:

1. 只懂 createStatement,不懂關閉statement;

2. 只懂 createStatement,不懂preparedStatement;

3. 只懂在sql裡用to_date,甚至直接用String,不懂用setDate()。

Statement每execute一次,就在數據打開一個新的游標。使用多次後再close會有未關閉的游標留下,所以一定要記得在每次執行並取完記錄集後,立即close。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved