# Class DelegatingPreparedStatement

java.lang.Object
org.apache.tomcat.dbcp.dbcp2.AbandonedTrace
org.apache.tomcat.dbcp.dbcp2.DelegatingStatement
org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement

All Implemented Interfaces:
  `AutoCloseable, PreparedStatement, Statement, Wrapper, TrackedUse`

Direct Known Subclasses:
  `DelegatingCallableStatement, PoolablePreparedStatement`

public class DelegatingPreparedStatement extends DelegatingStatement implements PreparedStatement
A base delegating implementation of `PreparedStatement`.

All of the methods from the `PreparedStatement` interface simply check to see that the `PreparedStatement` is active, and call the corresponding method on the "delegate" provided in my constructor.

Extends AbandonedTrace to implement Statement tracking and logging of code which created the Statement. Tracking the Statement ensures that the Connection which created it can close any open Statement's on Connection close.

Since:
  2.0

## Field Summary

### Fields inherited from interface Statement

`CLOSE_ALL_RESULTS, CLOSE_CURRENT_RESULT, EXECUTE_FAILED, KEEP_CURRENT_RESULT, NO_GENERATED_KEYS, RETURN_GENERATED_KEYS, SUCCESS_NO_INFO`

## Constructor Summary

Constructors
Constructor
Description
`DelegatingPreparedStatement(DelegatingConnection<?> connection, PreparedStatement statement)`
Create a wrapper for the Statement which traces this Statement to the Connection which created it and the code which created it.

## Method Summary

Modifier and Type
Method
Description
`void`
`addBatch()`
`void`
`clearParameters()`
`boolean`
`execute()`
`long`
`executeLargeUpdate()`
`ResultSet`
`executeQuery()`
`int`
`executeUpdate()`
`ResultSetMetaData`
`getMetaData()`
`ParameterMetaData`
`getParameterMetaData()`
`protected void`
`prepareToReturn()`
Prepares internal states before calling `DelegatingStatement.passivate()`.
`void`
`setArray(int i, Array x)`
`void`
`setAsciiStream(int parameterIndex, InputStream inputStream)`
`void`
`setAsciiStream(int parameterIndex, InputStream x, int length)`
`void`
`setAsciiStream(int parameterIndex, InputStream inputStream, long length)`
`void`
`setBigDecimal(int parameterIndex, BigDecimal x)`
`void`
`setBinaryStream(int parameterIndex, InputStream inputStream)`
`void`
`setBinaryStream(int parameterIndex, InputStream x, int length)`
`void`
`setBinaryStream(int parameterIndex, InputStream inputStream, long length)`
`void`
`setBlob(int parameterIndex, InputStream inputStream)`
`void`
`setBlob(int parameterIndex, InputStream inputStream, long length)`
`void`
`setBlob(int i, Blob x)`
`void`
`setBoolean(int parameterIndex, boolean x)`
`void`
`setByte(int parameterIndex, byte x)`
`void`
`setBytes(int parameterIndex, byte[] x)`
`void`
`setCharacterStream(int parameterIndex, Reader reader)`
`void`
`setCharacterStream(int parameterIndex, Reader reader, int length)`
`void`
`setCharacterStream(int parameterIndex, Reader reader, long length)`
`void`
`setClob(int parameterIndex, Reader reader)`
`void`
`setClob(int parameterIndex, Reader reader, long length)`
`void`
`setClob(int i, Clob x)`
`void`
`setDate(int parameterIndex, Date x)`
`void`
`setDate(int parameterIndex, Date x, Calendar cal)`
`void`
`setDouble(int parameterIndex, double x)`
`void`
`setFloat(int parameterIndex, float x)`
`void`
`setInt(int parameterIndex, int x)`
`void`
`setLong(int parameterIndex, long x)`
`void`
`setNCharacterStream(int parameterIndex, Reader reader)`
`void`
`setNCharacterStream(int parameterIndex, Reader value, long length)`
`void`
`setNClob(int parameterIndex, Reader reader)`
`void`
`setNClob(int parameterIndex, Reader reader, long length)`
`void`
`setNClob(int parameterIndex, NClob value)`
`void`
`setNString(int parameterIndex, String value)`
`void`
`setNull(int parameterIndex, int sqlType)`
`void`
`setNull(int paramIndex, int sqlType, String typeName)`
`void`
`setObject(int parameterIndex, Object x)`
`void`
`setObject(int parameterIndex, Object x, int targetSqlType)`
`void`
`setObject(int parameterIndex, Object x, int targetSqlType, int scale)`
`void`
`setObject(int parameterIndex, Object x, SQLType targetSqlType)`
`void`
`setObject(int parameterIndex, Object x, SQLType targetSqlType, int scaleOrLength)`
`void`
`setRef(int i, Ref x)`
`void`
`setRowId(int parameterIndex, RowId value)`
`void`
`setShort(int parameterIndex, short x)`
`void`
`setSQLXML(int parameterIndex, SQLXML value)`
`void`
`setString(int parameterIndex, String x)`
`void`
`setTime(int parameterIndex, Time x)`
`void`
`setTime(int parameterIndex, Time x, Calendar cal)`
`void`
`setTimestamp(int parameterIndex, Timestamp x)`
`void`
`setTimestamp(int parameterIndex, Timestamp x, Calendar cal)`
`void`
`setUnicodeStream(int parameterIndex, InputStream x, int length)`
Deprecated.
Use setAsciiStream(), setCharacterStream() or setNCharacterStream()
`void`
`setURL(int parameterIndex, URL x)`
`String`
`toString()`
Returns a String representation of this object.

