org.apache.commons.dbcp2

## Class DelegatingStatement

- java.lang.Object
- - org.apache.commons.dbcp2.AbandonedTrace
  - - org.apache.commons.dbcp2.DelegatingStatement

- All Implemented Interfaces:
    AutoCloseable, Statement, Wrapper, org.apache.commons.pool2.TrackedUse
  Direct Known Subclasses:
    DelegatingPreparedStatement

      public class DelegatingStatement
      extends AbandonedTrace
      implements Statement

  A base delegating implementation of `Statement`.

  All of the methods from the `Statement` interface simply check to see that the `Statement` 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
  Version:
    $Revision: 1572242 $ $Date: 2014-02-26 20:34:39 +0000 (Wed, 26 Feb 2014) $
  Author:
    Rodney Waldhoff, Glenn L. Nielsen, James House, Dirk Verbeeck

- - ### 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 and Description
    `DelegatingStatement(DelegatingConnection<?> c, Statement s)` Create a wrapper for the Statement which traces this Statement to the Connection which created it and the code which created it.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `activate()`
    `void` | `addBatch(String sql)`
    `void` | `cancel()`
    `protected void` | `checkOpen()`
    `void` | `clearBatch()`
    `void` | `clearWarnings()`
    `void` | `close()` Close this DelegatingStatement, and close any ResultSets that were not explicitly closed.
    `void` | `closeOnCompletion()`
    `boolean` | `execute(String sql)`
    `boolean` | `execute(String sql, int autoGeneratedKeys)`
    `boolean` | `execute(String sql, int[] columnIndexes)`
    `boolean` | `execute(String sql, String[] columnNames)`
    `int[]` | `executeBatch()`
    `ResultSet` | `executeQuery(String sql)`
    `int` | `executeUpdate(String sql)`
    `int` | `executeUpdate(String sql, int autoGeneratedKeys)`
    `int` | `executeUpdate(String sql, int[] columnIndexes)`
    `int` | `executeUpdate(String sql, String[] columnNames)`
    `protected void` | `finalize()`
    `Connection` | `getConnection()`
    `protected DelegatingConnection<?>` | `getConnectionInternal()`
    `Statement` | `getDelegate()` Returns my underlying `Statement`.
    `int` | `getFetchDirection()`
    `int` | `getFetchSize()`
    `ResultSet` | `getGeneratedKeys()`
    `Statement` | `getInnermostDelegate()` If my underlying `Statement` is not a `DelegatingStatement`, returns it, otherwise recursively invokes this method on my delegate.
    `int` | `getMaxFieldSize()`
    `int` | `getMaxRows()`
    `boolean` | `getMoreResults()`
    `boolean` | `getMoreResults(int current)`
    `int` | `getQueryTimeout()`
    `ResultSet` | `getResultSet()`
    `int` | `getResultSetConcurrency()`
    `int` | `getResultSetHoldability()`
    `int` | `getResultSetType()`
    `int` | `getUpdateCount()`
    `SQLWarning` | `getWarnings()`
    `protected void` | `handleException(SQLException e)`
    `boolean` | `isClosed()`
    `protected boolean` | `isClosedInternal()`
    `boolean` | `isCloseOnCompletion()`
    `boolean` | `isPoolable()`
    `boolean` | `isWrapperFor(Class<?> iface)`
    `protected void` | `passivate()`
    `protected void` | `setClosedInternal(boolean closed)`
    `void` | `setCursorName(String name)`
    `void` | `setDelegate(Statement s)` Sets my delegate.
    `void` | `setEscapeProcessing(boolean enable)`
    `void` | `setFetchDirection(int direction)`
    `void` | `setFetchSize(int rows)`
    `void` | `setMaxFieldSize(int max)`
    `void` | `setMaxRows(int max)`
    `void` | `setPoolable(boolean poolable)`
    `void` | `setQueryTimeout(int seconds)`
    `String` | `toString()` Returns a String representation of this object.
    `<T> T` | `unwrap(Class<T> iface)`

    - ### Methods inherited from class org.apache.commons.dbcp2.AbandonedTrace

      `addTrace, clearTrace, getLastUsed, getTrace, removeTrace, setLastUsed, setLastUsed`

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

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

