Package org.apache.tomcat.dbcp.dbcp2

## 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:
  `java.lang.AutoCloseable`, `java.sql.PreparedStatement`, `java.sql.Statement`, `java.sql.Wrapper`, `TrackedUse`

Direct Known Subclasses:
  `DelegatingCallableStatement`, `PoolablePreparedStatement`

    public class DelegatingPreparedStatement
    extends DelegatingStatement
    implements java.sql.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 java.sql.Statement

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

### Constructor Summary

Constructors
`DelegatingPreparedStatement​(DelegatingConnection<?> connection, java.sql.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

All Methods Instance Methods Concrete Methods Deprecated Methods
`void` `addBatch()`
`void` `clearParameters()`
`boolean` `execute()`
`long` `executeLargeUpdate()`
`java.sql.ResultSet` `executeQuery()`
`int` `executeUpdate()`
`java.sql.ResultSetMetaData` `getMetaData()`
`java.sql.ParameterMetaData` `getParameterMetaData()`
`protected void` `prepareToReturn()`
`void` `setArray​(int i, java.sql.Array x)`
`void` `setAsciiStream​(int parameterIndex, java.io.InputStream inputStream)`
`void` `setAsciiStream​(int parameterIndex, java.io.InputStream x, int length)`
`void` `setAsciiStream​(int parameterIndex, java.io.InputStream inputStream, long length)`
`void` `setBigDecimal​(int parameterIndex, java.math.BigDecimal x)`
`void` `setBinaryStream​(int parameterIndex, java.io.InputStream inputStream)`
`void` `setBinaryStream​(int parameterIndex, java.io.InputStream x, int length)`
`void` `setBinaryStream​(int parameterIndex, java.io.InputStream inputStream, long length)`
`void` `setBlob​(int parameterIndex, java.io.InputStream inputStream)`
`void` `setBlob​(int parameterIndex, java.io.InputStream inputStream, long length)`
`void` `setBlob​(int i, java.sql.Blob x)`
`void` `setBoolean​(int parameterIndex, boolean x)`
`void` `setByte​(int parameterIndex, byte x)`
`void` `setBytes​(int parameterIndex, byte[] x)`
`void` `setCharacterStream​(int parameterIndex, java.io.Reader reader)`
`void` `setCharacterStream​(int parameterIndex, java.io.Reader reader, int length)`
`void` `setCharacterStream​(int parameterIndex, java.io.Reader reader, long length)`
`void` `setClob​(int parameterIndex, java.io.Reader reader)`
`void` `setClob​(int parameterIndex, java.io.Reader reader, long length)`
`void` `setClob​(int i, java.sql.Clob x)`
`void` `setDate​(int parameterIndex, java.sql.Date x)`
`void` `setDate​(int parameterIndex, java.sql.Date x, java.util.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, java.io.Reader reader)`
`void` `setNCharacterStream​(int parameterIndex, java.io.Reader value, long length)`
`void` `setNClob​(int parameterIndex, java.io.Reader reader)`
`void` `setNClob​(int parameterIndex, java.io.Reader reader, long length)`
`void` `setNClob​(int parameterIndex, java.sql.NClob value)`
`void` `setNString​(int parameterIndex, java.lang.String value)`
`void` `setNull​(int parameterIndex, int sqlType)`
`void` `setNull​(int paramIndex, int sqlType, java.lang.String typeName)`
`void` `setObject​(int parameterIndex, java.lang.Object x)`
`void` `setObject​(int parameterIndex, java.lang.Object x, int targetSqlType)`
`void` `setObject​(int parameterIndex, java.lang.Object x, int targetSqlType, int scale)`
`void` `setObject​(int parameterIndex, java.lang.Object x, java.sql.SQLType targetSqlType)`
`void` `setObject​(int parameterIndex, java.lang.Object x, java.sql.SQLType targetSqlType, int scaleOrLength)`
`void` `setRef​(int i, java.sql.Ref x)`
`void` `setRowId​(int parameterIndex, java.sql.RowId value)`
`void` `setShort​(int parameterIndex, short x)`
`void` `setSQLXML​(int parameterIndex, java.sql.SQLXML value)`
`void` `setString​(int parameterIndex, java.lang.String x)`
`void` `setTime​(int parameterIndex, java.sql.Time x)`
`void` `setTime​(int parameterIndex, java.sql.Time x, java.util.Calendar cal)`
`void` `setTimestamp​(int parameterIndex, java.sql.Timestamp x)`
`void` `setTimestamp​(int parameterIndex, java.sql.Timestamp x, java.util.Calendar cal)`
`void` `setUnicodeStream​(int parameterIndex, java.io.InputStream x, int length)` Deprecated. Use setAsciiStream(), setCharacterStream() or setNCharacterStream()
`void` `setURL​(int parameterIndex, java.net.URL x)`
`java.lang.String` `toString()` Returns a String representation of this object.

### Methods inherited from class org.apache.tomcat.dbcp.dbcp2.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 org.apache.tomcat.dbcp.dbcp2.AbandonedTrace

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

### Methods inherited from class java.lang.Object

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

### Methods inherited from interface java.sql.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 java.sql.Wrapper

`isWrapperFor, unwrap`

### Constructor Detail

#### DelegatingPreparedStatement

    public DelegatingPreparedStatement​(DelegatingConnection<?> connection,
                                       java.sql.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:
  `statement` - the `PreparedStatement` to delegate all calls to.
  `connection` - the `DelegatingConnection` that created this statement.

### Method Detail

#### addBatch

    public void addBatch()
                  throws java.sql.SQLException

Specified by:
  `addBatch` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### clearParameters

    public void clearParameters()
                         throws java.sql.SQLException

Specified by:
  `clearParameters` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### execute

    public boolean execute()
                    throws java.sql.SQLException

Specified by:
  `execute` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### executeLargeUpdate

    public long executeLargeUpdate()
                            throws java.sql.SQLException

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

#### executeQuery

    public java.sql.ResultSet executeQuery()
                                    throws java.sql.SQLException

Specified by:
  `executeQuery` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### executeUpdate

    public int executeUpdate()
                      throws java.sql.SQLException

Specified by:
  `executeUpdate` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### getMetaData

    public java.sql.ResultSetMetaData getMetaData()
                                           throws java.sql.SQLException

Specified by:
  `getMetaData` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### getParameterMetaData

    public java.sql.ParameterMetaData getParameterMetaData()
                                                    throws java.sql.SQLException

Specified by:
  `getParameterMetaData` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setArray

    public void setArray​(int i,
                         java.sql.Array x)
                  throws java.sql.SQLException

Specified by:
  `setArray` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setAsciiStream

    public void setAsciiStream​(int parameterIndex,
                               java.io.InputStream inputStream)
                        throws java.sql.SQLException

Specified by:
  `setAsciiStream` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setAsciiStream

    public void setAsciiStream​(int parameterIndex,
                               java.io.InputStream x,
                               int length)
                        throws java.sql.SQLException

Specified by:
  `setAsciiStream` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setAsciiStream

    public void setAsciiStream​(int parameterIndex,
                               java.io.InputStream inputStream,
                               long length)
                        throws java.sql.SQLException

Specified by:
  `setAsciiStream` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBigDecimal

    public void setBigDecimal​(int parameterIndex,
                              java.math.BigDecimal x)
                       throws java.sql.SQLException

Specified by:
  `setBigDecimal` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBinaryStream

    public void setBinaryStream​(int parameterIndex,
                                java.io.InputStream inputStream)
                         throws java.sql.SQLException

Specified by:
  `setBinaryStream` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBinaryStream

    public void setBinaryStream​(int parameterIndex,
                                java.io.InputStream x,
                                int length)
                         throws java.sql.SQLException

Specified by:
  `setBinaryStream` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBinaryStream

    public void setBinaryStream​(int parameterIndex,
                                java.io.InputStream inputStream,
                                long length)
                         throws java.sql.SQLException

Specified by:
  `setBinaryStream` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBlob

    public void setBlob​(int i,
                        java.sql.Blob x)
                 throws java.sql.SQLException

Specified by:
  `setBlob` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBlob

    public void setBlob​(int parameterIndex,
                        java.io.InputStream inputStream)
                 throws java.sql.SQLException

Specified by:
  `setBlob` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBlob

    public void setBlob​(int parameterIndex,
                        java.io.InputStream inputStream,
                        long length)
                 throws java.sql.SQLException

Specified by:
  `setBlob` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBoolean

    public void setBoolean​(int parameterIndex,
                           boolean x)
                    throws java.sql.SQLException

Specified by:
  `setBoolean` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setByte

    public void setByte​(int parameterIndex,
                        byte x)
                 throws java.sql.SQLException

Specified by:
  `setByte` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setBytes

    public void setBytes​(int parameterIndex,
                         byte[] x)
                  throws java.sql.SQLException

Specified by:
  `setBytes` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setCharacterStream

    public void setCharacterStream​(int parameterIndex,
                                   java.io.Reader reader)
                            throws java.sql.SQLException

Specified by:
  `setCharacterStream` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setCharacterStream

    public void setCharacterStream​(int parameterIndex,
                                   java.io.Reader reader,
                                   int length)
                            throws java.sql.SQLException

Specified by:
  `setCharacterStream` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setCharacterStream

    public void setCharacterStream​(int parameterIndex,
                                   java.io.Reader reader,
                                   long length)
                            throws java.sql.SQLException

Specified by:
  `setCharacterStream` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setClob

    public void setClob​(int i,
                        java.sql.Clob x)
                 throws java.sql.SQLException

Specified by:
  `setClob` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setClob

    public void setClob​(int parameterIndex,
                        java.io.Reader reader)
                 throws java.sql.SQLException

Specified by:
  `setClob` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setClob

    public void setClob​(int parameterIndex,
                        java.io.Reader reader,
                        long length)
                 throws java.sql.SQLException

Specified by:
  `setClob` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setDate

    public void setDate​(int parameterIndex,
                        java.sql.Date x)
                 throws java.sql.SQLException

Specified by:
  `setDate` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setDate

    public void setDate​(int parameterIndex,
                        java.sql.Date x,
                        java.util.Calendar cal)
                 throws java.sql.SQLException

Specified by:
  `setDate` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setDouble

    public void setDouble​(int parameterIndex,
                          double x)
                   throws java.sql.SQLException

Specified by:
  `setDouble` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setFloat

    public void setFloat​(int parameterIndex,
                         float x)
                  throws java.sql.SQLException

Specified by:
  `setFloat` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setInt

    public void setInt​(int parameterIndex,
                       int x)
                throws java.sql.SQLException

Specified by:
  `setInt` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setLong

    public void setLong​(int parameterIndex,
                        long x)
                 throws java.sql.SQLException

Specified by:
  `setLong` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setNCharacterStream

    public void setNCharacterStream​(int parameterIndex,
                                    java.io.Reader reader)
                             throws java.sql.SQLException

Specified by:
  `setNCharacterStream` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setNCharacterStream

    public void setNCharacterStream​(int parameterIndex,
                                    java.io.Reader value,
                                    long length)
                             throws java.sql.SQLException

Specified by:
  `setNCharacterStream` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setNClob

    public void setNClob​(int parameterIndex,
                         java.sql.NClob value)
                  throws java.sql.SQLException

Specified by:
  `setNClob` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setNClob

    public void setNClob​(int parameterIndex,
                         java.io.Reader reader)
                  throws java.sql.SQLException

Specified by:
  `setNClob` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setNClob

    public void setNClob​(int parameterIndex,
                         java.io.Reader reader,
                         long length)
                  throws java.sql.SQLException

Specified by:
  `setNClob` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setNString

    public void setNString​(int parameterIndex,
                           java.lang.String value)
                    throws java.sql.SQLException

Specified by:
  `setNString` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setNull

    public void setNull​(int parameterIndex,
                        int sqlType)
                 throws java.sql.SQLException

Specified by:
  `setNull` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setNull

    public void setNull​(int paramIndex,
                        int sqlType,
                        java.lang.String typeName)
                 throws java.sql.SQLException

Specified by:
  `setNull` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setObject

    public void setObject​(int parameterIndex,
                          java.lang.Object x)
                   throws java.sql.SQLException

Specified by:
  `setObject` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setObject

    public void setObject​(int parameterIndex,
                          java.lang.Object x,
                          int targetSqlType)
                   throws java.sql.SQLException

Specified by:
  `setObject` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setObject

    public void setObject​(int parameterIndex,
                          java.lang.Object x,
                          int targetSqlType,
                          int scale)
                   throws java.sql.SQLException

Specified by:
  `setObject` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setObject

    public void setObject​(int parameterIndex,
                          java.lang.Object x,
                          java.sql.SQLType targetSqlType)
                   throws java.sql.SQLException

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

#### setObject

    public void setObject​(int parameterIndex,
                          java.lang.Object x,
                          java.sql.SQLType targetSqlType,
                          int scaleOrLength)
                   throws java.sql.SQLException

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

#### setRef

    public void setRef​(int i,
                       java.sql.Ref x)
                throws java.sql.SQLException

Specified by:
  `setRef` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setRowId

    public void setRowId​(int parameterIndex,
                         java.sql.RowId value)
                  throws java.sql.SQLException

Specified by:
  `setRowId` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setShort

    public void setShort​(int parameterIndex,
                         short x)
                  throws java.sql.SQLException

Specified by:
  `setShort` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setSQLXML

    public void setSQLXML​(int parameterIndex,
                          java.sql.SQLXML value)
                   throws java.sql.SQLException

Specified by:
  `setSQLXML` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setString

    public void setString​(int parameterIndex,
                          java.lang.String x)
                   throws java.sql.SQLException

Specified by:
  `setString` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setTime

    public void setTime​(int parameterIndex,
                        java.sql.Time x)
                 throws java.sql.SQLException

Specified by:
  `setTime` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setTime

    public void setTime​(int parameterIndex,
                        java.sql.Time x,
                        java.util.Calendar cal)
                 throws java.sql.SQLException

Specified by:
  `setTime` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setTimestamp

    public void setTimestamp​(int parameterIndex,
                             java.sql.Timestamp x)
                      throws java.sql.SQLException

Specified by:
  `setTimestamp` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setTimestamp

    public void setTimestamp​(int parameterIndex,
                             java.sql.Timestamp x,
                             java.util.Calendar cal)
                      throws java.sql.SQLException

Specified by:
  `setTimestamp` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setUnicodeStream

    @Deprecated
    public void setUnicodeStream​(int parameterIndex,
                                 java.io.InputStream x,
                                 int length)
                          throws java.sql.SQLException

Deprecated.
Use setAsciiStream(), setCharacterStream() or setNCharacterStream()

Specified by:
  `setUnicodeStream` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### setURL

    public void setURL​(int parameterIndex,
                       java.net.URL x)
                throws java.sql.SQLException

Specified by:
  `setURL` in interface `java.sql.PreparedStatement`
Throws:
  `java.sql.SQLException`

#### toString

    public java.lang.String toString()

Returns a String representation of this object.

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

#### prepareToReturn

    protected void prepareToReturn()
                            throws java.sql.SQLException

Throws:
  `java.sql.SQLException`