将Clob转换为String

时间:2015-12-03 14:08:59

标签: java string clob

如何从Clob中获取String。我确实谷歌了,但是

myClob.getSubString(0, (int) info.length()));

是我唯一得到的。控制台说:

  

java.sql.SQLException:调用时的参数无效   oracle.sql.CLOB.getSubString(CLOB.java:278)at   ru.tenet.es09.dao.CompanyDAOImpl.get(CompanyDAOImpl.java:72)at at   ru.tenet.es09.dao.CompanyDAOImpl.getList(CompanyDAOImpl.java:132)at at   ru.tenet.es09.dao.AddressDAOImpl.getList(AddressDAOImpl.java:59)at at   ru.tenet.es09.Test.main(Test.java:11)​​

它指向getSubString()方法。有什么问题?

5 个答案:

答案 0 :(得分:3)

假设您正在使用标准JDBC,一旦拥有ResultSet对象,您应该能够调用ResultSet#getString("clob_field_name")来检索CLOB数据。

答案 1 :(得分:1)

我知道我参加这个聚会迟到了!这是我从休眠库中使用的一个内衬。如果hibernate已经集成到项目中,则可以使用批注将clob转换为java String。就我而言,我有一个自定义结果转换器,该转换器在进行昂贵的连接后从多个表中读取数据。在resultSetTransformer中,以下行完成了该工作。

ClobType.INSTANCE.toString((Clob) tuple[2])
// org.hibernate.type.ClobType

答案 2 :(得分:0)

这是我的方式(对不起我的英语)

        res = ps.executeQuery();
        try {
            while (res.next()) {
                System.out.println(res.getClob(1));//confirm data
                sRet = res.getString(1);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            ps.close();
        }

答案 3 :(得分:0)

将字符串转换为CLOB

SOobject.setLongStringField( new SerialClob(entityString.toCharArray()));//Converting String to CLOB

将Clob转换为String

public String getLongStringField() {
         Reader reader = null;
            BufferedReader bufferedReader = null;
            try {
                reader = longStringField.getCharacterStream();
                bufferedReader = new BufferedReader(reader);
                return IOUtils.toString(bufferedReader);

            } catch (Exception e) {

                throw new RuntimeException("Error while reading String from CLOB", e);
            } finally {
                IOUtils.closeQuietly(reader);
                IOUtils.closeQuietly(bufferedReader);
            }
    }

答案 4 :(得分:0)

使用此:

> public String clob2String(Clob data) {
>       StringBuilder sb = new StringBuilder();
>       try {
>           Reader reader = data.getCharacterStream();
>           BufferedReader br = new BufferedReader(reader);
> 
>           String line;
>           while(null != (line = br.readLine())) {
>               sb.append(line);
>           }
>           br.close();
>       } catch (SQLException e) {
>           // handle this exception
>       } catch (IOException e) {
>           // handle this exception
>       }
>       return sb.toString();   }