从字符串转换为Clob,将Clob转换为字符串

时间:2012-07-09 08:05:41

标签: java sql string clob

我正在尝试将StrignBuffer的XML响应保存到方法中。 我需要将此字符串数据作为CLOB保存到Sql并检索它。

响应最高可达3-4Kb,应该再次检索到StringBuffer

任何人都可以给我教程或示例代码,其中不包含特定于db的方法/ jar。

如果CLOB不合适或任何其他更好的替代方案,我可以更改db列类型。

请建议。

2 个答案:

答案 0 :(得分:2)

您可以通过调用CLOB来创建connection.createClob(),然后您可以使用setStringsetCharacterStreamsetAsciiStream等方法填充它。

创建PreparedStatement并调用其setClob()将CLOB存储在数据库中。

检索数据是一样的,从ResultSet读取数据并在其上调用getCharacterStreamgetAsciiStreamgetSubStream

答案 1 :(得分:1)

NamedParameterJdbcTemplte

MapSqlParameterSource paramSource = new MapSqlParameterSource();
paramSource.addValue("clob", "a long long text", Types.CLOB);
namedTemplate.update(INSERT_STMT, paramSource);

JdbcTemplate

<bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">
    <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/>
</bean>

private @Autowire LobHandler lobHandler;
jdbcTemplate.update("insert into customer(id,name,comments) "
    + "values (?, ?, ?)", new PreparedStatementSetter() {
  public void setValues(PreparedStatement ps) throws SQLException {
    ps.setLong(1, 2L);
    ps.setString(2, "Jon");
    lobHandler.getLobCreator().setClobAsString(ps, 3, "Clob data");
  }
});

ResultSet提取字符串:

 inc.setDetail(lobHandler.getClobAsString(rs, "DETAIL"));

查看官方文档:http://docs.spring.io/spring/docs/3.0.x/reference/jdbc.html#jdbc-lob