使用SqlRowSet获取Clob Java Spring

时间:2015-10-19 20:11:48

标签: java spring clob

我正在尝试从Java Spring项目中的Oracle数据库中检索Clob字段,但我遇到了问题。

首先,我使用名为SqlRowSet的Spring对象进行了查询:

String query = sqlQueries.getProperty("THE_QUERY");
        SqlRowSet rs = select.queryForRowSet(query, new HashMap<String, Object>());

之后,我遍历对象并开始从字段中获取信息:

        while (rs.next()) {
            String name = rs.getString("name");
        }

当我得到查询结果时,我会得到这样的结果:

name=javax.sql.rowset.serial.SerialClob@435dc43

我尝试了几件事,但是我无法从字段中获取信息,最后是字符串(不确定为什么数据库创建者使用clob作为数据类型)。

有人知道如何获取此信息吗?

2 个答案:

答案 0 :(得分:5)

我找到了两个stackoverflow问题的答案:

Spring SqlRowSet getting Clob as String using JdbcTemplate

Most efficient solution for reading CLOB to String, and String to CLOB in Java?

首先,您需要创建一个Clob对象,然后处理一个从Clob对象中提取字符串的方法。我的代码如下所示,它可以工作:

            Clob clobObject = (Clob)rs.getObject("name");                                       
            final StringBuilder sb = new StringBuilder();
            try
                {
                    final Reader reader = clobObject.getCharacterStream();
                    final BufferedReader br = new BufferedReader(reader);
                    int b;
                    while(-1 != (b = br.read()))
                    {
                        sb.append((char)b);
                    }
                    br.close();
                    String theName = sb.toString();
            catch (Exception ex)
            {

            }

答案 1 :(得分:0)

这是我从休眠库中使用的一个内衬。

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