@Override public void setClobAsCharacterStream(PreparedStatement ps, int paramIndex, Reader characterStream, int contentLength) throws SQLException { ps.setClob(paramIndex, characterStream, contentLength); }
@Override public void setClobAsString(PreparedStatement ps, int paramIndex, @Nullable String content) throws SQLException { if (streamAsLob) { if (content != null) { ps.setClob(paramIndex, new StringReader(content), content.length()); } else { ps.setClob(paramIndex, (Clob) null); } } else if (wrapAsLob) { if (content != null) { ps.setClob(paramIndex, new PassThroughClob(content)); } else { ps.setClob(paramIndex, (Clob) null); } } else { ps.setString(paramIndex, content); } if (logger.isDebugEnabled()) { logger.debug(content != null ? "Set string for CLOB with length " + content.length() : "Set CLOB to null"); } }
if (characterStream != null) { if (contentLength >= 0) { ps.setClob(paramIndex, characterStream, contentLength); ps.setClob(paramIndex, characterStream); ps.setClob(paramIndex, (Clob) null); ps.setClob(paramIndex, new PassThroughClob(characterStream, contentLength)); ps.setClob(paramIndex, (Clob) null);
@Override public void setClobAsString(PreparedStatement ps, int paramIndex, @Nullable String content) throws SQLException { if (content != null) { Clob clob = ps.getConnection().createClob(); clob.setString(1, content); this.temporaryClobs.add(clob); ps.setClob(paramIndex, clob); } else { ps.setClob(paramIndex, (Clob) null); } if (logger.isDebugEnabled()) { logger.debug(content != null ? "Copied string into temporary CLOB with length " + content.length() : "Set CLOB to null"); } }
@Override public final void setClob(final int parameterIndex, final Clob x) throws SQLException { getTargetPreparedStatement().setClob(parameterIndex, x); }
@Override public final void setClob(final int parameterIndex, final Reader x, final long length) throws SQLException { getTargetPreparedStatement().setClob(parameterIndex, x, length); }
@Override public final void setClob(final int parameterIndex, final Reader x) throws SQLException { getTargetPreparedStatement().setClob(parameterIndex, x); }
@Override public void setClob(int parameterIndex, Reader reader, long length) throws SQLException { setParamByIndex(parameterIndex, reader); targetStatement.setClob(parameterIndex, reader, length); }
@Override public void setClob(int parameterIndex, Reader reader) throws SQLException { setParamByIndex(parameterIndex, reader); targetStatement.setClob(parameterIndex, reader); }
@Override public void setClob(int parameterIndex, Clob x) throws SQLException { setParamByIndex(parameterIndex, x); targetStatement.setClob(parameterIndex, x); }
@Override public void setClobAsString(PreparedStatement ps, int paramIndex, String content) throws SQLException { Clob clob = ps.getConnection().createClob(); clob.setString(1, content); ps.setClob(paramIndex, clob); }
@Override public void setClobAsAsciiStream( PreparedStatement ps, int paramIndex, @Nullable InputStream asciiStream, int contentLength) throws SQLException { if (asciiStream != null) { Clob clob = ps.getConnection().createClob(); try { FileCopyUtils.copy(asciiStream, clob.setAsciiStream(1)); } catch (IOException ex) { throw new DataAccessResourceFailureException("Could not copy into LOB stream", ex); } this.temporaryClobs.add(clob); ps.setClob(paramIndex, clob); } else { ps.setClob(paramIndex, (Clob) null); } if (logger.isDebugEnabled()) { logger.debug(asciiStream != null ? "Copied ASCII stream into temporary CLOB with length " + contentLength : "Set CLOB to null"); } }
@Override public void setClobAsCharacterStream( PreparedStatement ps, int paramIndex, @Nullable Reader characterStream, int contentLength) throws SQLException { if (characterStream != null) { Clob clob = ps.getConnection().createClob(); try { FileCopyUtils.copy(characterStream, clob.setCharacterStream(1)); } catch (IOException ex) { throw new DataAccessResourceFailureException("Could not copy into LOB stream", ex); } this.temporaryClobs.add(clob); ps.setClob(paramIndex, clob); } else { ps.setClob(paramIndex, (Clob) null); } if (logger.isDebugEnabled()) { logger.debug(characterStream != null ? "Copied character stream into temporary CLOB with length " + contentLength : "Set CLOB to null"); } }
@Override public void setClob(int parameterIndex, Clob x) throws SQLException { checkOpen(); try { stmt.setClob(parameterIndex, x); } catch (Throwable t) { throw checkException(t); } }
@Override public void setClob(int parameterIndex, Reader reader, long length) throws SQLException { checkOpen(); try { stmt.setClob(parameterIndex, reader, length); } catch (Throwable t) { throw checkException(t); } }
@Override public void setClob(int parameterIndex, Reader reader) throws SQLException { checkOpen(); try { stmt.setClob(parameterIndex, reader); } catch (Throwable t) { throw checkException(t); } }
@Override public void setClobAsAsciiStream(PreparedStatement ps, int paramIndex, InputStream asciiStream, int contentLength) throws SQLException { if (asciiStream != null) { Clob clob = ps.getConnection().createClob(); OutputStream out = clob.setAsciiStream(1); final int BUFFER_SIZE = 4096; try { byte[] buffer = new byte[BUFFER_SIZE]; int bytesRead = -1; while ((bytesRead = asciiStream.read(buffer)) != -1) { out.write(buffer, 0, bytesRead); } out.flush(); } catch (Exception e) { throw new SQLException("setClob error", e); } finally { JdbcUtils.close(asciiStream); JdbcUtils.close(out); } ps.setClob(paramIndex, clob); } else { ps.setClob(paramIndex, (Clob) null); } }
@Override public void preparedStatement_setClob(PreparedStatementProxy statement, int parameterIndex, Reader reader) throws SQLException { if (this.pos < filterSize) { nextFilter().preparedStatement_setClob(this, statement, parameterIndex, reader); return; } statement.getRawObject().setClob(parameterIndex, reader); }
@Override public void preparedStatement_setClob(PreparedStatementProxy statement, int parameterIndex, Reader reader, long length) throws SQLException { if (this.pos < filterSize) { nextFilter().preparedStatement_setClob(this, statement, parameterIndex, reader, length); return; } statement.getRawObject().setClob(parameterIndex, reader, length); }
@Override public void preparedStatement_setClob(PreparedStatementProxy statement, int parameterIndex, Clob x) throws SQLException { if (this.pos < filterSize) { nextFilter().preparedStatement_setClob(this, statement, parameterIndex, x); return; } if (x instanceof ClobProxy) { x = ((ClobProxy) x).getRawClob(); } statement.getRawObject() .setClob(parameterIndex, x); }