- - ### Constructor Detail

    - #### DelegatingStatement

          public DelegatingStatement(DelegatingConnection<?> c,
                             Statement s)

      Create a wrapper for the Statement which traces this Statement to the Connection which created it and the code which created it.
      Parameters:
        `s` - the `Statement` to delegate all calls to.
        `c` - the `DelegatingConnection` that created this statement.

  - ### Method Detail

    - #### getDelegate

          public Statement getDelegate()

      Returns my underlying `Statement`.
      Returns:
        my underlying `Statement`.
      See Also:
        `getInnermostDelegate()`

    - #### getInnermostDelegate

          public Statement getInnermostDelegate()

      If my underlying `Statement` is not a `DelegatingStatement`, returns it, otherwise recursively invokes this method on my delegate.

      Hence this method will return the first delegate that is not a `DelegatingStatement` or `null` when no non-`DelegatingStatement` delegate can be found by transversing this chain.

      This method is useful when you may have nested `DelegatingStatement`s, and you want to make sure to obtain a "genuine" `Statement`.

      See Also:
        `getDelegate()`

    - #### setDelegate

          public void setDelegate(Statement s)

      Sets my delegate.

    - #### isClosedInternal

          protected boolean isClosedInternal()

    - #### setClosedInternal

          protected void setClosedInternal(boolean closed)

    - #### checkOpen

          protected void checkOpen()
                            throws SQLException

      Throws:
        `SQLException`

    - #### close

          public void close()
                     throws SQLException

      Close this DelegatingStatement, and close any ResultSets that were not explicitly closed.
      Specified by:
        `close` in interface `AutoCloseable`
      Specified by:
        `close` in interface `Statement`
      Throws:
        `SQLException`

    - #### handleException

          protected void handleException(SQLException e)
                                  throws SQLException

      Throws:
        `SQLException`

    - #### activate

          protected void activate()
                           throws SQLException

      Throws:
        `SQLException`

    - #### passivate

          protected void passivate()
                            throws SQLException

      Throws:
        `SQLException`

    - #### getConnection

          public Connection getConnection()
                                   throws SQLException

      Specified by:
        `getConnection` in interface `Statement`
      Throws:
        `SQLException`

    - #### getConnectionInternal

          protected DelegatingConnection<?> getConnectionInternal()

    - #### executeQuery

          public ResultSet executeQuery(String sql)
                                 throws SQLException

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

    - #### getResultSet

          public ResultSet getResultSet()
                                 throws SQLException

      Specified by:
        `getResultSet` in interface `Statement`
      Throws:
        `SQLException`

    - #### executeUpdate

          public int executeUpdate(String sql)
                            throws SQLException

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

    - #### getMaxFieldSize

          public int getMaxFieldSize()
                              throws SQLException

      Specified by:
        `getMaxFieldSize` in interface `Statement`
      Throws:
        `SQLException`

    - #### setMaxFieldSize

          public void setMaxFieldSize(int max)
                               throws SQLException

      Specified by:
        `setMaxFieldSize` in interface `Statement`
      Throws:
        `SQLException`

    - #### getMaxRows

          public int getMaxRows()
                         throws SQLException

      Specified by:
        `getMaxRows` in interface `Statement`
      Throws:
        `SQLException`

    - #### setMaxRows

          public void setMaxRows(int max)
                          throws SQLException

      Specified by:
        `setMaxRows` in interface `Statement`
      Throws:
        `SQLException`

    - #### setEscapeProcessing

          public void setEscapeProcessing(boolean enable)
                                   throws SQLException

      Specified by:
        `setEscapeProcessing` in interface `Statement`
      Throws:
        `SQLException`

    - #### getQueryTimeout

          public int getQueryTimeout()
                              throws SQLException

      Specified by:
        `getQueryTimeout` in interface `Statement`
      Throws:
        `SQLException`

    - #### setQueryTimeout

          public void setQueryTimeout(int seconds)
                               throws SQLException

      Specified by:
        `setQueryTimeout` in interface `Statement`
      Throws:
        `SQLException`

    - #### cancel

          public void cancel()
                      throws SQLException

      Specified by:
        `cancel` in interface `Statement`
      Throws:
        `SQLException`

    - #### getWarnings

          public SQLWarning getWarnings()
                                 throws SQLException

      Specified by:
        `getWarnings` in interface `Statement`
      Throws:
        `SQLException`

    - #### clearWarnings

          public void clearWarnings()
                             throws SQLException

      Specified by:
        `clearWarnings` in interface `Statement`
      Throws:
        `SQLException`

    - #### setCursorName

          public void setCursorName(String name)
                             throws SQLException

      Specified by:
        `setCursorName` in interface `Statement`
      Throws:
        `SQLException`

    - #### execute

          public boolean execute(String sql)
                          throws SQLException

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

    - #### getUpdateCount

          public int getUpdateCount()
                             throws SQLException

      Specified by:
        `getUpdateCount` in interface `Statement`
      Throws:
        `SQLException`

    - #### getMoreResults

          public boolean getMoreResults()
                                 throws SQLException

      Specified by:
        `getMoreResults` in interface `Statement`
      Throws:
        `SQLException`

    - #### setFetchDirection

          public void setFetchDirection(int direction)
                                 throws SQLException

      Specified by:
        `setFetchDirection` in interface `Statement`
      Throws:
        `SQLException`

    - #### getFetchDirection

          public int getFetchDirection()
                                throws SQLException

      Specified by:
        `getFetchDirection` in interface `Statement`
      Throws:
        `SQLException`

    - #### setFetchSize

          public void setFetchSize(int rows)
                            throws SQLException

      Specified by:
        `setFetchSize` in interface `Statement`
      Throws:
        `SQLException`

    - #### getFetchSize

          public int getFetchSize()
                           throws SQLException

      Specified by:
        `getFetchSize` in interface `Statement`
      Throws:
        `SQLException`

    - #### getResultSetConcurrency

          public int getResultSetConcurrency()
                                      throws SQLException

      Specified by:
        `getResultSetConcurrency` in interface `Statement`
      Throws:
        `SQLException`

    - #### getResultSetType

          public int getResultSetType()
                               throws SQLException

      Specified by:
        `getResultSetType` in interface `Statement`
      Throws:
        `SQLException`

    - #### addBatch

          public void addBatch(String sql)
                        throws SQLException

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

    - #### clearBatch

          public void clearBatch()
                          throws SQLException

      Specified by:
        `clearBatch` in interface `Statement`
      Throws:
        `SQLException`

    - #### executeBatch

          public int[] executeBatch()
                             throws SQLException

      Specified by:
        `executeBatch` in interface `Statement`
      Throws:
        `SQLException`

    - #### toString

          public String toString()

      Returns a String representation of this object.
      Overrides:
        `toString` in class `Object`
      Returns:
        String

    - #### getMoreResults

          public boolean getMoreResults(int current)
                                 throws SQLException

      Specified by:
        `getMoreResults` in interface `Statement`
      Throws:
        `SQLException`

    - #### getGeneratedKeys

          public ResultSet getGeneratedKeys()
                                     throws SQLException

      Specified by:
        `getGeneratedKeys` in interface `Statement`
      Throws:
        `SQLException`

    - #### executeUpdate

          public int executeUpdate(String sql,
                          int autoGeneratedKeys)
                            throws SQLException

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

    - #### executeUpdate

          public int executeUpdate(String sql,
                          int[] columnIndexes)
                            throws SQLException

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

    - #### executeUpdate

          public int executeUpdate(String sql,
                          String[] columnNames)
                            throws SQLException

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

    - #### execute

          public boolean execute(String sql,
                        int autoGeneratedKeys)
                          throws SQLException

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

    - #### execute

          public boolean execute(String sql,
                        int[] columnIndexes)
                          throws SQLException

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

    - #### execute

          public boolean execute(String sql,
                        String[] columnNames)
                          throws SQLException

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

    - #### getResultSetHoldability

          public int getResultSetHoldability()
                                      throws SQLException

      Specified by:
        `getResultSetHoldability` in interface `Statement`
      Throws:
        `SQLException`

    - #### isClosed

          public boolean isClosed()
                           throws SQLException

      Specified by:
        `isClosed` in interface `Statement`
      Throws:
        `SQLException`

    - #### isWrapperFor

          public boolean isWrapperFor(Class<?> iface)
                               throws SQLException

      Specified by:
        `isWrapperFor` in interface `Wrapper`
      Throws:
        `SQLException`

    - #### unwrap

          public <T> T unwrap(Class<T> iface)
                   throws SQLException

      Specified by:
        `unwrap` in interface `Wrapper`
      Throws:
        `SQLException`

    - #### setPoolable

          public void setPoolable(boolean poolable)
                           throws SQLException

      Specified by:
        `setPoolable` in interface `Statement`
      Throws:
        `SQLException`

    - #### isPoolable

          public boolean isPoolable()
                             throws SQLException

      Specified by:
        `isPoolable` in interface `Statement`
      Throws:
        `SQLException`

    - #### closeOnCompletion

          public void closeOnCompletion()
                                 throws SQLException

      Specified by:
        `closeOnCompletion` in interface `Statement`
      Throws:
        `SQLException`

    - #### isCloseOnCompletion

          public boolean isCloseOnCompletion()
                                      throws SQLException

      Specified by:
        `isCloseOnCompletion` in interface `Statement`
      Throws:
        `SQLException`

    - #### finalize

          protected void finalize()
                           throws Throwable

      Overrides:
        `finalize` in class `Object`
      Throws:
        `Throwable`

Copyright © 2001–2014 The Apache Software Foundation. All rights reserved.