Oracle數據庫和JSP連接要注意的一些問題[1]

發表于:2008-06-26來源:作者:點擊數: 標簽:數據庫oracleOracleORACLEjsp
Oracle 數據庫 和JSP連接要注意的一些問題[1] 作者:korn 來源:賽迪網 用ORACLE9i、 oracle 8、有很長的一段時間,我把用于JSP中需要注意的問題在這里寫出來,僅供大家參考了。 一、如何去處理Clob、BLOB的大類型 CLOB可用于存放大文本數據,最多可存儲4GB

Oracle數據庫和JSP連接要注意的一些問題[1]

作者:korn 來源:賽迪網  

         用ORACLE9i、oracle8、有很長的一段時間,我把用于JSP中需要注意的問題在這里寫出來,僅供大家參考了。

  一、如何去處理Clob、BLOB的大類型

  CLOB可用于存放大文本數據,最多可存儲4GB數據,在應用開發中比較常見。java提供的sql.Clob類與之對應。它提供兩個方法來讀取Clob的數據:

  getCharacterStream() 方法返回按unicode編碼的輸入流(java.io.Reader對象)
  getAsciiStream() 方法返回按ASCII編碼的輸入流(java.io.InputStream對象)

  所以如果你的數據庫中有可能存儲中文字符的話,就要使用前一個方法。

  現在舉一個實際的例子,讓我一步步學習如何使用CLOB。

  首先,創建一個含CLOB字段的表:

  create table test (id INTEGER, content clob);

  接下來, 我們通過JSP往這張表里插入一條記錄,然后再獲取顯示它。

  插入操作:

  以上需要注意的幾點是:

  1)clob類型的數據不能直接insert,要先通過empty_clob()方法給它分配一個locator(同理,blob的用empty_blob()函數分配locator)。然后把它select出來(此時它當然沒有數據,但結果集不是空的),得到一個Clob的對象,修改該對象的內容讓它滿足我們的需要,再通過update方法更新該行記錄。

  2) 通過select修改含lob類型的記錄時一定要鎖定該行(通過for update關鍵字實現),否則oracle會報錯。

  3) 剛插入的記錄就select for update, 會出現"違反讀取順序"錯誤,解決辦法是將自動提交功能置為false,即不允許自動提交,然后commit它,再select,就可以了。 這就是上面那段代碼里//*兩行的作用。

  下面,我們將剛插入的記錄從數據庫中讀取出來并顯示之:

  二、編碼問題

  因為JAVA的開發者是老外,所以他們對中文的支持并不是太好,這一點讓不少的我們感到很是頭痛,也就是我們通過說的漢字編碼問題吧,關于一些漢字編碼的規范我就不多說了,我主要是談談在和oracle數據庫連接時的一些小問題,不過這些小問題很是讓人頭痛的。

  1、在插入到數據庫中的中文問題要轉換成編碼

  2、從數據庫中讀到中文又要轉換成編碼

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97