org.firebirdsql.jdbc

## Class AbstractPreparedStatement

- java.lang.Object
- - org.firebirdsql.jdbc.FBStatement
  - - org.firebirdsql.jdbc.AbstractPreparedStatement

- All Implemented Interfaces:
    java.lang.AutoCloseable, java.sql.PreparedStatement, java.sql.Statement, java.sql.Wrapper, FirebirdPreparedStatement, FirebirdStatement, Synchronizable
  Direct Known Subclasses:
    FBPreparedStatement

      public abstract class AbstractPreparedStatement
      extends FBStatement
      implements FirebirdPreparedStatement

  Implementation of `PreparedStatement`interface. This class contains all methods from the JDBC 2.0 specification.
  Author:
    David Jencks, Roman Rokytskyy, Mark Rotteveel

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.firebirdsql.jdbc.FBStatement

      `FBStatement.StatementResult`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.util.List<java.lang.Object>` | `batchList`
    `protected boolean[]` | `isParamSet`
    `static java.lang.String` | `METHOD_NOT_SUPPORTED`

    - ### Fields inherited from class org.firebirdsql.jdbc.FBStatement

      `completed, connection, currentStatementResult, fbStatement, fetchSize, firstWarning, gdsHelper, isSingletonResult, jdbcVersionSupport, maxRows, specialResult, statementListener`

    - ### Fields inherited from interface org.firebirdsql.jdbc.FirebirdPreparedStatement

      `TYPE_COMMIT, TYPE_DDL, TYPE_DELETE, TYPE_EXEC_PROCEDURE, TYPE_GET_SEGMENT, TYPE_INSERT, TYPE_PUT_SEGMENT, TYPE_ROLLBACK, TYPE_SELECT, TYPE_SELECT_FOR_UPDATE, TYPE_SET_GENERATOR, TYPE_START_TRANS, TYPE_UPDATE`

    - ### 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
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractPreparedStatement(GDSHelper c, int rsType, int rsConcurrency, int rsHoldability, FBObjectListener.StatementListener statementListener, FBObjectListener.BlobListener blobListener)` Create instance of this class for the specified result set type and concurrency.
    `protected` | `AbstractPreparedStatement(GDSHelper c, java.lang.String sql, int rsType, int rsConcurrency, int rsHoldability, FBObjectListener.StatementListener statementListener, FBObjectListener.BlobListener blobListener, boolean metaDataQuery, boolean standaloneStatement, boolean generatedKeys)` Create instance of this class and prepare SQL statement.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addBatch()` Adds a set of parameters to this `PreparedStatement` object's batch of commands.
    `void` | `addBatch(java.lang.String sql)` Adds an SQL command to the current batch of commmands for this `Statement` object.
    `void` | `clearBatch()` Makes the set of commands in the current batch empty.
    `void` | `clearParameters()` Clears the current parameter values immediately.
    `void` | `completeStatement(CompletionReason reason)`
    `boolean` | `execute()` Executes any kind of SQL statement.
    `boolean` | `execute(java.lang.String sql)` Executes an SQL statement that may return multiple results.
    `boolean` | `execute(java.lang.String sql, int autoGeneratedKeys)` Executes the given SQL statement, which may return multiple results, and signals the driver that any auto-generated keys should be made available for retrieval.
    `boolean` | `execute(java.lang.String sql, int[] columnIndexes)` Executes the given SQL statement, which may return multiple results, and signals the driver that the auto-generated keys indicated in the given array should be made available for retrieval.
    `boolean` | `execute(java.lang.String sql, java.lang.String[] columnNames)` Executes the given SQL statement, which may return multiple results, and signals the driver that the auto-generated keys indicated in the given array should be made available for retrieval.
    `protected java.util.List<java.lang.Long>` | `executeBatchInternal()`
    `long` | `executeLargeUpdate()`
    `java.sql.ResultSet` | `executeQuery()` Executes the SQL query in this `PreparedStatement` object and returns the result set generated by the query.
    `java.sql.ResultSet` | `executeQuery(java.lang.String sql)` Executes an SQL statement that returns a single `ResultSet` object.
    `int` | `executeUpdate()` Executes the SQL INSERT, UPDATE or DELETE statement in this `PreparedStatement` object.
    `int` | `executeUpdate(java.lang.String sql)` Executes an SQL `INSERT`, `UPDATE` or `DELETE` statement.
    `int` | `executeUpdate(java.lang.String sql, int autoGeneratedKeys)` Executes the given SQL statement and signals the driver with the given flag about whether the auto-generated keys produced by this `Statement` object should be made available for retrieval.
    `int` | `executeUpdate(java.lang.String sql, int[] columnIndex)` Executes the given SQL statement and signals the driver that the auto-generated keys indicated in the given array should be made available for retrieval.
    `int` | `executeUpdate(java.lang.String sql, java.lang.String[] columnNames)` Executes the given SQL statement and signals the driver that the auto-generated keys indicated in the given array should be made available for retrieval.
    `java.lang.String` | `getExecutionPlan()` Get the execution plan of this PreparedStatement
    `protected FBField` | `getField(int columnIndex)` Factory method for the field access objects
    `FirebirdParameterMetaData` | `getFirebirdParameterMetaData()`
    `java.sql.ResultSetMetaData` | `getMetaData()` Retrieves a `ResultSetMetaData` object that contains information about the columns of the `ResultSet` object that will be returned when this `PreparedStatement` object is executed.
    `protected FieldDescriptor` | `getParameterDescriptor(int columnIndex)` Returns the `FieldDescriptor` of the specified parameter.
    `java.sql.ParameterMetaData` | `getParameterMetaData()`
    `int` | `getStatementType()` Get the statement type of this PreparedStatement.
    `protected boolean` | `internalExecute(boolean sendOutParams)` Execute this statement.
    `protected boolean` | `isGeneratedKeyQuery()`
    `protected void` | `notifyStatementCompleted(boolean success)`
    `protected void` | `prepareFixedStatement(java.lang.String sql)` Prepare fixed statement and initialize parameters.
    `void` | `setArray(int i, java.sql.Array x)` Sets the designated parameter to the given `Array` object.
    `void` | `setAsciiStream(int parameterIndex, java.io.InputStream x)`
    `void` | `setAsciiStream(int parameterIndex, java.io.InputStream x, int length)` Sets the designated parameter to the given input stream, which will have the specified number of bytes.
    `void` | `setAsciiStream(int parameterIndex, java.io.InputStream x, long length)`
    `void` | `setBigDecimal(int parameterIndex, java.math.BigDecimal x)` Sets the designated parameter to the given BigDecimal
    `void` | `setBinaryStream(int parameterIndex, java.io.InputStream inputStream)`
    `void` | `setBinaryStream(int parameterIndex, java.io.InputStream inputStream, int length)`
    `void` | `setBinaryStream(int parameterIndex, java.io.InputStream inputStream, long length)`
    `void` | `setBlob(int parameterIndex, java.sql.Blob blob)` Sets the designated parameter to the given `Blob` object.
    `void` | `setBlob(int parameterIndex, java.io.InputStream inputStream)`
    `void` | `setBlob(int parameterIndex, java.io.InputStream inputStream, long length)`
    `void` | `setBoolean(int parameterIndex, boolean x)` Sets the designated parameter to the given boolean value.
    `void` | `setByte(int parameterIndex, byte x)` Sets the designated parameter to the given byte value.
    `void` | `setBytes(int parameterIndex, byte[] x)` Set the designated parameter to the given byte array.
    `void` | `setCharacterStream(int parameterIndex, java.io.Reader reader)`
    `void` | `setCharacterStream(int parameterIndex, java.io.Reader reader, int length)`
    `void` | `setCharacterStream(int parameterIndex, java.io.Reader reader, long length)`
    `void` | `setClob(int parameterIndex, java.sql.Clob clob)` Sets the designated parameter to the given `Clob` object.
    `void` | `setClob(int parameterIndex, java.io.Reader reader)`
    `void` | `setClob(int parameterIndex, java.io.Reader reader, long length)`
    `void` | `setDate(int parameterIndex, java.sql.Date x)` Sets the designated parameter to the given date value.
    `void` | `setDate(int parameterIndex, java.sql.Date x, java.util.Calendar cal)` Sets the designated parameter to the given `java.sql.Date` value, using the given `Calendar` object.
    `void` | `setDouble(int parameterIndex, double x)` Sets the designated parameter to the given double value.
    `void` | `setFloat(int parameterIndex, float x)` Sets the designated parameter to the given floate value.
    `void` | `setInt(int parameterIndex, int x)` Sets the designated parameter to the given int value.
    `void` | `setLong(int parameterIndex, long x)` Sets the designated parameter to the given long value.
    `void` | `setNCharacterStream(int parameterIndex, java.io.Reader value)`
    `void` | `setNCharacterStream(int parameterIndex, java.io.Reader value, long length)`
    `void` | `setNClob(int parameterIndex, java.sql.NClob value)`
    `void` | `setNClob(int parameterIndex, java.io.Reader reader)`
    `void` | `setNClob(int parameterIndex, java.io.Reader reader, long length)`
    `void` | `setNString(int parameterIndex, java.lang.String value)`
    `void` | `setNull(int parameterIndex, int sqlType)` Sets the designated parameter to SQL `NULL`.
    `void` | `setNull(int parameterIndex, int sqlType, java.lang.String typeName)` Sets the designated parameter to SQL `NULL`.
    `void` | `setObject(int parameterIndex, java.lang.Object x)` Sets the value of the designated parameter with the given object.
    `void` | `setObject(int parameterIndex, java.lang.Object x, int targetSqlType)` Sets the value of the designated parameter with the given object.
    `void` | `setObject(int parameterIndex, java.lang.Object x, int targetSqlType, int scale)` Sets the value of the designated parameter with the given object.
    `void` | `setRef(int i, java.sql.Ref x)` Sets the designated parameter to the given `REF(<structured-type>)` value.
    `void` | `setRowId(int parameterIndex, java.sql.RowId x)`
    `void` | `setShort(int parameterIndex, short x)` Sets the designated parameter to the given short value.
    `void` | `setSQLXML(int parameterIndex, java.sql.SQLXML xmlObject)`
    `void` | `setString(int parameterIndex, java.lang.String x)` Sets the designated parameter to the given String value.
    `void` | `setStringForced(int parameterIndex, java.lang.String x)` Sets the designated parameter to the given String value.
    `void` | `setTime(int parameterIndex, java.sql.Time x)` Sets the designated parameter to the given Time value.
    `void` | `setTime(int parameterIndex, java.sql.Time x, java.util.Calendar cal)` Sets the designated parameter to the given `java.sql.Time` value, using the given `Calendar` object.
    `void` | `setTimestamp(int parameterIndex, java.sql.Timestamp x)` Sets the designated parameter to the given Timestamp value.
    `void` | `setTimestamp(int parameterIndex, java.sql.Timestamp x, java.util.Calendar cal)` Sets the designated parameter to the given `java.sql.Timestamp` value, using the given `Calendar` object.
    `void` | `setUnicodeStream(int parameterIndex, java.io.InputStream x, int length)` Deprecated.
    `void` | `setURL(int parameterIndex, java.net.URL url)`

    - ### Methods inherited from class org.firebirdsql.jdbc.FBStatement

      `addWarning, cancel, checkValidity, clearWarnings, close, closeOnCompletion, completeStatement, createStatementListener, enquoteIdentifier, enquoteLiteral, enquoteNCharLiteral, equals, executeBatch, executeImpl, executeLargeBatch, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, finalize, forgetResultSet, getConnection, getCurrentResultSet, getDeletedRowsCount, getFetchDirection, getFetchSize, getGeneratedKeys, getInsertedRowsCount, getLargeMaxRows, getLargeUpdateCount, getLastExecutionPlan, getLocalStatementId, getMaxFieldSize, getMaxRows, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSet, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getSynchronizationObject, getUpdateCount, getUpdatedRowsCount, getWarnings, hashCode, hasOpenResultSet, internalExecute, isClosed, isCloseOnCompletion, isExecuteProcedureStatement, isPoolable, isSimpleIdentifier, isValid, isWrapperFor, nativeSQL, notifyStatementCompleted, notifyStatementStarted, notifyStatementStarted, setCursorName, setEscapeProcessing, setFetchDirection, setFetchSize, setLargeMaxRows, setMaxFieldSize, setMaxRows, setPoolable, setQueryTimeout, toArray, toLargeArray, unwrap`

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

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

    - ### Methods inherited from interface org.firebirdsql.jdbc.FirebirdStatement

      `getCurrentResultSet, getDeletedRowsCount, getInsertedRowsCount, getLastExecutionPlan, getLocalStatementId, getUpdatedRowsCount, hasOpenResultSet, isClosed, isValid`

    - ### Methods inherited from interface java.sql.Statement

      `cancel, clearWarnings, close, closeOnCompletion, executeBatch, getConnection, getFetchDirection, getFetchSize, getGeneratedKeys, getMaxFieldSize, getMaxRows, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getUpdateCount, getWarnings, isCloseOnCompletion, isPoolable, setCursorName, setEscapeProcessing, setFetchDirection, setFetchSize, setMaxFieldSize, setMaxRows, setPoolable, setQueryTimeout`

    - ### Methods inherited from interface java.sql.Wrapper

      `isWrapperFor, unwrap`

- - ### Field Detail

    - #### METHOD_NOT_SUPPORTED

          public static final java.lang.String METHOD_NOT_SUPPORTED

      See Also:
        Constant Field Values

    - #### isParamSet

          protected boolean[] isParamSet

    - #### batchList

          protected final java.util.List<java.lang.Object> batchList

  - ### Constructor Detail

    - #### AbstractPreparedStatement

          protected AbstractPreparedStatement(GDSHelper c,
                                   int rsType,
                                   int rsConcurrency,
                                   int rsHoldability,
                                   FBObjectListener.StatementListener statementListener,
                                   FBObjectListener.BlobListener blobListener)
                                       throws java.sql.SQLException

      Create instance of this class for the specified result set type and concurrency. This constructor is used only in `FBCallableStatement` since the statement is prepared right before the execution.
      Parameters:
        `c` - instance of `GDSHelper` that will be used to perform all database activities.
        `rsType` - desired result set type.
        `rsConcurrency` - desired result set concurrency.
        `statementListener` - statement listener that will be notified about the statement start, close and completion.
      Throws:
        `java.sql.SQLException` - if something went wrong.

    - #### AbstractPreparedStatement

          protected AbstractPreparedStatement(GDSHelper c,
                                   java.lang.String sql,
                                   int rsType,
                                   int rsConcurrency,
                                   int rsHoldability,
                                   FBObjectListener.StatementListener statementListener,
                                   FBObjectListener.BlobListener blobListener,
                                   boolean metaDataQuery,
                                   boolean standaloneStatement,
                                   boolean generatedKeys)
                                       throws java.sql.SQLException

      Create instance of this class and prepare SQL statement.
      Parameters:
        `c` - connection to be used.
        `sql` - SQL statement to prepare.
        `rsType` - type of result set to create.
        `rsConcurrency` - result set concurrency.
      Throws:
        `java.sql.SQLException` - if something went wrong.

  - ### Method Detail

    - #### completeStatement

          public void completeStatement(CompletionReason reason)
                                 throws java.sql.SQLException

      Overrides:
        `completeStatement` in class `FBStatement`
      Throws:
        `java.sql.SQLException`

    - #### notifyStatementCompleted

          protected void notifyStatementCompleted(boolean success)
                                           throws java.sql.SQLException

      Overrides:
        `notifyStatementCompleted` in class `FBStatement`
      Throws:
        `java.sql.SQLException`

    - #### executeQuery

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

      Executes the SQL query in this `PreparedStatement` object and returns the result set generated by the query.
      Specified by:
        `executeQuery` in interface `java.sql.PreparedStatement`
      Returns:
        a `ResultSet` object that contains the data produced by the query; never `null`
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### executeUpdate

          public int executeUpdate()
                            throws java.sql.SQLException

      Executes the SQL INSERT, UPDATE or DELETE statement in this `PreparedStatement` object. In addition, SQL statements that return nothing, such as SQL DDL statements, can be executed.
      Specified by:
        `executeUpdate` in interface `java.sql.PreparedStatement`
      Returns:
        either the row count for INSERT, UPDATE or DELETE statements; or 0 for SQL statements that return nothing
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getFirebirdParameterMetaData

          public FirebirdParameterMetaData getFirebirdParameterMetaData()
                                                                 throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setNull

          public void setNull(int parameterIndex,
                     int sqlType)
                       throws java.sql.SQLException

      Sets the designated parameter to SQL `NULL`.

      Note: You must specify the parameter's SQL type.

      Specified by:
        `setNull` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `sqlType` - the SQL type code defined in `java.sql.Types`
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### setBinaryStream

          public void setBinaryStream(int parameterIndex,
                             java.io.InputStream inputStream,
                             int length)
                               throws java.sql.SQLException

      Specified by:
        `setBinaryStream` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setBinaryStream

          public void setBinaryStream(int parameterIndex,
                             java.io.InputStream inputStream,
                             long length)
                               throws java.sql.SQLException

      Specified by:
        `setBinaryStream` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setBinaryStream

          public void setBinaryStream(int parameterIndex,
                             java.io.InputStream inputStream)
                               throws java.sql.SQLException

      Specified by:
        `setBinaryStream` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setBytes

          public void setBytes(int parameterIndex,
                      byte[] x)
                        throws java.sql.SQLException

      Set the designated parameter to the given byte array.
      Specified by:
        `setBytes` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - The byte array to be set
      Throws:
        `java.sql.SQLException` - if a database access occurs

    - #### setBoolean

          public void setBoolean(int parameterIndex,
                        boolean x)
                          throws java.sql.SQLException

      Sets the designated parameter to the given boolean value.
      Specified by:
        `setBoolean` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - The boolean value to be set
      Throws:
        `java.sql.SQLException` - if a database access occurs

    - #### setByte

          public void setByte(int parameterIndex,
                     byte x)
                       throws java.sql.SQLException

      Sets the designated parameter to the given byte value.
      Specified by:
        `setByte` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - The byte value to be set
      Throws:
        `java.sql.SQLException` - if a database access occurs

    - #### setDate

          public void setDate(int parameterIndex,
                     java.sql.Date x)
                       throws java.sql.SQLException

      Sets the designated parameter to the given date value.
      Specified by:
        `setDate` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - The date value to be set
      Throws:
        `java.sql.SQLException` - if a database access occurs

    - #### setDouble

          public void setDouble(int parameterIndex,
                       double x)
                         throws java.sql.SQLException

      Sets the designated parameter to the given double value.
      Specified by:
        `setDouble` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - The double value to be set
      Throws:
        `java.sql.SQLException` - if a database access occurs

    - #### setFloat

          public void setFloat(int parameterIndex,
                      float x)
                        throws java.sql.SQLException

      Sets the designated parameter to the given floate value.
      Specified by:
        `setFloat` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - The float value to be set
      Throws:
        `java.sql.SQLException` - if a database access occurs

    - #### setInt

          public void setInt(int parameterIndex,
                    int x)
                      throws java.sql.SQLException

      Sets the designated parameter to the given int value.
      Specified by:
        `setInt` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - The int value to be set
      Throws:
        `java.sql.SQLException` - if a database access occurs

    - #### setLong

          public void setLong(int parameterIndex,
                     long x)
                       throws java.sql.SQLException

      Sets the designated parameter to the given long value.
      Specified by:
        `setLong` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - The long value to be set
      Throws:
        `java.sql.SQLException` - if a database access occurs

    - #### setObject

          public void setObject(int parameterIndex,
                       java.lang.Object x)
                         throws java.sql.SQLException

      Sets the value of the designated parameter with the given object.
      Specified by:
        `setObject` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - the object containing the parameter value
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### setShort

          public void setShort(int parameterIndex,
                      short x)
                        throws java.sql.SQLException

      Sets the designated parameter to the given short value.
      Specified by:
        `setShort` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - The short value to be set
      Throws:
        `java.sql.SQLException` - if a database access occurs

    - #### setString

          public void setString(int parameterIndex,
                       java.lang.String x)
                         throws java.sql.SQLException

      Sets the designated parameter to the given String value.
      Specified by:
        `setString` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - The String value to be set
      Throws:
        `java.sql.SQLException` - if a database access occurs

    - #### setStringForced

          public void setStringForced(int parameterIndex,
                             java.lang.String x)
                               throws java.sql.SQLException

      Sets the designated parameter to the given String value. This is a workaround for the ambiguous "operation was cancelled" response from the server for when an oversized string is set for a limited-size field. This method sets the string parameter without checking size constraints.
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - The String value to be set
      Throws:
        `java.sql.SQLException` - if a database access occurs

    - #### setTime

          public void setTime(int parameterIndex,
                     java.sql.Time x)
                       throws java.sql.SQLException

      Sets the designated parameter to the given Time value.
      Specified by:
        `setTime` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - The Time value to be set
      Throws:
        `java.sql.SQLException` - if a database access occurs

    - #### setTimestamp

          public void setTimestamp(int parameterIndex,
                          java.sql.Timestamp x)
                            throws java.sql.SQLException

      Sets the designated parameter to the given Timestamp value.
      Specified by:
        `setTimestamp` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - The Timestamp value to be set
      Throws:
        `java.sql.SQLException` - if a database access occurs

    - #### setBigDecimal

          public void setBigDecimal(int parameterIndex,
                           java.math.BigDecimal x)
                             throws java.sql.SQLException

      Sets the designated parameter to the given BigDecimal
      Specified by:
        `setBigDecimal` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - The first parameter is 1, second is 2, ...
        `x` - The BigDecimal to be set as a parameter
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getParameterDescriptor

          protected FieldDescriptor getParameterDescriptor(int columnIndex)

      Returns the `FieldDescriptor` of the specified parameter.
      Parameters:
        `columnIndex` - 1-based index of the parameter
      Returns:
        Field descriptor

    - #### getField

          protected FBField getField(int columnIndex)
                              throws java.sql.SQLException

      Factory method for the field access objects
      Throws:
        `java.sql.SQLException`

    - #### setAsciiStream

          public final void setAsciiStream(int parameterIndex,
                            java.io.InputStream x,
                            int length)
                                    throws java.sql.SQLException

      Sets the designated parameter to the given input stream, which will have the specified number of bytes. When a very large ASCII value is input to a `LONGVARCHAR` parameter, it may be more practical to send it via a `java.io.InputStream`. Data will be read from the stream as needed until end-of-file is reached. The JDBC driver will do any necessary conversion from ASCII to the database char format.

      Note: This stream object can either be a standard Java stream object or your own subclass that implements the standard interface.

      Specified by:
        `setAsciiStream` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - the Java input stream that contains the ASCII parameter value
        `length` - the number of bytes in the stream
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### setAsciiStream

          public final void setAsciiStream(int parameterIndex,
                            java.io.InputStream x,
                            long length)
                                    throws java.sql.SQLException

      Specified by:
        `setAsciiStream` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setAsciiStream

          public final void setAsciiStream(int parameterIndex,
                            java.io.InputStream x)
                                    throws java.sql.SQLException

      Specified by:
        `setAsciiStream` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setUnicodeStream

          @Deprecated
          public void setUnicodeStream(int parameterIndex,
                                         java.io.InputStream x,
                                         int length)
                                throws java.sql.SQLException

      Deprecated.
      Method is no longer supported since Jaybird 3.0.

      For old behavior use `setBinaryStream(int, InputStream, int)`. For JDBC suggested behavior, use `setCharacterStream(int, Reader, int)`.

      Specified by:
        `setUnicodeStream` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLFeatureNotSupportedException` - Always
        `java.sql.SQLException`

    - #### setURL

          public void setURL(int parameterIndex,
                    java.net.URL url)
                      throws java.sql.SQLException

      Specified by:
        `setURL` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setNCharacterStream

          public void setNCharacterStream(int parameterIndex,
                                 java.io.Reader value,
                                 long length)
                                   throws java.sql.SQLException

      Implementation note: This method behaves exactly the same as `setCharacterStream(int, Reader, long)`.

      Specified by:
        `setNCharacterStream` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setNCharacterStream

          public void setNCharacterStream(int parameterIndex,
                                 java.io.Reader value)
                                   throws java.sql.SQLException

      Implementation note: This method behaves exactly the same as `setCharacterStream(int, Reader)`.

      Specified by:
        `setNCharacterStream` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setNClob

          public void setNClob(int parameterIndex,
                      java.io.Reader reader,
                      long length)
                        throws java.sql.SQLException

      Implementation note: This method behaves exactly the same as `setClob(int, Reader, long)`.

      Specified by:
        `setNClob` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setNClob

          public void setNClob(int parameterIndex,
                      java.io.Reader reader)
                        throws java.sql.SQLException

      Implementation note: This method behaves exactly the same as `setClob(int, Reader)`.

      Specified by:
        `setNClob` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setNString

          public void setNString(int parameterIndex,
                        java.lang.String value)
                          throws java.sql.SQLException

      Implementation note: This method behaves exactly the same as `setString(int, String)`.

      Specified by:
        `setNString` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### clearParameters

          public void clearParameters()
                               throws java.sql.SQLException

      Clears the current parameter values immediately.

      In general, parameter values remain in force for repeated use of a statement. Setting a parameter value automatically clears its previous value. However, in some cases it is useful to immediately release the resources used by the current parameter values; this can be done by calling the method `clearParameters`.

      Specified by:
        `clearParameters` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### setObject

          public void setObject(int parameterIndex,
                       java.lang.Object x,
                       int targetSqlType,
                       int scale)
                         throws java.sql.SQLException

      Sets the value of the designated parameter with the given object. The second argument must be an object type; for integral values, the `java.lang` equivalent objects should be used.

      The given Java object will be converted to the given targetSqlType before being sent to the database. If the object has a custom mapping (is of a class implementing the interface `SQLData`), the JDBC driver should call the method `SQLData.writeSQL` to write it to the SQL data stream. If, on the other hand, the object is of a class implementing Ref, Blob, Clob, Struct, or Array, the driver should pass it to the database as a value of the corresponding SQL type.

      Note that this method may be used to pass datatabase- specific abstract data types.

      Specified by:
        `setObject` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - the object containing the input parameter value
        `targetSqlType` - the SQL type (as defined in java.sql.Types) to be sent to the database. The scale argument may further qualify this type.
        `scale` - for java.sql.Types.DECIMAL or java.sql.Types.NUMERIC types, this is the number of digits after the decimal point. For all other types, this value will be ignored.
      Throws:
        `java.sql.SQLException` - if a database access error occurs
      See Also:
        `Types`

    - #### setObject

          public void setObject(int parameterIndex,
                       java.lang.Object x,
                       int targetSqlType)
                         throws java.sql.SQLException

      Sets the value of the designated parameter with the given object. This method is like the method `setObject` above, except that it assumes a scale of zero.
      Specified by:
        `setObject` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - the object containing the input parameter value
        `targetSqlType` - the SQL type (as defined in java.sql.Types) to be sent to the database
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### execute

          public boolean execute()
                          throws java.sql.SQLException

      Executes any kind of SQL statement. Some prepared statements return multiple results; the `execute` method handles these complex statements as well as the simpler form of statements handled by the methods `executeQuery` and `executeUpdate`.
      Specified by:
        `execute` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException` - if a database access error occurs
      See Also:
        `Statement.execute(java.lang.String)`

    - #### internalExecute

          protected boolean internalExecute(boolean sendOutParams)
                                     throws java.sql.SQLException

      Execute this statement. Method checks whether all parameters are set, flushes all "flushable" fields that might contain cached data and executes the statement.
      Parameters:
        `sendOutParams` - Determines if the XSQLDA structure should be sent to the database
      Returns:
        `true` if the statement has more result sets.
      Throws:
        `java.sql.SQLException`

    - #### isGeneratedKeyQuery

          protected boolean isGeneratedKeyQuery()

      Overrides:
        `isGeneratedKeyQuery` in class `FBStatement`
      Returns:
        `true` when the current statement is expected to return generated keys, `false` otherwise.

    - #### addBatch

          public void addBatch()
                        throws java.sql.SQLException

      Adds a set of parameters to this `PreparedStatement` object's batch of commands.
      Specified by:
        `addBatch` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException` - if a database access error occurs
      Since:
        1.2
      See Also:
        `Statement.addBatch(java.lang.String)`, What Is in the JDBC 2.0 API

    - #### clearBatch

          public void clearBatch()
                          throws java.sql.SQLException

      Makes the set of commands in the current batch empty. This method is optional.
      Specified by:
        `clearBatch` in interface `java.sql.Statement`
      Overrides:
        `clearBatch` in class `FBStatement`
      Throws:
        `java.sql.SQLException` - if a database access error occurs or the driver does not support batch statements
      Since:
        1.2
      See Also:
        What Is in the JDBC 2.0 API

    - #### executeBatchInternal

          protected java.util.List<java.lang.Long> executeBatchInternal()
                                                                 throws java.sql.SQLException

      Overrides:
        `executeBatchInternal` in class `FBStatement`
      Throws:
        `java.sql.SQLException`

    - #### setCharacterStream

          public void setCharacterStream(int parameterIndex,
                                java.io.Reader reader,
                                int length)
                                  throws java.sql.SQLException

      Specified by:
        `setCharacterStream` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setCharacterStream

          public void setCharacterStream(int parameterIndex,
                                java.io.Reader reader,
                                long length)
                                  throws java.sql.SQLException

      Specified by:
        `setCharacterStream` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setCharacterStream

          public void setCharacterStream(int parameterIndex,
                                java.io.Reader reader)
                                  throws java.sql.SQLException

      Specified by:
        `setCharacterStream` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setRef

          public void setRef(int i,
                    java.sql.Ref x)
                      throws java.sql.SQLException

      Sets the designated parameter to the given `REF(<structured-type>)` value.
      Specified by:
        `setRef` in interface `java.sql.PreparedStatement`
      Parameters:
        `i` - the first parameter is 1, the second is 2, ...
        `x` - an SQL `REF` value
      Throws:
        `java.sql.SQLException` - if a database access error occurs
      Since:
        1.2
      See Also:
        What Is in the JDBC 2.0 API

    - #### setBlob

          public void setBlob(int parameterIndex,
                     java.sql.Blob blob)
                       throws java.sql.SQLException

      Sets the designated parameter to the given `Blob` object.
      Specified by:
        `setBlob` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `blob` - a `Blob` object that maps an SQL `BLOB` value
      Throws:
        `java.sql.SQLException` - if a database access error occurs
      Since:
        1.2
      See Also:
        What Is in the JDBC 2.0 API

    - #### setBlob

          public void setBlob(int parameterIndex,
                     java.io.InputStream inputStream,
                     long length)
                       throws java.sql.SQLException

      Specified by:
        `setBlob` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setBlob

          public void setBlob(int parameterIndex,
                     java.io.InputStream inputStream)
                       throws java.sql.SQLException

      Specified by:
        `setBlob` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setClob

          public void setClob(int parameterIndex,
                     java.sql.Clob clob)
                       throws java.sql.SQLException

      Sets the designated parameter to the given `Clob` object.
      Specified by:
        `setClob` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `clob` - a `Clob` object that maps an SQL `CLOB` value
      Throws:
        `java.sql.SQLException` - if a database access error occurs
      Since:
        1.2

    - #### setClob

          public void setClob(int parameterIndex,
                     java.io.Reader reader,
                     long length)
                       throws java.sql.SQLException

      Specified by:
        `setClob` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setClob

          public void setClob(int parameterIndex,
                     java.io.Reader reader)
                       throws java.sql.SQLException

      Specified by:
        `setClob` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setArray

          public void setArray(int i,
                      java.sql.Array x)
                        throws java.sql.SQLException

      Sets the designated parameter to the given `Array` object. Sets an Array parameter.
      Specified by:
        `setArray` in interface `java.sql.PreparedStatement`
      Parameters:
        `i` - the first parameter is 1, the second is 2, ...
        `x` - an `Array` object that maps an SQL `ARRAY` value
      Throws:
        `java.sql.SQLException` - if a database access error occurs
      Since:
        1.2
      See Also:
        What Is in the JDBC 2.0 API

    - #### getMetaData

          public java.sql.ResultSetMetaData getMetaData()
                                                 throws java.sql.SQLException

      Retrieves a `ResultSetMetaData` object that contains information about the columns of the `ResultSet` object that will be returned when this `PreparedStatement` object is executed.

      Because a `PreparedStatement` object is precompiled, it is possible to know about the `ResultSet` object that it will return without having to execute it. Consequently, it is possible to invoke the method `getMetaData` on a `PreparedStatement` object rather than waiting to execute it and then invoking the `ResultSet.getMetaData` method on the `ResultSet` object that is returned.

      Specified by:
        `getMetaData` in interface `java.sql.PreparedStatement`
      Returns:
        the description of a `ResultSet` object's columns or `null` if the driver cannot return a `ResultSetMetaData` object
      Throws:
        `java.sql.SQLException` - if a database access error occurs or this method is called on a closed `PreparedStatement`
        `java.sql.SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### setDate

          public void setDate(int parameterIndex,
                     java.sql.Date x,
                     java.util.Calendar cal)
                       throws java.sql.SQLException

      Sets the designated parameter to the given `java.sql.Date` value, using the given `Calendar` object. The driver uses the `Calendar` object to construct an SQL `DATE` value, which the driver then sends to the database. With a a `Calendar` object, the driver can calculate the date taking into account a custom timezone. If no `Calendar` object is specified, the driver uses the default timezone, which is that of the virtual machine running the application.
      Specified by:
        `setDate` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - the parameter value
        `cal` - the `Calendar` object the driver will use to construct the date
      Throws:
        `java.sql.SQLException` - if a database access error occurs
      Since:
        1.2
      See Also:
        What Is in the JDBC 2.0 API

    - #### setTime

          public void setTime(int parameterIndex,
                     java.sql.Time x,
                     java.util.Calendar cal)
                       throws java.sql.SQLException

      Sets the designated parameter to the given `java.sql.Time` value, using the given `Calendar` object. The driver uses the `Calendar` object to construct an SQL `TIME` value, which the driver then sends to the database. With a a `Calendar` object, the driver can calculate the time taking into account a custom timezone. If no `Calendar` object is specified, the driver uses the default timezone, which is that of the virtual machine running the application.
      Specified by:
        `setTime` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - the parameter value
        `cal` - the `Calendar` object the driver will use to construct the time
      Throws:
        `java.sql.SQLException` - if a database access error occurs
      Since:
        1.2
      See Also:
        What Is in the JDBC 2.0 API

    - #### setTimestamp

          public void setTimestamp(int parameterIndex,
                          java.sql.Timestamp x,
                          java.util.Calendar cal)
                            throws java.sql.SQLException

      Sets the designated parameter to the given `java.sql.Timestamp` value, using the given `Calendar` object. The driver uses the `Calendar` object to construct an SQL `TIMESTAMP` value, which the driver then sends to the database. With a a `Calendar` object, the driver can calculate the timestamp taking into account a custom timezone. If no `Calendar` object is specified, the driver uses the default timezone, which is that of the virtual machine running the application.
      Specified by:
        `setTimestamp` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `x` - the parameter value
        `cal` - the `Calendar` object the driver will use to construct the timestamp
      Throws:
        `java.sql.SQLException` - if a database access error occurs
      Since:
        1.2
      See Also:
        What Is in the JDBC 2.0 API

    - #### setNull

          public void setNull(int parameterIndex,
                     int sqlType,
                     java.lang.String typeName)
                       throws java.sql.SQLException

      Sets the designated parameter to SQL `NULL`. This version of the method `setNull` should be used for user-defined types and REF type parameters. Examples of user-defined types include: STRUCT, DISTINCT, JAVA_OBJECT, and named array types.

      Note: To be portable, applications must give the SQL type code and the fully-qualified SQL type name when specifying a NULL user-defined or REF parameter. In the case of a user-defined type the name is the type name of the parameter itself. For a REF parameter, the name is the type name of the referenced type. If a JDBC driver does not need the type code or type name information, it may ignore it. Although it is intended for user-defined and Ref parameters, this method may be used to set a null parameter of any JDBC type. If the parameter does not have a user-defined or REF type, the given typeName is ignored.

      Specified by:
        `setNull` in interface `java.sql.PreparedStatement`
      Parameters:
        `parameterIndex` - the first parameter is 1, the second is 2, ...
        `sqlType` - a value from `java.sql.Types`
        `typeName` - the fully-qualified name of an SQL user-defined type; ignored if the parameter is not a user-defined type or REF
      Throws:
        `java.sql.SQLException` - if a database access error occurs
      Since:
        1.2
      See Also:
        What Is in the JDBC 2.0 API

    - #### prepareFixedStatement

          protected void prepareFixedStatement(java.lang.String sql)
                                        throws java.sql.SQLException

      Prepare fixed statement and initialize parameters.
      Overrides:
        `prepareFixedStatement` in class `FBStatement`
      Throws:
        `java.sql.SQLException`

    - #### getExecutionPlan

          public java.lang.String getExecutionPlan()
                                            throws java.sql.SQLException

      Get the execution plan of this PreparedStatement
      Specified by:
        `getExecutionPlan` in interface `FirebirdPreparedStatement`
      Returns:
        The execution plan of the statement
      Throws:
        `java.sql.SQLException`

    - #### getStatementType

          public int getStatementType()
                               throws java.sql.SQLException

      Get the statement type of this PreparedStatement. The returned value will be one of the `TYPE_*` constant values.
      Specified by:
        `getStatementType` in interface `FirebirdPreparedStatement`
      Returns:
        The identifier for the given statement's type
      Throws:
        `java.sql.SQLException`

    - #### getParameterMetaData

          public java.sql.ParameterMetaData getParameterMetaData()
                                                          throws java.sql.SQLException

      Specified by:
        `getParameterMetaData` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setNClob

          public void setNClob(int parameterIndex,
                      java.sql.NClob value)
                        throws java.sql.SQLException

      Implementation note: This method behaves exactly the same as `setClob(int, Clob)`.

      Specified by:
        `setNClob` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setRowId

          public void setRowId(int parameterIndex,
                      java.sql.RowId x)
                        throws java.sql.SQLException

      Specified by:
        `setRowId` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### setSQLXML

          public void setSQLXML(int parameterIndex,
                       java.sql.SQLXML xmlObject)
                         throws java.sql.SQLException

      Specified by:
        `setSQLXML` in interface `java.sql.PreparedStatement`
      Throws:
        `java.sql.SQLException`

    - #### executeQuery

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

      Description copied from class: `FBStatement`
      Executes an SQL statement that returns a single `ResultSet` object.
      Specified by:
        `executeQuery` in interface `java.sql.Statement`
      Overrides:
        `executeQuery` in class `FBStatement`
      Parameters:
        `sql` - typically this is a static SQL `SELECT` statement
      Returns:
        a `ResultSet` object that contains the data produced by the given query; never `null`
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### executeUpdate

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

      Description copied from class: `FBStatement`
      Executes an SQL `INSERT`, `UPDATE` or `DELETE` statement. In addition, SQL statements that return nothing, such as SQL DDL statements, can be executed.
      Specified by:
        `executeUpdate` in interface `java.sql.Statement`
      Overrides:
        `executeUpdate` in class `FBStatement`
      Parameters:
        `sql` - an SQL `INSERT`, `UPDATE` or `DELETE` statement or an SQL statement that returns nothing
      Returns:
        either the row count for `INSERT`, `UPDATE` or `DELETE` statements, or 0 for SQL statements that return nothing
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### execute

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

      Description copied from class: `FBStatement`
      Executes an SQL statement that may return multiple results. Under some (uncommon) situations a single SQL statement may return multiple result sets and/or update counts. Normally you can ignore this unless you are (1) executing a stored procedure that you know may return multiple results or (2) you are dynamically executing an unknown SQL string. The methods `execute`, `getMoreResults`, `getResultSet`, and `getUpdateCount` let you navigate through multiple results. The `execute` method executes an SQL statement and indicates the form of the first result. You can then use the methods `getResultSet` or `getUpdateCount` to retrieve the result, and `getMoreResults` to move to any subsequent result(s).
      Specified by:
        `execute` in interface `java.sql.Statement`
      Overrides:
        `execute` in class `FBStatement`
      Parameters:
        `sql` - any SQL statement
      Returns:
        `true` if the next result is a `ResultSet` object; `false` if it is an update count or there are no more results
      Throws:
        `java.sql.SQLException` - if a database access error occurs
      See Also:
        `FBStatement.getResultSet()`, `FBStatement.getUpdateCount()`, `FBStatement.getMoreResults()`

    - #### addBatch

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

      Description copied from class: `FBStatement`
      Adds an SQL command to the current batch of commmands for this `Statement` object. This method is optional.
      Specified by:
        `addBatch` in interface `java.sql.Statement`
      Overrides:
        `addBatch` in class `FBStatement`
      Parameters:
        `sql` - typically this is a static SQL `INSERT` or `UPDATE` statement
      Throws:
        `java.sql.SQLException` - if a database access error occurs, or the driver does not support batch statements
      See Also:
        What Is in the JDBC 2.0 API

    - #### executeUpdate

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

      Description copied from class: `FBStatement`
      Executes the given SQL statement and signals the driver with the given flag about whether the auto-generated keys produced by this `Statement` object should be made available for retrieval. The driver will ignore the flag if the SQL statement is not an `INSERT` statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).
      Specified by:
        `executeUpdate` in interface `java.sql.Statement`
      Overrides:
        `executeUpdate` in class `FBStatement`
      Parameters:
        `sql` - an SQL Data Manipulation Language (DML) statement, such as `INSERT`, `UPDATE` or `DELETE`; or an SQL statement that returns nothing, such as a DDL statement.
        `autoGeneratedKeys` - a flag indicating whether auto-generated keys should be made available for retrieval; one of the following constants: `Statement.RETURN_GENERATED_KEYS` `Statement.NO_GENERATED_KEYS`
      Returns:
        either (1) the row count for SQL Data Manipulation Language (DML) statements or (2) 0 for SQL statements that return nothing
      Throws:
        `java.sql.SQLException` - if a database access error occurs, this method is called on a closed `Statement`, the given SQL statement returns a `ResultSet` object, or the given constant is not one of those allowed
        `java.sql.SQLFeatureNotSupportedException` - if the JDBC driver does not support this method with a constant of Statement.RETURN_GENERATED_KEYS

    - #### executeUpdate

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

      Description copied from class: `FBStatement`
      Executes the given SQL statement and signals the driver that the auto-generated keys indicated in the given array should be made available for retrieval. This array contains the indexes of the columns in the target table that contain the auto-generated keys that should be made available. The driver will ignore the array if the SQL statement is not an `INSERT` statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).
      Specified by:
        `executeUpdate` in interface `java.sql.Statement`
      Overrides:
        `executeUpdate` in class `FBStatement`
      Parameters:
        `sql` - an SQL Data Manipulation Language (DML) statement, such as `INSERT`, `UPDATE` or `DELETE`; or an SQL statement that returns nothing, such as a DDL statement.
        `columnIndex` - an array of column indexes indicating the columns that should be returned from the inserted row
      Returns:
        either (1) the row count for SQL Data Manipulation Language (DML) statements or (2) 0 for SQL statements that return nothing
      Throws:
        `java.sql.SQLException` - if a database access error occurs, this method is called on a closed `Statement`, the SQL statement returns a `ResultSet` object, or the second argument supplied to this method is not an `int` array whose elements are valid column indexes
        `java.sql.SQLFeatureNotSupportedException` - if the JDBC driver does not support this method

    - #### executeUpdate

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

      Description copied from class: `FBStatement`
      Executes the given SQL statement and signals the driver that the auto-generated keys indicated in the given array should be made available for retrieval. This array contains the names of the columns in the target table that contain the auto-generated keys that should be made available. The driver will ignore the array if the SQL statement is not an `INSERT` statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).
      Specified by:
        `executeUpdate` in interface `java.sql.Statement`
      Overrides:
        `executeUpdate` in class `FBStatement`
      Parameters:
        `sql` - an SQL Data Manipulation Language (DML) statement, such as `INSERT`, `UPDATE` or `DELETE`; or an SQL statement that returns nothing, such as a DDL statement.
        `columnNames` - an array of the names of the columns that should be returned from the inserted row
      Returns:
        either the row count for `INSERT`, `UPDATE`, or `DELETE` statements, or 0 for SQL statements that return nothing
      Throws:
        `java.sql.SQLException` - if a database access error occurs, this method is called on a closed `Statement`, the SQL statement returns a `ResultSet` object, or the second argument supplied to this method is not a `String` array whose elements are valid column names
        `java.sql.SQLFeatureNotSupportedException` - if the JDBC driver does not support this method

    - #### execute

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

      Description copied from class: `FBStatement`
      Executes the given SQL statement, which may return multiple results, and signals the driver that any auto-generated keys should be made available for retrieval. The driver will ignore this signal if the SQL statement is not an `INSERT` statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).

      In some (uncommon) situations, a single SQL statement may return multiple result sets and/or update counts. Normally you can ignore this unless you are (1) executing a stored procedure that you know may return multiple results or (2) you are dynamically executing an unknown SQL string.

      The `execute` method executes an SQL statement and indicates the form of the first result. You must then use the methods `getResultSet` or `getUpdateCount` to retrieve the result, and `getMoreResults` to move to any subsequent result(s).

      Specified by:
        `execute` in interface `java.sql.Statement`
      Overrides:
        `execute` in class `FBStatement`
      Parameters:
        `sql` - any SQL statement
        `autoGeneratedKeys` - a constant indicating whether auto-generated keys should be made available for retrieval using the method `getGeneratedKeys`; one of the following constants: `Statement.RETURN_GENERATED_KEYS` or `Statement.NO_GENERATED_KEYS`
      Returns:
        `true` if the first result is a `ResultSet` object; `false` if it is an update count or there are no results
      Throws:
        `java.sql.SQLException` - if a database access error occurs, this method is called on a closed `Statement` or the second parameter supplied to this method is not `Statement.RETURN_GENERATED_KEYS` or `Statement.NO_GENERATED_KEYS`.
        `java.sql.SQLFeatureNotSupportedException` - if the JDBC driver does not support this method with a constant of Statement.RETURN_GENERATED_KEYS
      See Also:
        `FBStatement.getResultSet()`, `FBStatement.getUpdateCount()`, `FBStatement.getMoreResults()`, `FBStatement.getGeneratedKeys()`

    - #### execute

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

      Description copied from class: `FBStatement`
      Executes the given SQL statement, which may return multiple results, and signals the driver that the auto-generated keys indicated in the given array should be made available for retrieval. This array contains the indexes of the columns in the target table that contain the auto-generated keys that should be made available. The driver will ignore the array if the SQL statement is not an `INSERT` statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).

      Under some (uncommon) situations, a single SQL statement may return multiple result sets and/or update counts. Normally you can ignore this unless you are (1) executing a stored procedure that you know may return multiple results or (2) you are dynamically executing an unknown SQL string.

      The `execute` method executes an SQL statement and indicates the form of the first result. You must then use the methods `getResultSet` or `getUpdateCount` to retrieve the result, and `getMoreResults` to move to any subsequent result(s).

      Specified by:
        `execute` in interface `java.sql.Statement`
      Overrides:
        `execute` in class `FBStatement`
      Parameters:
        `sql` - any SQL statement
        `columnIndexes` - an array of the indexes of the columns in the inserted row that should be made available for retrieval by a call to the method `getGeneratedKeys`
      Returns:
        `true` if the first result is a `ResultSet` object; `false` if it is an update count or there are no results
      Throws:
        `java.sql.SQLException` - if a database access error occurs, this method is called on a closed `Statement` or the elements in the `int` array passed to this method are not valid column indexes
        `java.sql.SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      See Also:
        `FBStatement.getResultSet()`, `FBStatement.getUpdateCount()`, `FBStatement.getMoreResults()`

    - #### execute

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

      Description copied from class: `FBStatement`
      Executes the given SQL statement, which may return multiple results, and signals the driver that the auto-generated keys indicated in the given array should be made available for retrieval. This array contains the names of the columns in the target table that contain the auto-generated keys that should be made available. The driver will ignore the array if the SQL statement is not an `INSERT` statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).

      In some (uncommon) situations, a single SQL statement may return multiple result sets and/or update counts. Normally you can ignore this unless you are (1) executing a stored procedure that you know may return multiple results or (2) you are dynamically executing an unknown SQL string.

      The `execute` method executes an SQL statement and indicates the form of the first result. You must then use the methods `getResultSet` or `getUpdateCount` to retrieve the result, and `getMoreResults` to move to any subsequent result(s).

      Specified by:
        `execute` in interface `java.sql.Statement`
      Overrides:
        `execute` in class `FBStatement`
      Parameters:
        `sql` - any SQL statement
        `columnNames` - an array of the names of the columns in the inserted row that should be made available for retrieval by a call to the method `getGeneratedKeys`
      Returns:
        `true` if the next result is a `ResultSet` object; `false` if it is an update count or there are no more results
      Throws:
        `java.sql.SQLException` - if a database access error occurs, this method is called on a closed `Statement` or the elements of the `String` array passed to this method are not valid column names
        `java.sql.SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      See Also:
        `FBStatement.getResultSet()`, `FBStatement.getUpdateCount()`, `FBStatement.getMoreResults()`, `FBStatement.getGeneratedKeys()`

    - #### executeLargeUpdate

          public long executeLargeUpdate()
                                  throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

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