CLOB/BLOB與String互轉。
阿新 • • 發佈:2019-02-06
1.利用dbms_lob.substr()方法可將對應欄位轉換成字串如下:
- select dbms_lob.substr(content) from NEWS
該方法有個缺點,當content欄位長度超過某個值時,會報錯。
2.獲取Clob物件,在Java中通過對流處理獲取欄位內容,該方式沒有長度限制
- select content from NEWS
- // 將字CLOB轉成STRING型別
- public String ClobToString(Clob clob) throws SQLException, IOException {
- String reString
- java.io.Reader is = clob.getCharacterStream();// 得到流
- BufferedReader br = new BufferedReader(is);
- String s = br.readLine();
- StringBuffer sb = new StringBuffer();
- while (s != null) {// 執行迴圈將字串全部取出付值給StringBuffer由StringBuffer轉成STRING
- sb.append(s);
- s = br.readLine();
- }
- reString = sb.toString();
- return reString;
- }
接下來的重點是將從資料庫獲取到的該欄位的物件轉換成Clob物件,如下:
- String content = ClobToString((Clob)obj[1]);
其中我的obj是從資料庫獲取的欄位陣列,obj[1]對應該Clob物件
String s1=
"走上程式設計不歸路……"
;
Clob c =
new
SerialClob(s1.toCharArray());
//String 轉 clob
Blob b =
new
SerialBlob(s1.getBytes(
"GBK"
));
//String 轉 blob
// 也可以這樣不傳字符集名稱,預設使用系統的
// Blob b = new SerialBlob(s1.getBytes());
String clobString = c.getSubString(
1
, (
int
) c.length());
//clob 轉 String
String blobString =
new
String(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型別 - String content = ClobToString((Clob)obj[1]);
- public String ClobToString(Clob clob) throws SQLException, IOException {
- String reString = "";
- java.io.Reader is = clob.getCharacterStream();// 得到流
- BufferedReader br = new BufferedReader(is);
- String s = br.readLine();
- StringBuffer sb = new StringBuffer();
- while (s != null) {// 執行迴圈將字串全部取出付值給StringBuffer由 StringBuffer轉成STRING
- sb.append(s);
- s = br.readLine();
- }
- reString = sb.toString();
- return reString;
- }
http://www.oschina.net/code/snippet_135225_5485