Module org.firebirdsql.jaybird
Package org.firebirdsql.jdbc

# Class FBPreparedStatement

java.lang.Object
org.firebirdsql.jdbc.AbstractStatement
org.firebirdsql.jdbc.FBStatement
org.firebirdsql.jdbc.FBPreparedStatement

All Implemented Interfaces:
  `AutoCloseable`, `PreparedStatement`, `Statement`, `Wrapper`, `FirebirdPreparedStatement`, `FirebirdStatement`

Direct Known Subclasses:
  `FBCallableStatement`

@InternalApi @NullMarked public class FBPreparedStatement extends FBStatement implements FirebirdPreparedStatement
Implementation of `PreparedStatement`.

This class is internal API of Jaybird. Future versions may radically change, move, or make inaccessible this type. For the public API, refer to the `PreparedStatement` and `FirebirdPreparedStatement` interfaces.

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
  Description
  `static final String`
  `METHOD_NOT_SUPPORTED`

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

  `currentStatementResult, fbStatement, gdsHelper, isSingletonResult, specialResult, statementListener`

  ### Fields inherited from class org.firebirdsql.jdbc.AbstractStatement

  `connection`

  ### 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_SAVEPOINT, 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
  Description
  `protected`
  `FBPreparedStatement(FBConnection connection, String sql, ResultSetBehavior rsBehavior, FBObjectListener.StatementListener statementListener, @Nullable FBObjectListener.BlobListener blobListener, boolean metaDataQuery, boolean standaloneStatement, boolean generatedKeys)`
  Create instance of this class and prepare SQL statement.
  `protected`
  `FBPreparedStatement(FBConnection connection, ResultSetBehavior rsBehavior, FBObjectListener.StatementListener statementListener, FBObjectListener.BlobListener blobListener)`
  Create instance of this class for the specified result set type and concurrency.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addBatch()`
  `void`
  `addBatch(String sql)`
  `void`
  `clearBatch()`
  `void`
  `clearParameters()`
  `void`
  `close()`
  `void`
  `completeStatement(CompletionReason reason)`
  Completes this statement with `reason`.
  `boolean`
  `execute()`
  `boolean`
  `execute(String sql)`
  `boolean`
  `execute(String sql, int autoGeneratedKeys)`
  `boolean`
  `execute(String sql, int[] columnIndexes)`
  `boolean`
  `execute(String sql, String[] columnNames)`
  `protected List<Long>`
  `executeBatchInternal()`
  `long`
  `executeLargeUpdate()`
  `ResultSet`
  `executeQuery()`
  `ResultSet`
  `executeQuery(String sql)`
  `int`
  `executeUpdate()`
  `int`
  `executeUpdate(String sql)`
  `int`
  `executeUpdate(String sql, int autoGeneratedKeys)`
  `int`
  `executeUpdate(String sql, int[] columnIndex)`
  `int`
  `executeUpdate(String sql, String[] columnNames)`
  `protected FBField`
  `getField(int columnIndex)`
  Factory method for the field access objects
  `FirebirdParameterMetaData`
  `getFirebirdParameterMetaData()`
  `@Nullable ResultSetMetaData`
  `getMetaData()`
  `protected FieldDescriptor`
  `getParameterDescriptor(int columnIndex)`
  Returns the `FieldDescriptor` of the specified parameter.
  `ParameterMetaData`
  `getParameterMetaData()`
  `protected boolean`
  `internalExecute(boolean sendOutParams)`
  Execute this statement.
  `protected boolean`
  `isGeneratedKeyQuery()`
  `protected void`
  `notifyStatementCompleted(boolean success)`
  Notifies statement completion.
  `protected void`
  `prepareFixedStatement(String sql)`
  Prepare fixed statement and initialize parameters.
  `void`
  `setArray(int i, @Nullable Array x)`
  `final void`
  `setAsciiStream(int parameterIndex, @Nullable InputStream x)`
  `final void`
  `setAsciiStream(int parameterIndex, @Nullable InputStream x, int length)`
  `final void`
  `setAsciiStream(int parameterIndex, @Nullable InputStream x, long length)`
  `void`
  `setBigDecimal(int parameterIndex, @Nullable BigDecimal x)`
  `void`
  `setBinaryStream(int parameterIndex, @Nullable InputStream inputStream)`
  `void`
  `setBinaryStream(int parameterIndex, @Nullable InputStream inputStream, int length)`
  `void`
  `setBinaryStream(int parameterIndex, @Nullable InputStream inputStream, long length)`
  `void`
  `setBlob(int parameterIndex, @Nullable InputStream inputStream)`
  `void`
  `setBlob(int parameterIndex, @Nullable InputStream inputStream, long length)`
  `void`
  `setBlob(int parameterIndex, @Nullable Blob blob)`
  `void`
  `setBoolean(int parameterIndex, boolean x)`
  `void`
  `setByte(int parameterIndex, byte x)`
  `void`
  `setBytes(int parameterIndex, byte @Nullable [] x)`
  `void`
  `setCharacterStream(int parameterIndex, @Nullable Reader reader)`
  `void`
  `setCharacterStream(int parameterIndex, @Nullable Reader reader, int length)`
  `void`
  `setCharacterStream(int parameterIndex, @Nullable Reader reader, long length)`
  `void`
  `setClob(int parameterIndex, @Nullable Reader reader)`
  `void`
  `setClob(int parameterIndex, @Nullable Reader reader, long length)`
  `void`
  `setClob(int parameterIndex, @Nullable Clob clob)`
  `void`
  `setDate(int parameterIndex, @Nullable Date x)`
  `void`
  `setDate(int parameterIndex, @Nullable Date x, @Nullable Calendar cal)`
  `void`
  `setDouble(int parameterIndex, double x)`
  `void`
  `setFloat(int parameterIndex, float x)`
  `void`
  `setInt(int parameterIndex, int x)`
  `void`
  `setLong(int parameterIndex, long x)`
  `void`
  `setNCharacterStream(int parameterIndex, @Nullable Reader value)`
  `void`
  `setNCharacterStream(int parameterIndex, @Nullable Reader value, long length)`
  `void`
  `setNClob(int parameterIndex, @Nullable Reader reader)`
  `void`
  `setNClob(int parameterIndex, @Nullable Reader reader, long length)`
  `void`
  `setNClob(int parameterIndex, @Nullable NClob value)`
  `void`
  `setNString(int parameterIndex, @Nullable String value)`
  `void`
  `setNull(int parameterIndex, int sqlType)`
  `void`
  `setNull(int parameterIndex, int sqlType, String typeName)`
  `void`
  `setObject(int parameterIndex, @Nullable Object x)`
  `void`
  `setObject(int parameterIndex, @Nullable Object x, int targetSqlType)`
  `void`
  `setObject(int parameterIndex, @Nullable Object x, int targetSqlType, int scaleOrLength)`
  `void`
  `setObject(int parameterIndex, @Nullable Object x, SQLType targetSqlType)`
  `void`
  `setObject(int parameterIndex, @Nullable Object x, SQLType targetSqlType, int scaleOrLength)`
  `void`
  `setRef(int i, @Nullable Ref x)`
  `void`
  `setRowId(int parameterIndex, @Nullable RowId x)`
  `void`
  `setShort(int parameterIndex, short x)`
  `void`
  `setSQLXML(int parameterIndex, @Nullable SQLXML xmlObject)`
  `void`
  `setString(int parameterIndex, @Nullable String x)`
  `void`
  `setTime(int parameterIndex, @Nullable Time x)`
  `void`
  `setTime(int parameterIndex, @Nullable Time x, @Nullable Calendar cal)`
  `void`
  `setTimestamp(int parameterIndex, @Nullable Timestamp x)`
  `void`
  `setTimestamp(int parameterIndex, @Nullable Timestamp x, @Nullable Calendar cal)`
  `void`
  `setUnicodeStream(int parameterIndex, @Nullable InputStream x, int length)`
  Deprecated.
  `void`
  `setURL(int parameterIndex, @Nullable URL url)`

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

  `cancel, createBatchUpdateException, createBatchUpdateException, createSpecialResultSet, createStatementListener, enquoteIdentifier, enquoteLiteral, enquoteNCharLiteral, executeBatch, executeImpl, executeLargeBatch, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, getCurrentResultSet, getDeletedRowsCount, getExecutionPlan, getExplainedExecutionPlan, getGeneratedKeys, getInsertedRowsCount, getLargeUpdateCount, getLargeUpdateCountMinZero, getMaxFieldSize, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSet, getStatementHandle, getStatementType, getUpdateCount, getUpdateCountMinZero, getUpdatedRowsCount, hasOpenResultSet, internalExecute, internalExecute, isSimpleIdentifier, isValid, isWrapperFor, nativeSQL, notifyStatementCompleted, notifyStatementStarted, notifyStatementStarted, setEscapeProcessing, setMaxFieldSize, setQueryTimeout, unwrap`

  ### Methods inherited from class org.firebirdsql.jdbc.AbstractStatement

  `addWarning, checkValidity, clearWarnings, closeOnCompletion, completeStatement, equals, fetchConfig, getConnection, getCursorName, getFetchDirection, getFetchSize, getLargeMaxRows, getLocalStatementId, getMaxRows, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getWarnings, hashCode, isClosed, isCloseOnCompletion, isPoolable, performCloseOnCompletion, resultSetBehavior, setCursorName, setFetchDirection, setFetchSize, setLargeMaxRows, setMaxRows, setPoolable, withLock`

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

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

  ### Methods inherited from interface org.firebirdsql.jdbc.FirebirdPreparedStatement

  `getStatementType`

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

  `getCurrentResultSet, getDeletedRowsCount, getExecutionPlan, getExplainedExecutionPlan, getInsertedRowsCount, getLastExecutionPlan, getLastExplainedExecutionPlan, getLocalStatementId, getUpdatedRowsCount, hasOpenResultSet, isValid`

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

  `cancel, clearWarnings, closeOnCompletion, enquoteIdentifier, enquoteLiteral, enquoteNCharLiteral, executeBatch, executeLargeBatch, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, getConnection, getFetchDirection, getFetchSize, getGeneratedKeys, getLargeMaxRows, getLargeUpdateCount, getMaxFieldSize, getMaxRows, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getUpdateCount, getWarnings, isClosed, isCloseOnCompletion, isPoolable, isSimpleIdentifier, setCursorName, setEscapeProcessing, setFetchDirection, setFetchSize, setLargeMaxRows, setMaxFieldSize, setMaxRows, setPoolable, setQueryTimeout`

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

  `isWrapperFor, unwrap`

- ## Field Details

  - ### METHOD_NOT_SUPPORTED

    public static final String METHOD_NOT_SUPPORTED
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### FBPreparedStatement

    protected FBPreparedStatement(FBConnection connection, ResultSetBehavior rsBehavior, FBObjectListener.StatementListener statementListener, FBObjectListener.BlobListener blobListener) throws 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:
      `connection` - connection to be used
      `rsBehavior` - result set behavior
      `statementListener` - statement listener that will be notified about the statement start, close and completion
      `blobListener` - blob listener that will be notified about the statement start and completion
    Throws:
      `SQLException` - if something went wrong.

  - ### FBPreparedStatement

    protected FBPreparedStatement(FBConnection connection, String sql, ResultSetBehavior rsBehavior, FBObjectListener.StatementListener statementListener, @Nullable FBObjectListener.BlobListener blobListener, boolean metaDataQuery, boolean standaloneStatement, boolean generatedKeys) throws SQLException
    Create instance of this class and prepare SQL statement.
    Parameters:
      `connection` - connection to be used
      `sql` - SQL statement to prepare
      `rsBehavior` - result set behavior
      `statementListener` - statement listener that will be notified about the statement start, close and completion
      `blobListener` - blob listener that will be notified about the statement start and completion
      `metaDataQuery` - `true` for a metadata query, `false` for a normal query
      `standaloneStatement` - `true` for a standalone statement (should only be used when `metaDataQuery == true`)
      `generatedKeys` - `true` if this statement produces a generated keys result set
    Throws:
      `SQLException` - if something went wrong.

- ## Method Details

  - ### completeStatement

    public void completeStatement(CompletionReason reason) throws SQLException
    Description copied from class: `AbstractStatement`
    Completes this statement with `reason`.

    On completion, any open result set will be closed, and possibly the statement itself may be closed.

    Overrides:
      `completeStatement` in class `FBStatement`
    Parameters:
      `reason` - completion reason
    Throws:
      `SQLException` - for failures completing this statement

  - ### notifyStatementCompleted

    protected void notifyStatementCompleted(boolean success) throws SQLException
    Description copied from class: `FBStatement`
    Notifies statement completion.

    Use of `success = false` should not be generally used for failing execution. The only difference between `true` and `false` is whether completion triggers commit or rollback in auto-commit mode, and in general, even for failed execution, a commit should be triggered. The only exception is for batch execution in auto-commit, where we rollback if one statement failed (and this behaviour is specified by JDBC as implementation-specific), and ending a transaction if statement preparation failed in `FBPreparedStatement`.

    Overrides:
      `notifyStatementCompleted` in class `FBStatement`
    Parameters:
      `success` - `true` notify successful completion, `false` for unsuccessful completion
    Throws:
      `SQLException` - exception from handling statement completion (e.g. commit or rollback in auto-commit)

  - ### executeQuery

    public ResultSet executeQuery() throws SQLException
    Specified by:
      `executeQuery` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### executeUpdate

    public int executeUpdate() throws SQLException
    Specified by:
      `executeUpdate` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### close

    public void close() throws SQLException
    Description copied from class: `AbstractStatement`

    Subclasses overriding this method are expected to call this method with `super.close()` at an appropriate point to mark it closed.

    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Statement`
    Overrides:
      `close` in class `FBStatement`
    Throws:
      `SQLException`

  - ### getFirebirdParameterMetaData

    public FirebirdParameterMetaData getFirebirdParameterMetaData() throws SQLException
    Throws:
      `SQLException`

  - ### setNull

    public void setNull(int parameterIndex, int sqlType) throws SQLException
    Specified by:
      `setNull` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setBinaryStream

    public void setBinaryStream(int parameterIndex, @Nullable InputStream inputStream, int length) throws SQLException
    Specified by:
      `setBinaryStream` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setBinaryStream

    public void setBinaryStream(int parameterIndex, @Nullable InputStream inputStream, long length) throws SQLException
    Specified by:
      `setBinaryStream` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setBinaryStream

    public void setBinaryStream(int parameterIndex, @Nullable InputStream inputStream) throws SQLException
    Specified by:
      `setBinaryStream` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setBytes

    public void setBytes(int parameterIndex, byte @Nullable [] x) throws SQLException
    Specified by:
      `setBytes` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setBoolean

    public void setBoolean(int parameterIndex, boolean x) throws SQLException
    Specified by:
      `setBoolean` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setByte

    public void setByte(int parameterIndex, byte x) throws SQLException
    Specified by:
      `setByte` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setDate

    public void setDate(int parameterIndex, @Nullable Date x) throws SQLException
    Specified by:
      `setDate` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setDouble

    public void setDouble(int parameterIndex, double x) throws SQLException
    Specified by:
      `setDouble` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setFloat

    public void setFloat(int parameterIndex, float x) throws SQLException
    Specified by:
      `setFloat` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setInt

    public void setInt(int parameterIndex, int x) throws SQLException
    Specified by:
      `setInt` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setLong

    public void setLong(int parameterIndex, long x) throws SQLException
    Specified by:
      `setLong` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setObject

    public void setObject(int parameterIndex, @Nullable Object x) throws SQLException
    Specified by:
      `setObject` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setObject

    public void setObject(int parameterIndex, @Nullable Object x, SQLType targetSqlType, int scaleOrLength) throws SQLException

    Implementation note: behaves as `setObject(int, Object, int, int)` called with `SQLType.getVendorTypeNumber()`.

    Specified by:
      `setObject` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setObject

    public void setObject(int parameterIndex, @Nullable Object x, SQLType targetSqlType) throws SQLException

    Implementation note: behaves as `setObject(int, Object, int)` called with `SQLType.getVendorTypeNumber()`.

    Specified by:
      `setObject` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setShort

    public void setShort(int parameterIndex, short x) throws SQLException
    Specified by:
      `setShort` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setString

    public void setString(int parameterIndex, @Nullable String x) throws SQLException
    Specified by:
      `setString` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setTime

    public void setTime(int parameterIndex, @Nullable Time x) throws SQLException
    Specified by:
      `setTime` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setTimestamp

    public void setTimestamp(int parameterIndex, @Nullable Timestamp x) throws SQLException
    Specified by:
      `setTimestamp` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setBigDecimal

    public void setBigDecimal(int parameterIndex, @Nullable BigDecimal x) throws SQLException
    Specified by:
      `setBigDecimal` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### 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 SQLException
    Factory method for the field access objects
    Throws:
      `SQLException`

  - ### setAsciiStream

    public final void setAsciiStream(int parameterIndex, @Nullable InputStream x, int length) throws SQLException

    Implementation note: works identical to `setBinaryStream(int, InputStream, int)`.

    Specified by:
      `setAsciiStream` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setAsciiStream

    public final void setAsciiStream(int parameterIndex, @Nullable InputStream x, long length) throws SQLException

    Implementation note: works identical to `setBinaryStream(int, InputStream, long)`.

    Specified by:
      `setAsciiStream` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setAsciiStream

    public final void setAsciiStream(int parameterIndex, @Nullable InputStream x) throws SQLException

    Implementation note: works identical to `setBinaryStream(int, InputStream)`.

    Specified by:
      `setAsciiStream` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setUnicodeStream

    @Deprecated(since="1") public void setUnicodeStream(int parameterIndex, @Nullable InputStream x, int length) throws 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 `PreparedStatement`
    Throws:
      `SQLFeatureNotSupportedException` - Always
      `SQLException`

  - ### setURL

    public void setURL(int parameterIndex, @Nullable URL url) throws SQLException

    Jaybird does not support array types.

    Specified by:
      `setURL` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setNCharacterStream

    public void setNCharacterStream(int parameterIndex, @Nullable Reader value, long length) throws SQLException

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

    Specified by:
      `setNCharacterStream` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setNCharacterStream

    public void setNCharacterStream(int parameterIndex, @Nullable Reader value) throws SQLException

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

    Specified by:
      `setNCharacterStream` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setNClob

    public void setNClob(int parameterIndex, @Nullable Reader reader, long length) throws SQLException

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

    Specified by:
      `setNClob` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setNClob

    public void setNClob(int parameterIndex, @Nullable Reader reader) throws SQLException

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

    Specified by:
      `setNClob` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setNString

    public void setNString(int parameterIndex, @Nullable String value) throws SQLException

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

    Specified by:
      `setNString` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### clearParameters

    public void clearParameters() throws SQLException
    Specified by:
      `clearParameters` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setObject

    public void setObject(int parameterIndex, @Nullable Object x, int targetSqlType, int scaleOrLength) throws SQLException

    Implementation note: ignores `scaleOrLength` and `targetSqlType` and works as `setObject(int, Object)`, `scaleOrLength` is not ignored if `x` is a `Reader` or `InputStream`.

    Specified by:
      `setObject` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setObject

    public void setObject(int parameterIndex, @Nullable Object x, int targetSqlType) throws SQLException

    Implementation note: ignores `targetSqlType` and works as `setObject(int, Object)`.

    Specified by:
      `setObject` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### execute

    public boolean execute() throws SQLException
    Specified by:
      `execute` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### internalExecute

    protected boolean internalExecute(boolean sendOutParams) throws 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:
      `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 SQLException
    Specified by:
      `addBatch` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### clearBatch

    public void clearBatch() throws SQLException
    Specified by:
      `clearBatch` in interface `Statement`
    Overrides:
      `clearBatch` in class `FBStatement`
    Throws:
      `SQLException`

  - ### executeBatchInternal

    protected List<Long> executeBatchInternal() throws SQLException
    Overrides:
      `executeBatchInternal` in class `FBStatement`
    Throws:
      `SQLException`

  - ### setCharacterStream

    public void setCharacterStream(int parameterIndex, @Nullable Reader reader, int length) throws SQLException
    Specified by:
      `setCharacterStream` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setCharacterStream

    public void setCharacterStream(int parameterIndex, @Nullable Reader reader, long length) throws SQLException
    Specified by:
      `setCharacterStream` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setCharacterStream

    public void setCharacterStream(int parameterIndex, @Nullable Reader reader) throws SQLException
    Specified by:
      `setCharacterStream` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setRef

    public void setRef(int i, @Nullable Ref x) throws SQLException

    Jaybird does not support ref types.

    Specified by:
      `setRef` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setBlob

    public void setBlob(int parameterIndex, @Nullable Blob blob) throws SQLException
    Specified by:
      `setBlob` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setBlob

    public void setBlob(int parameterIndex, @Nullable InputStream inputStream, long length) throws SQLException
    Specified by:
      `setBlob` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setBlob

    public void setBlob(int parameterIndex, @Nullable InputStream inputStream) throws SQLException
    Specified by:
      `setBlob` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setClob

    public void setClob(int parameterIndex, @Nullable Clob clob) throws SQLException
    Specified by:
      `setClob` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setClob

    public void setClob(int parameterIndex, @Nullable Reader reader, long length) throws SQLException
    Specified by:
      `setClob` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setClob

    public void setClob(int parameterIndex, @Nullable Reader reader) throws SQLException
    Specified by:
      `setClob` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setArray

    public void setArray(int i, @Nullable Array x) throws SQLException

    Jaybird does not support array types.

    Specified by:
      `setArray` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### getMetaData

    public @Nullable ResultSetMetaData getMetaData() throws SQLException
    Specified by:
      `getMetaData` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setDate

    public void setDate(int parameterIndex, @Nullable Date x, @Nullable Calendar cal) throws SQLException
    Specified by:
      `setDate` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setTime

    public void setTime(int parameterIndex, @Nullable Time x, @Nullable Calendar cal) throws SQLException
    Specified by:
      `setTime` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setTimestamp

    public void setTimestamp(int parameterIndex, @Nullable Timestamp x, @Nullable Calendar cal) throws SQLException
    Specified by:
      `setTimestamp` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setNull

    public void setNull(int parameterIndex, int sqlType, String typeName) throws SQLException
    Specified by:
      `setNull` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### prepareFixedStatement

    protected void prepareFixedStatement(String sql) throws SQLException
    Prepare fixed statement and initialize parameters.
    Overrides:
      `prepareFixedStatement` in class `FBStatement`
    Throws:
      `SQLException`

  - ### getParameterMetaData

    public ParameterMetaData getParameterMetaData() throws SQLException
    Specified by:
      `getParameterMetaData` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setNClob

    public void setNClob(int parameterIndex, @Nullable NClob value) throws SQLException

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

    Specified by:
      `setNClob` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setRowId

    public void setRowId(int parameterIndex, @Nullable RowId x) throws SQLException
    Specified by:
      `setRowId` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### setSQLXML

    public void setSQLXML(int parameterIndex, @Nullable SQLXML xmlObject) throws SQLException

    Jaybird does not support SQLXML.

    Specified by:
      `setSQLXML` in interface `PreparedStatement`
    Throws:
      `SQLException`

  - ### executeQuery

    public ResultSet executeQuery(String sql) throws SQLException
    Specified by:
      `executeQuery` in interface `Statement`
    Overrides:
      `executeQuery` in class `FBStatement`
    Throws:
      `SQLException`

  - ### executeUpdate

    public int executeUpdate(String sql) throws SQLException
    Specified by:
      `executeUpdate` in interface `Statement`
    Overrides:
      `executeUpdate` in class `FBStatement`
    Throws:
      `SQLException`

  - ### execute

    public boolean execute(String sql) throws SQLException
    Specified by:
      `execute` in interface `Statement`
    Overrides:
      `execute` in class `FBStatement`
    Throws:
      `SQLException`

  - ### addBatch

    public void addBatch(String sql) throws SQLException
    Specified by:
      `addBatch` in interface `Statement`
    Overrides:
      `addBatch` in class `FBStatement`
    Throws:
      `SQLException`

  - ### executeUpdate

    public int executeUpdate(String sql, int autoGeneratedKeys) throws SQLException
    Specified by:
      `executeUpdate` in interface `Statement`
    Overrides:
      `executeUpdate` in class `FBStatement`
    Throws:
      `SQLException`

  - ### executeUpdate

    public int executeUpdate(String sql, int[] columnIndex) throws SQLException
    Specified by:
      `executeUpdate` in interface `Statement`
    Overrides:
      `executeUpdate` in class `FBStatement`
    Throws:
      `SQLException`

  - ### executeUpdate

    public int executeUpdate(String sql, String[] columnNames) throws SQLException
    Specified by:
      `executeUpdate` in interface `Statement`
    Overrides:
      `executeUpdate` in class `FBStatement`
    Throws:
      `SQLException`

  - ### execute

    public boolean execute(String sql, int autoGeneratedKeys) throws SQLException
    Specified by:
      `execute` in interface `Statement`
    Overrides:
      `execute` in class `FBStatement`
    Throws:
      `SQLException`

  - ### execute

    public boolean execute(String sql, int[] columnIndexes) throws SQLException
    Specified by:
      `execute` in interface `Statement`
    Overrides:
      `execute` in class `FBStatement`
    Throws:
      `SQLException`

  - ### execute

    public boolean execute(String sql, String[] columnNames) throws SQLException
    Specified by:
      `execute` in interface `Statement`
    Overrides:
      `execute` in class `FBStatement`
    Throws:
      `SQLException`

  - ### executeLargeUpdate

    public long executeLargeUpdate() throws SQLException
    Specified by:
      `executeLargeUpdate` in interface `PreparedStatement`
    Throws:
      `SQLException`