2

StrignBufferとして来るXML応答をメソッドに保存しようとしています。この文字列データをCLOBとしてSQLに保存し、同じものを取得する必要があります。

応答は最大3〜4Kbで、StringBufferに再度取得する必要があります

db固有のメソッド/jarを含まないチュートリアルまたはサンプルコードを教えてもらえますか?

CLOBが適切でない場合、または他のより良い代替手段である場合は、db列タイプを変更できます。

提案してください。

4

2 に答える 2

2

CLOBを呼び出すことでを作成し、次に、、connection.createClob()などのメソッドを設定できます。setStringsetCharacterStreamsetAsciiStream

を作成しPreparedStatementて呼び出し、setClob()CLOBをデータベースに格納します。

データの取得はまったく同じです。データをaから読み取り、またはResultSetを呼び出します。getCharacterStreamgetAsciiStreamgetSubStream

于 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 に答える