# Class PoolablePreparedStatement<K>

java.lang.Object
org.apache.tomcat.dbcp.dbcp2.AbandonedTrace
org.apache.tomcat.dbcp.dbcp2.DelegatingStatement
org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement
org.apache.tomcat.dbcp.dbcp2.PoolablePreparedStatement<K>

Type Parameters:
  `K` - the key type

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

public class PoolablePreparedStatement<K> extends DelegatingPreparedStatement
A `DelegatingPreparedStatement` that cooperates with `PoolingConnection` to implement a pool of `PreparedStatement`s.

My `close()` method returns me to my containing pool. (See `PoolingConnection`.)

Since:
  2.0
See Also:
  - `PoolingConnection`

- ## 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
  `PoolablePreparedStatement(PreparedStatement stmt, K key, KeyedObjectPool<K, PoolablePreparedStatement<K>> pool, DelegatingConnection<?> conn)`
  Constructs a new instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `activate()`
  Activates this instance by delegating to the underlying statement.
  `void`
  `addBatch()`
  Add batch.
  `void`
  `clearBatch()`
  Clear Batch.
  `void`
  `close()`
  Return me to my pool.
  `void`
  `passivate()`
  Passivates this instance by delegating to the underlying statement.

  ### Methods inherited from class DelegatingPreparedStatement

  `clearParameters, execute, executeLargeUpdate, executeQuery, executeUpdate, getMetaData, getParameterMetaData, prepareToReturn, setArray, setAsciiStream, setAsciiStream, setAsciiStream, setBigDecimal, setBinaryStream, setBinaryStream, setBinaryStream, setBlob, setBlob, setBlob, setBoolean, setByte, setBytes, setCharacterStream, setCharacterStream, setCharacterStream, setClob, setClob, setClob, setDate, setDate, setDouble, setFloat, setInt, setLong, setNCharacterStream, setNCharacterStream, setNClob, setNClob, setNClob, setNString, setNull, setNull, setObject, setObject, setObject, setObject, setObject, setRef, setRowId, setShort, setSQLXML, setString, setTime, setTime, setTimestamp, setTimestamp, setUnicodeStream, setURL, toString`

  ### Methods inherited from class DelegatingStatement

  `addBatch, cancel, checkOpen, clearWarnings, 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, 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, clearWarnings, 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

  - ### PoolablePreparedStatement

    public PoolablePreparedStatement(PreparedStatement stmt, K key, KeyedObjectPool<K, PoolablePreparedStatement<K>> pool, DelegatingConnection<?> conn)
    Constructs a new instance.
    Parameters:
      `stmt` - my underlying `PreparedStatement`
      `key` - my key as used by `KeyedObjectPool`
      `pool` - the `KeyedObjectPool` from which I was obtained.
      `conn` - the `Connection` from which I was created

- ## Method Details

  - ### activate

    public void activate() throws SQLException
    Description copied from class: `DelegatingStatement`
    Activates this instance by delegating to the underlying statement.
    Overrides:
      `activate` in class `DelegatingStatement`
    Throws:
      `SQLException` - thrown by the delegating statement.

  - ### addBatch

    public void addBatch() throws SQLException
    Add batch.
    Specified by:
      `addBatch` in interface `PreparedStatement`
    Overrides:
      `addBatch` in class `DelegatingPreparedStatement`
    Throws:
      `SQLException`

  - ### clearBatch

    public void clearBatch() throws SQLException
    Clear Batch.
    Specified by:
      `clearBatch` in interface `Statement`
    Overrides:
      `clearBatch` in class `DelegatingStatement`
    Throws:
      `SQLException`

  - ### close

    public void close() throws SQLException
    Return me to my pool.
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Statement`
    Overrides:
      `close` in class `DelegatingStatement`
    Throws:
      `SQLException` - Ignored here, for subclasses.

  - ### passivate

    public void passivate() throws SQLException
    Description copied from class: `DelegatingStatement`
    Passivates this instance by delegating to the underlying statement.
    Overrides:
      `passivate` in class `DelegatingStatement`
    Throws:
      `SQLException` - thrown by the delegating statement.