1. 程式人生 > >CLOB/BLOB與String互轉。

CLOB/BLOB與String互轉。

1.利用dbms_lob.substr()方法可將對應欄位轉換成字串如下:

  1. select dbms_lob.substr(content) from NEWS    

該方法有個缺點,當content欄位長度超過某個值時,會報錯。

2.獲取Clob物件,在Java中通過對流處理獲取欄位內容,該方式沒有長度限制

  1. select content from NEWS  

  1. // 將字CLOB轉成STRING型別   
  2.     public String ClobToString(Clob clob) throws SQLException, IOException {   
  3.         String reString
     = "";   
  4.         java.io.Reader is = clob.getCharacterStream();// 得到流   
  5.         BufferedReader br = new BufferedReader(is);   
  6.         String s = br.readLine();   
  7.         StringBuffer sb = new StringBuffer();   
  8.         while (s != null) {// 執行迴圈將字串全部取出付值給StringBuffer由StringBuffer轉成STRING   
  9.             sb.append(s);   
  10.             s = br.readLine();   
  11.         }   
  12.         reString = sb.toString();   
  13.         return reString;   
  14.     }   

接下來的重點是將從資料庫獲取到的該欄位的物件轉換成Clob物件,如下:
  1. String content = ClobToString((Clob)obj[1]);  

其中我的obj是從資料庫獲取的欄位陣列,obj[1]對應該Clob物件

String s1="走上程式設計不歸路……";Clob c =newSerialClob(s1.toCharArray());//String 轉 clob
Blob b =newSerialBlob(s1.getBytes("GBK"));//String 轉 blob// 也可以這樣不傳字符集名稱,預設使用系統的//  Blob b = new SerialBlob(s1.getBytes());String clobString = c.getSubString(1, (int) c.length());//clob 轉 StringString blobString =newString(b.getBytes(1, (int) b.length()),"GBK");//blob 轉 String//  前面若沒傳入字符集名稱,則這裡也不需要傳入,以免出錯//  String blobString = new String(b.getBytes(1, (int) b.length()));System.out.println(clobString);System.out.println(blobString);



// 將字CLOB轉成STRING型別  
  1. String content = ClobToString((Clob)obj[1]); 

  1.     public String ClobToString(Clob clob) throws SQLException, IOException {   
  2.         String reString = "";   
  3.         java.io.Reader is = clob.getCharacterStream();// 得到流   
  4.         BufferedReader br = new BufferedReader(is);   
  5.         String s = br.readLine();   
  6.         StringBuffer sb = new StringBuffer();   
  7.         while (s != null) {// 執行迴圈將字串全部取出付值給StringBuffer由    StringBuffer轉成STRING   
  8.             sb.append(s);   
  9.             s = br.readLine();   
  10.         }   
  11.         reString = sb.toString();   
  12.         return reString;   
  13.     }  





http://www.oschina.net/code/snippet_135225_5485