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) {
-
- e.printStackTrace();
- }
- StringBuffer sb = new StringBuffer();
- while (s != null) {
-
- sb.append(s);
- try {
- s = br.readLine();
- } catch (IOException e) {
-
- 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) {
-
- e.printStackTrace();
- }
- return "";
- }