使用 SqlRowSet 获取 Clob Java Spring
Get Clob Java Spring with SqlRowSet
我正在尝试从 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 作为数据类型)。
有人知道如何获取此信息吗?
我找到了结合两个 Whosebug 问题的答案:
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)
{
}
这是我从休眠库中使用的一个衬里。
ClobType.INSTANCE.toString((Clob) tuple[2])
// org.hibernate.type.ClobType
我正在尝试从 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 作为数据类型)。
有人知道如何获取此信息吗?
我找到了结合两个 Whosebug 问题的答案:
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)
{
}
这是我从休眠库中使用的一个衬里。
ClobType.INSTANCE.toString((Clob) tuple[2])
// org.hibernate.type.ClobType