Package org.apache.tomcat.dbcp.dbcp2

## 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 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
    Constructor | Description
    --- | ---
    `PoolablePreparedStatement​(PreparedStatement stmt, K key, KeyedObjectPool<K,​PoolablePreparedStatement<K>> pool, DelegatingConnection<?> conn)` | Constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `activate()` |
    `void` | `addBatch()` | Add batch.
    `void` | `clearBatch()` | Clear Batch.
    `void` | `close()` | Return me to my pool.
    `void` | `passivate()` |

    - ### Methods inherited from class org.apache.tomcat.dbcp.dbcp2.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 org.apache.tomcat.dbcp.dbcp2.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 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, 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 java.sql.Wrapper

      `isWrapperFor, unwrap`

- - ### Constructor Detail

    - #### PoolablePreparedStatement

          public PoolablePreparedStatement​(PreparedStatement stmt,
                                           K key,
                                           KeyedObjectPool<K,​PoolablePreparedStatement<K>> pool,
                                           DelegatingConnection<?> conn)

      Constructor.
      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 Detail

    - #### activate

          public void activate()
                        throws SQLException

      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

      Overrides:
        `passivate` in class `DelegatingStatement`
      Throws:
        `SQLException` - thrown by the delegating statement.