Class V10Statement

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

public class V10Statement extends AbstractFbWireStatement implements FbWireStatement
Since:
3.0
Author:
Mark Rotteveel
  • Constructor Details

    • V10Statement

      public V10Statement(FbWireDatabase database)
      Creates a new instance of V10Statement for the specified database.
      Parameters:
      database - FbWireDatabase implementation
  • Method Details

    • getSqlInfo

      public byte[] getSqlInfo(byte[] requestItems, int bufferLength) throws 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:
      SQLException
    • sendInfoSql

      protected void sendInfoSql(byte[] requestItems, int bufferLength) throws IOException, SQLException
      Sends the info sql request to the database
      Parameters:
      requestItems - Info request items
      bufferLength - Requested response buffer length
      Throws:
      IOException
      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 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:
      SQLException
    • doFreePacket

      protected void doFreePacket(int option) throws SQLException, IOException
      Handles sending the free statement packet and associated state changes on this statement
      Parameters:
      option - Free statement option
      Throws:
      SQLException
      IOException
    • sendFree

      protected void sendFree(int option) throws IOException, SQLException
      Sends the free statement to the database
      Parameters:
      option - Free statement option
      Throws:
      IOException
      SQLException
    • processFreeResponse

      protected void processFreeResponse(Response response)
      Processes the response to the free statement.
      Parameters:
      response - Response object
    • prepare

      public void prepare(String statementText) throws 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:
      SQLException - If a database access error occurs, or this statement is currently executing a query.
    • sendPrepare

      protected void sendPrepare(String statementText) throws SQLException, IOException
      Sends the statement prepare to the connection.
      Parameters:
      statementText - Statement
      Throws:
      SQLException
      IOException
    • processPrepareResponse

      protected void processPrepareResponse(GenericResponse genericResponse) throws SQLException
      Processes the prepare response from the server.
      Parameters:
      genericResponse - GenericResponse
      Throws:
      SQLException
    • setCursorName

      public void setCursorName(String cursorName) throws 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:
      SQLException - If this statement is closed, TODO: Other reasons (eg cursor open)?
    • execute

      public void execute(RowValue parameters) throws 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:
      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 IOException, SQLException
      Sends the execute (for op_execute or op_execute2) to the database.
      Parameters:
      operation - Operation (op_execute or op_execute2)
      parameters - Parameters
      Throws:
      IOException
      SQLException
    • processExecuteSingletonResponse

      protected void processExecuteSingletonResponse(SqlResponse sqlResponse) throws SQLException, IOException
      Process the execute response for statements with a singleton response (op_execute2; stored procedures).
      Parameters:
      sqlResponse - SQL response object
      Throws:
      SQLException
      IOException
    • processExecuteResponse

      protected void processExecuteResponse(GenericResponse genericResponse)
      Process the execute response.
      Parameters:
      genericResponse - Generic response object
    • fetchRows

      public void fetchRows(int fetchSize) throws 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:
      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 IOException, SQLException
      Process the fetch response by reading the returned rows and queuing them.
      Throws:
      IOException
      SQLException
    • sendFetch

      protected void sendFetch(int fetchSize) throws SQLException, IOException
      Sends the fetch request to the database.
      Parameters:
      fetchSize - Number of rows to fetch.
      Throws:
      SQLException
      IOException
    • readSqlData

      protected RowValue readSqlData() throws SQLException, IOException
      Reads a single row from the database.
      Returns:
      Row as a RowValue
      Throws:
      SQLException
      IOException
    • readColumnData

      protected byte[] readColumnData(XdrInputStream xdrIn, int len) throws IOException
      Throws:
      IOException
    • writeSqlData

      protected void writeSqlData(RowDescriptor rowDescriptor, RowValue fieldValues) throws IOException, SQLException
      Write a set of SQL data from a RowValue.
      Parameters:
      rowDescriptor - The row descriptor
      fieldValues - The List containing the SQL data to be written
      Throws:
      IOException - if an error occurs while writing to the underlying output stream
      SQLException
    • writeColumnData

      protected void writeColumnData(XdrOutputStream xdrOut, int len, byte[] buffer, int fieldType) throws IOException
      Throws:
      IOException
    • sendAllocate

      protected void sendAllocate() throws SQLException, IOException
      Sends the allocate request to the server.
      Throws:
      SQLException
      IOException
    • processAllocateResponse

      protected void processAllocateResponse(GenericResponse response) throws SQLException
      Processes the allocate response from the server.
      Parameters:
      response - GenericResponse
      Throws:
      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