### Methods inherited from class DelegatingStatement

`activate, addBatch, cancel, checkOpen, clearBatch, clearWarnings, close, closeOnCompletion, execute, execute, execute, execute, executeBatch, executeLargeBatch, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeQuery, executeUpdate, executeUpdate, executeUpdate, executeUpdate, finalize, getConnection, getConnectionInternal, getDelegate, getFetchDirection, getFetchSize, getGeneratedKeys, getInnermostDelegate, getLargeMaxRows, getLargeUpdateCount, getMaxFieldSize, getMaxRows, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getUpdateCount, getWarnings, handleException, isClosed, isClosedInternal, isCloseOnCompletion, isPoolable, isWrapperFor, passivate, setClosedInternal, setCursorName, setDelegate, setEscapeProcessing, setFetchDirection, setFetchSize, setLargeMaxRows, setMaxFieldSize, setMaxRows, setPoolable, setQueryTimeout, unwrap`

### Methods inherited from class AbandonedTrace

`addTrace, clearTrace, close, getLastUsed, getLastUsedInstant, getTrace, removeThisTrace, removeTrace, setLastUsed, setLastUsed, setLastUsed`

### Methods inherited from class Object

`clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface Statement

`addBatch, cancel, clearBatch, clearWarnings, close, closeOnCompletion, enquoteIdentifier, enquoteLiteral, enquoteNCharLiteral, execute, execute, execute, execute, executeBatch, executeLargeBatch, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeQuery, executeUpdate, executeUpdate, executeUpdate, executeUpdate, getConnection, getFetchDirection, getFetchSize, getGeneratedKeys, getLargeMaxRows, getLargeUpdateCount, getMaxFieldSize, getMaxRows, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getUpdateCount, getWarnings, isClosed, isCloseOnCompletion, isPoolable, isSimpleIdentifier, setCursorName, setEscapeProcessing, setFetchDirection, setFetchSize, setLargeMaxRows, setMaxFieldSize, setMaxRows, setPoolable, setQueryTimeout`

### Methods inherited from interface Wrapper

`isWrapperFor, unwrap`

## Constructor Details

### DelegatingPreparedStatement

public DelegatingPreparedStatement(DelegatingConnection<?> connection, PreparedStatement statement)
Create a wrapper for the Statement which traces this Statement to the Connection which created it and the code which created it.

Parameters:
  `connection` - the `DelegatingConnection` that created this statement.
  `statement` - the `PreparedStatement` to delegate all calls to.

## Method Details

### addBatch

public void addBatch() throws SQLException

Specified by:
  `addBatch` in interface `PreparedStatement`
Throws:
  `SQLException`

### clearParameters

public void clearParameters() throws SQLException

Specified by:
  `clearParameters` in interface `PreparedStatement`
Throws:
  `SQLException`

### execute

public boolean execute() throws SQLException

Specified by:
  `execute` in interface `PreparedStatement`
Throws:
  `SQLException`

### executeLargeUpdate

public long executeLargeUpdate() throws SQLException

Specified by:
  `executeLargeUpdate` in interface `PreparedStatement`
Throws:
  `SQLException`
Since:
  2.5.0

### executeQuery

public ResultSet executeQuery() throws SQLException

Specified by:
  `executeQuery` in interface `PreparedStatement`
Throws:
  `SQLException`

### executeUpdate

public int executeUpdate() throws SQLException

Specified by:
  `executeUpdate` in interface `PreparedStatement`
Throws:
  `SQLException`

### getMetaData

public ResultSetMetaData getMetaData() throws SQLException

Specified by:
  `getMetaData` in interface `PreparedStatement`
Throws:
  `SQLException`

### getParameterMetaData

public ParameterMetaData getParameterMetaData() throws SQLException

Specified by:
  `getParameterMetaData` in interface `PreparedStatement`
Throws:
  `SQLException`

### prepareToReturn

protected void prepareToReturn() throws SQLException
Prepares internal states before calling `DelegatingStatement.passivate()`.

Throws:
  `SQLException` - Thrown closing a traced resource or calling `DelegatingStatement.passivate()`.

### setArray

public void setArray(int i, Array x) throws SQLException

Specified by:
  `setArray` in interface `PreparedStatement`
Throws:
  `SQLException`

### setAsciiStream

public void setAsciiStream(int parameterIndex, InputStream inputStream) throws SQLException

Specified by:
  `setAsciiStream` in interface `PreparedStatement`
Throws:
  `SQLException`

### setAsciiStream

public void setAsciiStream(int parameterIndex, InputStream x, int length) throws SQLException

Specified by:
  `setAsciiStream` in interface `PreparedStatement`
Throws:
  `SQLException`

### setAsciiStream

public void setAsciiStream(int parameterIndex, InputStream inputStream, long length) throws SQLException

Specified by:
  `setAsciiStream` in interface `PreparedStatement`
Throws:
  `SQLException`

### setBigDecimal

public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException

Specified by:
  `setBigDecimal` in interface `PreparedStatement`
Throws:
  `SQLException`

### setBinaryStream

public void setBinaryStream(int parameterIndex, InputStream inputStream) throws SQLException

Specified by:
  `setBinaryStream` in interface `PreparedStatement`
Throws:
  `SQLException`

### setBinaryStream

public void setBinaryStream(int parameterIndex, InputStream x, int length) throws SQLException

Specified by:
  `setBinaryStream` in interface `PreparedStatement`
Throws:
  `SQLException`

### setBinaryStream

public void setBinaryStream(int parameterIndex, InputStream inputStream, long length) throws SQLException

Specified by:
  `setBinaryStream` in interface `PreparedStatement`
Throws:
  `SQLException`

### setBlob

public void setBlob(int i, Blob x) throws SQLException

Specified by:
  `setBlob` in interface `PreparedStatement`
Throws:
  `SQLException`

### setBlob

public void setBlob(int parameterIndex, InputStream inputStream) throws SQLException

Specified by:
  `setBlob` in interface `PreparedStatement`
Throws:
  `SQLException`

### setBlob

public void setBlob(int parameterIndex, InputStream inputStream, long length) throws SQLException

Specified by:
  `setBlob` in interface `PreparedStatement`
Throws:
  `SQLException`

### setBoolean

public void setBoolean(int parameterIndex, boolean x) throws SQLException

Specified by:
  `setBoolean` in interface `PreparedStatement`
Throws:
  `SQLException`

### setByte

public void setByte(int parameterIndex, byte x) throws SQLException

Specified by:
  `setByte` in interface `PreparedStatement`
Throws:
  `SQLException`

### setBytes

public void setBytes(int parameterIndex, byte[] x) throws SQLException

Specified by:
  `setBytes` in interface `PreparedStatement`
Throws:
  `SQLException`

### setCharacterStream

public void setCharacterStream(int parameterIndex, Reader reader) throws SQLException

Specified by:
  `setCharacterStream` in interface `PreparedStatement`
Throws:
  `SQLException`

### setCharacterStream

public void setCharacterStream(int parameterIndex, Reader reader, int length) throws SQLException

Specified by:
  `setCharacterStream` in interface `PreparedStatement`
Throws:
  `SQLException`

### setCharacterStream

public void setCharacterStream(int parameterIndex, Reader reader, long length) throws SQLException

Specified by:
  `setCharacterStream` in interface `PreparedStatement`
Throws:
  `SQLException`

### setClob

public void setClob(int i, Clob x) throws SQLException

Specified by:
  `setClob` in interface `PreparedStatement`
Throws:
  `SQLException`

### setClob

public void setClob(int parameterIndex, Reader reader) throws SQLException

Specified by:
  `setClob` in interface `PreparedStatement`
Throws:
  `SQLException`

### setClob

public void setClob(int parameterIndex, Reader reader, long length) throws SQLException

Specified by:
  `setClob` in interface `PreparedStatement`
Throws:
  `SQLException`

### setDate

public void setDate(int parameterIndex, Date x) throws SQLException

Specified by:
  `setDate` in interface `PreparedStatement`
Throws:
  `SQLException`

### setDate

public void setDate(int parameterIndex, Date x, Calendar cal) throws SQLException

Specified by:
  `setDate` in interface `PreparedStatement`
Throws:
  `SQLException`

### setDouble

public void setDouble(int parameterIndex, double x) throws SQLException

Specified by:
  `setDouble` in interface `PreparedStatement`
Throws:
  `SQLException`

### setFloat

public void setFloat(int parameterIndex, float x) throws SQLException

Specified by:
  `setFloat` in interface `PreparedStatement`
Throws:
  `SQLException`

### setInt

public void setInt(int parameterIndex, int x) throws SQLException

Specified by:
  `setInt` in interface `PreparedStatement`
Throws:
  `SQLException`

### setLong

public void setLong(int parameterIndex, long x) throws SQLException

Specified by:
  `setLong` in interface `PreparedStatement`
Throws:
  `SQLException`

### setNCharacterStream

public void setNCharacterStream(int parameterIndex, Reader reader) throws SQLException

Specified by:
  `setNCharacterStream` in interface `PreparedStatement`
Throws:
  `SQLException`

### setNCharacterStream

public void setNCharacterStream(int parameterIndex, Reader value, long length) throws SQLException

Specified by:
  `setNCharacterStream` in interface `PreparedStatement`
Throws:
  `SQLException`

### setNClob

public void setNClob(int parameterIndex, NClob value) throws SQLException

Specified by:
  `setNClob` in interface `PreparedStatement`
Throws:
  `SQLException`

### setNClob

public void setNClob(int parameterIndex, Reader reader) throws SQLException

Specified by:
  `setNClob` in interface `PreparedStatement`
Throws:
  `SQLException`

### setNClob

public void setNClob(int parameterIndex, Reader reader, long length) throws SQLException

Specified by:
  `setNClob` in interface `PreparedStatement`
Throws:
  `SQLException`

### setNString

public void setNString(int parameterIndex, String value) throws SQLException

Specified by:
  `setNString` in interface `PreparedStatement`
Throws:
  `SQLException`

### setNull

public void setNull(int parameterIndex, int sqlType) throws SQLException

Specified by:
  `setNull` in interface `PreparedStatement`
Throws:
  `SQLException`

### setNull

public void setNull(int paramIndex, int sqlType, String typeName) throws SQLException

Specified by:
  `setNull` in interface `PreparedStatement`
Throws:
  `SQLException`

### setObject

public void setObject(int parameterIndex, Object x) throws SQLException

Specified by:
  `setObject` in interface `PreparedStatement`
Throws:
  `SQLException`

### setObject

public void setObject(int parameterIndex, Object x, int targetSqlType) throws SQLException

Specified by:
  `setObject` in interface `PreparedStatement`
Throws:
  `SQLException`

### setObject

public void setObject(int parameterIndex, Object x, int targetSqlType, int scale) throws SQLException

Specified by:
  `setObject` in interface `PreparedStatement`
Throws:
  `SQLException`

### setObject

public void setObject(int parameterIndex, Object x, SQLType targetSqlType) throws SQLException

Specified by:
  `setObject` in interface `PreparedStatement`
Throws:
  `SQLException`
Since:
  2.5.0

### setObject

public void setObject(int parameterIndex, Object x, SQLType targetSqlType, int scaleOrLength) throws SQLException

Specified by:
  `setObject` in interface `PreparedStatement`
Throws:
  `SQLException`
Since:
  2.5.0

### setRef

public void setRef(int i, Ref x) throws SQLException

Specified by:
  `setRef` in interface `PreparedStatement`
Throws:
  `SQLException`

### setRowId

public void setRowId(int parameterIndex, RowId value) throws SQLException

Specified by:
  `setRowId` in interface `PreparedStatement`
Throws:
  `SQLException`

### setShort

public void setShort(int parameterIndex, short x) throws SQLException

Specified by:
  `setShort` in interface `PreparedStatement`
Throws:
  `SQLException`

### setSQLXML

public void setSQLXML(int parameterIndex, SQLXML value) throws SQLException

Specified by:
  `setSQLXML` in interface `PreparedStatement`
Throws:
  `SQLException`

### setString

public void setString(int parameterIndex, String x) throws SQLException

Specified by:
  `setString` in interface `PreparedStatement`
Throws:
  `SQLException`

### setTime

public void setTime(int parameterIndex, Time x) throws SQLException

Specified by:
  `setTime` in interface `PreparedStatement`
Throws:
  `SQLException`

### setTime

public void setTime(int parameterIndex, Time x, Calendar cal) throws SQLException

Specified by:
  `setTime` in interface `PreparedStatement`
Throws:
  `SQLException`

### setTimestamp

public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException

Specified by:
  `setTimestamp` in interface `PreparedStatement`
Throws:
  `SQLException`

### setTimestamp

public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal) throws SQLException

Specified by:
  `setTimestamp` in interface `PreparedStatement`
Throws:
  `SQLException`

### setUnicodeStream

@Deprecated public void setUnicodeStream(int parameterIndex, InputStream x, int length) throws SQLException
Deprecated.
Use setAsciiStream(), setCharacterStream() or setNCharacterStream()

Specified by:
  `setUnicodeStream` in interface `PreparedStatement`
Throws:
  `SQLException`

### setURL

public void setURL(int parameterIndex, URL x) throws SQLException

Specified by:
  `setURL` in interface `PreparedStatement`
Throws:
  `SQLException`

### toString

public String toString()
Returns a String representation of this object.

Overrides:
  `toString` in class `DelegatingStatement`
Returns:
  String