DelegatingStatement (Apache Tomcat 8.5.43 API Documentation)

org.apache.tomcat.dbcp.dbcp2

## Class DelegatingStatement

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

- All Implemented Interfaces:
    java.lang.AutoCloseable, java.sql.Statement, java.sql.Wrapper, TrackedUse
  Direct Known Subclasses:
    DelegatingPreparedStatement

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

- - ### 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<?> connection, java.sql.Statement 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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `activate()`
    `void` | `addBatch(java.lang.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(java.lang.String sql)`
    `boolean` | `execute(java.lang.String sql, int autoGeneratedKeys)`
    `boolean` | `execute(java.lang.String sql, int[] columnIndexes)`
    `boolean` | `execute(java.lang.String sql, java.lang.String[] columnNames)`
    `int[]` | `executeBatch()`
    `java.sql.ResultSet` | `executeQuery(java.lang.String sql)`
    `int` | `executeUpdate(java.lang.String sql)`
    `int` | `executeUpdate(java.lang.String sql, int autoGeneratedKeys)`
    `int` | `executeUpdate(java.lang.String sql, int[] columnIndexes)`
    `int` | `executeUpdate(java.lang.String sql, java.lang.String[] columnNames)`
    `protected void` | `finalize()`
    `java.sql.Connection` | `getConnection()`
    `protected DelegatingConnection<?>` | `getConnectionInternal()`
    `java.sql.Statement` | `getDelegate()` Returns my underlying `Statement`.
    `int` | `getFetchDirection()`
    `int` | `getFetchSize()`
    `java.sql.ResultSet` | `getGeneratedKeys()`
    `java.sql.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()`
    `java.sql.ResultSet` | `getResultSet()`
    `int` | `getResultSetConcurrency()`
    `int` | `getResultSetHoldability()`
    `int` | `getResultSetType()`
    `int` | `getUpdateCount()`
    `java.sql.SQLWarning` | `getWarnings()`
    `protected void` | `handleException(java.sql.SQLException e)`
    `boolean` | `isClosed()`
    `protected boolean` | `isClosedInternal()`
    `boolean` | `isCloseOnCompletion()`
    `boolean` | `isPoolable()`
    `boolean` | `isWrapperFor(java.lang.Class<?> iface)`
    `void` | `passivate()`
    `protected void` | `setClosedInternal(boolean closed)`
    `void` | `setCursorName(java.lang.String name)`
    `void` | `setDelegate(java.sql.Statement statement)` 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)`
    `java.lang.String` | `toString()` Returns a String representation of this object.
    `<T> T` | `unwrap(java.lang.Class<T> iface)`

    - ### Methods inherited from class org.apache.tomcat.dbcp.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<?> connection,
                             java.sql.Statement 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 `Statement` to delegate all calls to.
        `connection` - the `DelegatingConnection` that created this statement.

  - ### Method Detail

    - #### activate

          public void activate()
                        throws java.sql.SQLException

      Throws:
        `java.sql.SQLException` - thrown by the delegating statement.
      Since:
        2.4.0 made public, was protected in 2.3.0.

    - #### addBatch

          public void addBatch(java.lang.String sql)
                        throws java.sql.SQLException

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

    - #### cancel

          public void cancel()
                      throws java.sql.SQLException

      Specified by:
        `cancel` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### checkOpen

          protected void checkOpen()
                            throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### clearBatch

          public void clearBatch()
                          throws java.sql.SQLException

      Specified by:
        `clearBatch` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### clearWarnings

          public void clearWarnings()
                             throws java.sql.SQLException

      Specified by:
        `clearWarnings` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### close

          public void close()
                     throws java.sql.SQLException

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

    - #### closeOnCompletion

          public void closeOnCompletion()
                                 throws java.sql.SQLException

      Specified by:
        `closeOnCompletion` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### execute

          public boolean execute(java.lang.String sql)
                          throws java.sql.SQLException

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

    - #### execute

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

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

    - #### execute

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

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

    - #### execute

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

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

    - #### executeBatch

          public int[] executeBatch()
                             throws java.sql.SQLException

      Specified by:
        `executeBatch` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### executeQuery

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

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

    - #### executeUpdate

          public int executeUpdate(java.lang.String sql)
                            throws java.sql.SQLException

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

    - #### executeUpdate

          public int executeUpdate(java.lang.String sql,
                          int autoGeneratedKeys)
                            throws java.sql.SQLException

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

    - #### executeUpdate

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

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

    - #### executeUpdate

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

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

    - #### finalize

          protected void finalize()
                           throws java.lang.Throwable

      Overrides:
        `finalize` in class `java.lang.Object`
      Throws:
        `java.lang.Throwable`

    - #### getConnection

          public java.sql.Connection getConnection()
                                            throws java.sql.SQLException

      Specified by:
        `getConnection` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### getConnectionInternal

          protected DelegatingConnection<?> getConnectionInternal()

    - #### getDelegate

          public java.sql.Statement getDelegate()

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

    - #### getFetchDirection

          public int getFetchDirection()
                                throws java.sql.SQLException

      Specified by:
        `getFetchDirection` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### getFetchSize

          public int getFetchSize()
                           throws java.sql.SQLException

      Specified by:
        `getFetchSize` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### getGeneratedKeys

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

      Specified by:
        `getGeneratedKeys` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### getInnermostDelegate

          public java.sql.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 traversing this chain.

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

      Returns:
        The innermost delegate.
      See Also:
        `getDelegate()`

    - #### getMaxFieldSize

          public int getMaxFieldSize()
                              throws java.sql.SQLException

      Specified by:
        `getMaxFieldSize` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### getMaxRows

          public int getMaxRows()
                         throws java.sql.SQLException

      Specified by:
        `getMaxRows` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### getMoreResults

          public boolean getMoreResults()
                                 throws java.sql.SQLException

      Specified by:
        `getMoreResults` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### getMoreResults

          public boolean getMoreResults(int current)
                                 throws java.sql.SQLException

      Specified by:
        `getMoreResults` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### getQueryTimeout

          public int getQueryTimeout()
                              throws java.sql.SQLException

      Specified by:
        `getQueryTimeout` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### getResultSet

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

      Specified by:
        `getResultSet` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### getResultSetConcurrency

          public int getResultSetConcurrency()
                                      throws java.sql.SQLException

      Specified by:
        `getResultSetConcurrency` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### getResultSetHoldability

          public int getResultSetHoldability()
                                      throws java.sql.SQLException

      Specified by:
        `getResultSetHoldability` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### getResultSetType

          public int getResultSetType()
                               throws java.sql.SQLException

      Specified by:
        `getResultSetType` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### getUpdateCount

          public int getUpdateCount()
                             throws java.sql.SQLException

      Specified by:
        `getUpdateCount` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### getWarnings

          public java.sql.SQLWarning getWarnings()
                                          throws java.sql.SQLException

      Specified by:
        `getWarnings` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### handleException

          protected void handleException(java.sql.SQLException e)
                                  throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### isClosed

          public boolean isClosed()
                           throws java.sql.SQLException

      Specified by:
        `isClosed` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### isClosedInternal

          protected boolean isClosedInternal()

    - #### isCloseOnCompletion

          public boolean isCloseOnCompletion()
                                      throws java.sql.SQLException

      Specified by:
        `isCloseOnCompletion` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### isPoolable

          public boolean isPoolable()
                             throws java.sql.SQLException

      Specified by:
        `isPoolable` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### isWrapperFor

          public boolean isWrapperFor(java.lang.Class<?> iface)
                               throws java.sql.SQLException

      Specified by:
        `isWrapperFor` in interface `java.sql.Wrapper`
      Throws:
        `java.sql.SQLException`

    - #### passivate

          public void passivate()
                         throws java.sql.SQLException

      Throws:
        `java.sql.SQLException` - thrown by the delegating statement.
      Since:
        2.4.0 made public, was protected in 2.3.0.

    - #### setClosedInternal

          protected void setClosedInternal(boolean closed)

    - #### setCursorName

          public void setCursorName(java.lang.String name)
                             throws java.sql.SQLException

      Specified by:
        `setCursorName` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### setDelegate

          public void setDelegate(java.sql.Statement statement)

      Sets my delegate.
      Parameters:
        `statement` - my delegate.

    - #### setEscapeProcessing

          public void setEscapeProcessing(boolean enable)
                                   throws java.sql.SQLException

      Specified by:
        `setEscapeProcessing` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### setFetchDirection

          public void setFetchDirection(int direction)
                                 throws java.sql.SQLException

      Specified by:
        `setFetchDirection` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### setFetchSize

          public void setFetchSize(int rows)
                            throws java.sql.SQLException

      Specified by:
        `setFetchSize` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### setMaxFieldSize

          public void setMaxFieldSize(int max)
                               throws java.sql.SQLException

      Specified by:
        `setMaxFieldSize` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### setMaxRows

          public void setMaxRows(int max)
                          throws java.sql.SQLException

      Specified by:
        `setMaxRows` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### setPoolable

          public void setPoolable(boolean poolable)
                           throws java.sql.SQLException

      Specified by:
        `setPoolable` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### setQueryTimeout

          public void setQueryTimeout(int seconds)
                               throws java.sql.SQLException

      Specified by:
        `setQueryTimeout` in interface `java.sql.Statement`
      Throws:
        `java.sql.SQLException`

    - #### toString

          public java.lang.String toString()

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

    - #### unwrap

          public <T> T unwrap(java.lang.Class<T> iface)
                   throws java.sql.SQLException

      Specified by:
        `unwrap` in interface `java.sql.Wrapper`
      Throws:
        `java.sql.SQLException`

Copyright © 2000-2019 Apache Software Foundation. All Rights Reserved.