2

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

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

任何人都可以给我不包括数据库特定方法/罐子的教程或示例代码。

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

请建议。

4

2 回答 2

2

CLOB您可以通过调用创建一个connection.createClob(),然后您可以使用诸如setStringsetCharacterStream或之类的方法来填充它setAsciiStream

创建一个PreparedStatement并调用它setClob()以将您的 CLOB 存储在数据库中。

检索数据也是一样的,从 a 中读取,ResultSet然后调用getCharacterStreamgetAsciiStream或者getSubStream就可以了。

于 2012-07-09T08:16:57.917 回答
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

于 2014-07-02T14:41:12.940 回答