org.firebirdsql.gds.ng.wire.version10

## Class V10Statement

- java.lang.Object
- - org.firebirdsql.gds.ng.AbstractFbStatement
  - - org.firebirdsql.gds.ng.wire.AbstractFbWireStatement
    - - org.firebirdsql.gds.ng.wire.version10.V10Statement

- All Implemented Interfaces:
    FbStatement, ExceptionListenable, FbWireStatement
  Direct Known Subclasses:
    V11Statement

      public class V10Statement
      extends AbstractFbWireStatement
      implements FbWireStatement

  Since:
    3.0
  Author:
    Mark Rotteveel

- - ### Field Summary

    - ### Fields inherited from class org.firebirdsql.gds.ng.AbstractFbStatement

      `exceptionListenerDispatcher, statementListenerDispatcher`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `V10Statement(FbWireDatabase database)` Creates a new instance of V10Statement for the specified database.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `doFreePacket(int option)` Handles sending the free statement packet and associated state changes on this statement
    `void` | `execute(RowValue parameters)` Execute the statement.
    `void` | `fetchRows(int fetchSize)` Requests this statement to fetch the next `fetchSize` rows.
    `protected void` | `free(int option)` Frees the currently allocated statement (either close the cursor with `ISCConstants.DSQL_close` or drop the statement handle using `ISCConstants.DSQL_drop`.
    `int` | `getDefaultSqlInfoSize()`
    `int` | `getMaxSqlInfoSize()`
    `byte[]` | `getSqlInfo(byte[] requestItems, int bufferLength)` Request statement info.
    `void` | `prepare(java.lang.String statementText)` Prepare the statement text.
    `protected void` | `processAllocateResponse(GenericResponse response)` Processes the allocate response from the server.
    `protected void` | `processExecuteResponse(GenericResponse genericResponse)` Process the execute response.
    `protected void` | `processExecuteSingletonResponse(SqlResponse sqlResponse)` Process the execute response for statements with a singleton response (`op_execute2`; stored procedures).
    `protected void` | `processFetchResponse()` Process the fetch response by reading the returned rows and queuing them.
    `protected void` | `processFreeResponse(Response response)` Processes the response to the free statement.
    `protected byte[]` | `processInfoSqlResponse(GenericResponse response)` Processes the info sql response.
    `protected void` | `processPrepareResponse(GenericResponse genericResponse)` Processes the prepare response from the server.
    `protected byte[]` | `readColumnData(XdrInputStream xdrIn, int len)`
    `protected RowValue` | `readSqlData()` Reads a single row from the database.
    `protected void` | `sendAllocate()` Sends the allocate request to the server.
    `protected void` | `sendExecute(int operation, RowValue parameters)` Sends the execute (for `op_execute` or `op_execute2`) to the database.
    `protected void` | `sendFetch(int fetchSize)` Sends the fetch request to the database.
    `protected void` | `sendFree(int option)` Sends the free statement to the database
    `protected void` | `sendInfoSql(byte[] requestItems, int bufferLength)` Sends the info sql request to the database
    `protected void` | `sendPrepare(java.lang.String statementText)` Sends the statement prepare to the connection.
    `void` | `setCursorName(java.lang.String cursorName)` Sets the named cursor name for this statement.
    `protected void` | `writeColumnData(XdrOutputStream xdrOut, int len, byte[] buffer, int fieldType)`
    `protected void` | `writeSqlData(RowDescriptor rowDescriptor, RowValue fieldValues)` Write a set of SQL data from a list of `FieldValue` instances.

    - ### Methods inherited from class org.firebirdsql.gds.ng.wire.AbstractFbWireStatement

      `calculateBlr, calculateBlr, close, emptyRowDescriptor, getDatabase, getHandle, getXdrIn, getXdrOut, isValidTransactionClass, setHandle`

    - ### Methods inherited from class org.firebirdsql.gds.ng.AbstractFbStatement

      `addExceptionListener, addStatementListener, checkStatementValid, closeCursor, closeCursor, createExecutionPlanProcessor, createSqlCountProcessor, ensureClosedCursor, finalize, getExecutionPlan, getFieldDescriptor, getParameterDescriptionInfoRequestItems, getParameterDescriptor, getSqlCounts, getSqlInfo, getState, getStatementInfoRequestItems, getStatementWarningCallback, getSynchronizationObject, getTransaction, getTransactionListener, getType, hasFields, hasSingletonResult, isAllRowsFetched, isPrepareAllowed, parseStatementInfo, queueRowData, removeExceptionListener, removeStatementListener, reset, reset, resetAll, setAllRowsFetched, setFieldDescriptor, setParameterDescriptor, setTransaction, setType, switchState, validateParameters`

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

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

    - ### Methods inherited from interface org.firebirdsql.gds.ng.FbStatement

      `addStatementListener, close, closeCursor, closeCursor, emptyRowDescriptor, ensureClosedCursor, getDatabase, getExecutionPlan, getFieldDescriptor, getHandle, getParameterDescriptor, getSqlCounts, getSqlInfo, getState, getTransaction, getType, removeStatementListener, setTransaction`

    - ### Methods inherited from interface org.firebirdsql.gds.ng.listeners.ExceptionListenable

      `addExceptionListener, removeExceptionListener`

- - ### Constructor Detail

    - #### V10Statement

          public V10Statement(FbWireDatabase database)

      Creates a new instance of V10Statement for the specified database.
      Parameters:
        `database` - FbWireDatabase implementation

  - ### Method Detail

    - #### getSqlInfo

          public byte[] getSqlInfo(byte[] requestItems,
                                   int bufferLength)
                            throws java.sql.SQLException

      Description copied from interface: `FbStatement`
      Request statement info.
      Specified by:
        `getSqlInfo` in interface `FbStatement`
      Parameters:
        `requestItems` - Array of info items to request
        `bufferLength` - Response buffer length to use
      Returns:
        Response buffer
      Throws:
        `java.sql.SQLException`

    - #### sendInfoSql

          protected void sendInfoSql(byte[] requestItems,
                                     int bufferLength)
                              throws java.io.IOException,
                                     java.sql.SQLException

      Sends the info sql request to the database
      Parameters:
        `requestItems` - Info request items
        `bufferLength` - Requested response buffer length
      Throws:
        `java.io.IOException`
        `java.sql.SQLException`

    - #### processInfoSqlResponse

          protected byte[] processInfoSqlResponse(GenericResponse response)

      Processes the info sql response.
      Parameters:
        `response` - GenericResponse
      Returns:
        info sql response buffer

    - #### free

          protected void free(int option)
                       throws java.sql.SQLException

      Description copied from class: `AbstractFbStatement`
      Frees the currently allocated statement (either close the cursor with `ISCConstants.DSQL_close` or drop the statement handle using `ISCConstants.DSQL_drop`.
      Specified by:
        `free` in class `AbstractFbStatement`
      Parameters:
        `option` - Free option
      Throws:
        `java.sql.SQLException`

    - #### doFreePacket

          protected void doFreePacket(int option)
                               throws java.sql.SQLException,
                                      java.io.IOException

      Handles sending the free statement packet and associated state changes on this statement
      Parameters:
        `option` - Free statement option
      Throws:
        `java.sql.SQLException`
        `java.io.IOException`

    - #### sendFree

          protected void sendFree(int option)
                           throws java.io.IOException,
                                  java.sql.SQLException

      Sends the free statement to the database
      Parameters:
        `option` - Free statement option
      Throws:
        `java.io.IOException`
        `java.sql.SQLException`

    - #### processFreeResponse

          protected void processFreeResponse(Response response)

      Processes the response to the free statement.
      Parameters:
        `response` - Response object

    - #### prepare

          public void prepare(java.lang.String statementText)
                       throws java.sql.SQLException

      Description copied from interface: `FbStatement`
      Prepare the statement text.

      If this handle is in state `StatementState.NEW` then it will first allocate the statement.

      Specified by:
        `prepare` in interface `FbStatement`
      Parameters:
        `statementText` - Statement text
      Throws:
        `java.sql.SQLException` - If a database access error occurs, or this statement is currently executing a query.

    - #### sendPrepare

          protected void sendPrepare(java.lang.String statementText)
                              throws java.sql.SQLException,
                                     java.io.IOException

      Sends the statement prepare to the connection.
      Parameters:
        `statementText` - Statement
      Throws:
        `java.sql.SQLException`
        `java.io.IOException`

    - #### processPrepareResponse

          protected void processPrepareResponse(GenericResponse genericResponse)
                                         throws java.sql.SQLException

      Processes the prepare response from the server.
      Parameters:
        `genericResponse` - GenericResponse
      Throws:
        `java.sql.SQLException`

    - #### setCursorName

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

      Description copied from interface: `FbStatement`
      Sets the named cursor name for this statement.
      Specified by:
        `setCursorName` in interface `FbStatement`
      Parameters:
        `cursorName` - Name of the cursor
      Throws:
        `java.sql.SQLException` - If this statement is closed, TODO: Other reasons (eg cursor open)?

    - #### execute

          public void execute(RowValue parameters)
                       throws java.sql.SQLException

      Description copied from interface: `FbStatement`
      Execute the statement.
      Specified by:
        `execute` in interface `FbStatement`
      Parameters:
        `parameters` - The list of parameter values to use for execution.
      Throws:
        `java.sql.SQLException` - When the number of type of parameters does not match the types returned by `FbStatement.getParameterDescriptor()`, a parameter value was not set, or when an error occurred executing this statement.

    - #### sendExecute

          protected void sendExecute(int operation,
                                     RowValue parameters)
                              throws java.io.IOException,
                                     java.sql.SQLException

      Sends the execute (for `op_execute` or `op_execute2`) to the database.
      Parameters:
        `operation` - Operation (`op_execute` or `op_execute2`)
        `parameters` - Parameters
      Throws:
        `java.io.IOException`
        `java.sql.SQLException`

    - #### processExecuteSingletonResponse

          protected void processExecuteSingletonResponse(SqlResponse sqlResponse)
                                                  throws java.sql.SQLException,
                                                         java.io.IOException

      Process the execute response for statements with a singleton response (`op_execute2`; stored procedures).
      Parameters:
        `sqlResponse` - SQL response object
      Throws:
        `java.sql.SQLException`
        `java.io.IOException`

    - #### processExecuteResponse

          protected void processExecuteResponse(GenericResponse genericResponse)

      Process the execute response.
      Parameters:
        `genericResponse` - Generic response object

    - #### fetchRows

          public void fetchRows(int fetchSize)
                         throws java.sql.SQLException

      Description copied from interface: `FbStatement`
      Requests this statement to fetch the next `fetchSize` rows.

      Fetched rows are not returned from this method, but sent to the registered `StatementListener` instances.

      Specified by:
        `fetchRows` in interface `FbStatement`
      Parameters:
        `fetchSize` - Number of rows to fetch (must be `> 0`)
      Throws:
        `java.sql.SQLException` - For database access errors, when called on a closed statement, when no cursor is open or when the fetch size is not `> 0`.

    - #### processFetchResponse

          protected void processFetchResponse()
                                       throws java.io.IOException,
                                              java.sql.SQLException

      Process the fetch response by reading the returned rows and queuing them.
      Throws:
        `java.io.IOException`
        `java.sql.SQLException`

    - #### sendFetch

          protected void sendFetch(int fetchSize)
                            throws java.sql.SQLException,
                                   java.io.IOException

      Sends the fetch request to the database.
      Parameters:
        `fetchSize` - Number of rows to fetch.
      Throws:
        `java.sql.SQLException`
        `java.io.IOException`

    - #### readSqlData

          protected RowValue readSqlData()
                                  throws java.sql.SQLException,
                                         java.io.IOException

      Reads a single row from the database.
      Returns:
        Row as a list of `FieldValue` instances
      Throws:
        `java.sql.SQLException`
        `java.io.IOException`

    - #### readColumnData

          protected byte[] readColumnData(XdrInputStream xdrIn,
                                          int len)
                                   throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### writeSqlData

          protected void writeSqlData(RowDescriptor rowDescriptor,
                                      RowValue fieldValues)
                               throws java.io.IOException,
                                      java.sql.SQLException

      Write a set of SQL data from a list of `FieldValue` instances.
      Parameters:
        `rowDescriptor` - The row descriptor
        `fieldValues` - The List containing the SQL data to be written
      Throws:
        `java.io.IOException` - if an error occurs while writing to the underlying output stream
        `java.sql.SQLException`

    - #### writeColumnData

          protected void writeColumnData(XdrOutputStream xdrOut,
                                         int len,
                                         byte[] buffer,
                                         int fieldType)
                                  throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### sendAllocate

          protected void sendAllocate()
                               throws java.sql.SQLException,
                                      java.io.IOException

      Sends the allocate request to the server.
      Throws:
        `java.sql.SQLException`
        `java.io.IOException`

    - #### processAllocateResponse

          protected void processAllocateResponse(GenericResponse response)
                                          throws java.sql.SQLException

      Processes the allocate response from the server.
      Parameters:
        `response` - GenericResponse
      Throws:
        `java.sql.SQLException`

    - #### getDefaultSqlInfoSize

          public int getDefaultSqlInfoSize()

      Specified by:
        `getDefaultSqlInfoSize` in interface `FbStatement`
      Returns:
        The default size to use for the sql info buffer

    - #### getMaxSqlInfoSize

          public int getMaxSqlInfoSize()

      Specified by:
        `getMaxSqlInfoSize` in interface `FbStatement`
      Returns:
        The maximum size to use for the sql info buffer

Copyright © 2001-2021 Jaybird (Firebird JDBC/JCA) team. All rights reserved.