Oracle中的clob类型用来存储数据比较大的内容,将Oracle数据类型可以直接转换成varchar2,但是,varchar2的直接有限,只能使用substr,如:to_char(dbms_lob.substr(ter.content,2000));这样只可以显示clob字段的前2000个字符,对于大于2000个字符的内容显示不出来。可以换一种思路,在Java中把clob转换成string,一下提供两种方法:
一、读取数据流方法
读取数据流的方法不可以使内容的样式被转化,此时应该参考第二种
public String ClobtoString(Clob clob){
String reString = "";
Reader is = null;
try {
is = clob.getCharacterStream();
} catch (SQLException e) {
e.printStackTrace();
}
// 得到流
BufferedReader br = new BufferedReader(is);
String s = null;
try {
s = br.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
StringBuffer sb = new StringBuffer();
while (s != null) {
// 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING
sb.append(s);
try {
s = br.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
reString = sb.toString();
return reString;
}
二、clob的getSubString方法
public String oracleClob2Str(Clob clob) {
try {
return (clob != null ? clob.getSubString(1, (int) clob.length()) : null);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}