org.firebirdsql.jdbc
Class AbstractPreparedStatement

java.lang.Object
  extended by org.firebirdsql.jdbc.AbstractStatement
      extended by org.firebirdsql.jdbc.AbstractPreparedStatement
All Implemented Interfaces:
java.sql.PreparedStatement, java.sql.Statement, java.sql.Wrapper, FirebirdPreparedStatement, FirebirdStatement, Synchronizable
Direct Known Subclasses:
FBPreparedStatement

public abstract class AbstractPreparedStatement
extends AbstractStatement
implements FirebirdPreparedStatement

Implementation of PreparedStatementinterface. This class contains all methods from the JDBC 3.0 specification.

Author:
David Jencks, Roman Rokytskyy, Mark Rotteveel

Nested Class Summary
 
Nested classes/interfaces inherited from class org.firebirdsql.jdbc.AbstractStatement
AbstractStatement.StatementResult
 
Field Summary
protected  java.util.List batchList
           
protected  boolean[] isParamSet
           
 
Fields inherited from class org.firebirdsql.jdbc.AbstractStatement
completed, connection, currentStatementResult, fetchSize, firstWarning, fixedStmt, gdsHelper, maxRows, 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
protected AbstractPreparedStatement(org.firebirdsql.gds.impl.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(org.firebirdsql.gds.impl.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
 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 equals(java.lang.Object other)
           
 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.
 int[] executeBatch()
          Submits a batch of commands to the database for execution and if all commands execute successfully, returns an array of update counts.
 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  org.firebirdsql.jdbc.field.FBField getField(int columnIndex)
          Factory method for the field access objects
 FirebirdParameterMetaData getFirebirdParameterMetaData()
           
 java.sql.ResultSetMetaData getMetaData()
          Gets the number, types and properties of a ResultSet object's columns.
 java.sql.ParameterMetaData getParameterMetaData()
           
 int getStatementType()
          Get the statement type of this PreparedStatement.
protected  XSQLVAR getXsqlvar(int columnIndex)
          Returns the XSQLVAR structure for the specified column.
protected  boolean internalExecute(boolean sendOutParams)
          Execute this statement.
protected  void notifyStatementCompleted(boolean success)
           
protected  void prepareFixedStatement(java.lang.String sql, boolean describeBind)
          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 x)
           
 void setBinaryStream(int parameterIndex, java.io.InputStream inputStream, int length)
          Sets the designated parameter to the given input stream, which will have the specified number of bytes.
 void setBinaryStream(int parameterIndex, java.io.InputStream x, 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)
          Sets the designated parameter to the given Reader object, which is the given number of characters long.
 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.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 setShort(int parameterIndex, short x)
          Sets the designated parameter to the given short value.
 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. I really have no idea if there is anything else we should be doing here
 void setURL(int parameterIndex, java.net.URL url)
           
 
Methods inherited from class org.firebirdsql.jdbc.AbstractStatement
addWarning, cancel, checkValidity, clearWarnings, close, closeOnCompletion, completeStatement, finalize, forgetResultSet, getConnection, getCurrentResultSet, getDeletedRowsCount, getFetchDirection, getFetchSize, getGeneratedKeys, getInsertedRowsCount, getLastExecutionPlan, getMaxFieldSize, getMaxRows, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSet, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getSynchronizationObject, getUpdateCount, getUpdateCountInternal, getUpdatedRowsCount, getWarnings, hashCode, hasOpenResultSet, internalExecute, isClosed, isCloseOnCompletion, isExecuteProcedureStatement, isPoolable, isValid, isWrapperFor, nativeSQL, notifyStatementCompleted, notifyStatementStarted, notifyStatementStarted, setCursorName, setEscapeProcessing, setFetchDirection, setFetchSize, setMaxFieldSize, setMaxRows, setPoolable, setQueryTimeout, toArray, 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, getUpdatedRowsCount, hasOpenResultSet, isClosed, isValid
 
Methods inherited from interface java.sql.PreparedStatement
setNClob, setRowId, setSQLXML
 
Methods inherited from interface java.sql.Statement
cancel, clearWarnings, close, getConnection, getFetchDirection, getFetchSize, getGeneratedKeys, getMaxFieldSize, getMaxRows, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getUpdateCount, getWarnings, isPoolable, setCursorName, setEscapeProcessing, setFetchDirection, setFetchSize, setMaxFieldSize, setMaxRows, setPoolable, setQueryTimeout
 
Methods inherited from interface java.sql.Wrapper
isWrapperFor, unwrap
 

Field Detail

isParamSet

protected boolean[] isParamSet

batchList

protected final java.util.List batchList
Constructor Detail

AbstractPreparedStatement

protected AbstractPreparedStatement(org.firebirdsql.gds.impl.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 AbstractCallableStatement 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(org.firebirdsql.gds.impl.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 AbstractStatement
Throws:
java.sql.SQLException

notifyStatementCompleted

protected void notifyStatementCompleted(boolean success)
                                 throws java.sql.SQLException
Overrides:
notifyStatementCompleted in class AbstractStatement
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
Sets the designated parameter to the given input stream, which will have the specified number of bytes.

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

Specified by:
setBinaryStream in interface java.sql.PreparedStatement
Parameters:
parameterIndex - the first parameter is 1, the second is 2, ...
inputStream - the Java input stream
length - the number of bytes in the stream
Throws:
java.sql.SQLException - if a database access error occurs

setBinaryStream

public void setBinaryStream(int parameterIndex,
                            java.io.InputStream x,
                            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 x)
                     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

getXsqlvar

protected XSQLVAR getXsqlvar(int columnIndex)
Returns the XSQLVAR structure for the specified column.


getField

protected org.firebirdsql.jdbc.field.FBField getField(int columnIndex)
                                               throws java.sql.SQLException
Factory method for the field access objects

Throws:
java.sql.SQLException

setAsciiStream

public 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 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 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

public void setUnicodeStream(int parameterIndex,
                             java.io.InputStream x,
                             int length)
                      throws java.sql.SQLException
Deprecated. I really have no idea if there is anything else we should be doing here

Sets the designated parameter to the given input stream, which will have the specified number of bytes. When a very large UNICODE value is input to a LONGVARCHAR parameter, it may be more practical to send it via a java.io.InputStream object. The data will be read from the stream as needed until end-of-file is reached. The JDBC driver will do any necessary conversion from UNICODE to the database char format. The byte format of the Unicode stream must be Java UTF-8, as defined in the Java Virtual Machine Specification.

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

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

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
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
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
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
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
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 -
Returns:
true if the statement has more result sets.
Throws:
java.sql.SQLException

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 AbstractStatement
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

executeBatch

public int[] executeBatch()
                   throws java.sql.SQLException
Submits a batch of commands to the database for execution and if all commands execute successfully, returns an array of update counts. The int elements of the array that is returned are ordered to correspond to the commands in the batch, which are ordered according to the order in which they were added to the batch. The elements in the array returned by the method executeBatch may be one of the following:
  1. A number greater than or equal to zero -- indicates that the command was processed successfully and is an update count giving the number of rows in the database that were affected by the command's execution
  2. A value of -2-- indicates that the command was processed successfully but that the number of rows affected is unknown

    If one of the commands in a batch update fails to execute properly, this method throws a BatchUpdateException, and a JDBC driver may or may not continue to process the remaining commands in the batch. However, the driver's behavior must be consistent with a particular DBMS, either always continuing to process commands or never continuing to process commands. If the driver continues processing after a failure, the array returned by the method BatchUpdateException.getUpdateCounts will contain as many elements as there are commands in the batch, and at least one of the elements will be the following:

  3. A value of -3-- indicates that the command failed to execute successfully and occurs only if a driver continues to process commands after a command fails

A driver is not required to implement this method. The possible implementations and return values have been modified in the Java 2 SDK, Standard Edition, version 1.3 to accommodate the option of continuing to proccess commands in a batch update after a BatchUpdateException obejct has been thrown.

Specified by:
executeBatch in interface java.sql.Statement
Overrides:
executeBatch in class AbstractStatement
Returns:
an array of update counts containing one element for each command in the batch. The elements of the array are ordered according to the order in which commands were added to the batch.
Throws:
java.sql.SQLException - if a database access error occurs or the driver does not support batch statements. Throws BatchUpdateException(a subclass of SQLException) if one of the commands sent to the database fails to execute properly or attempts to return a result set.
Since:
1.3
See Also:
What Is in the JDBC 2.0 API

setCharacterStream

public void setCharacterStream(int parameterIndex,
                               java.io.Reader reader,
                               int length)
                        throws java.sql.SQLException
Sets the designated parameter to the given Reader object, which is the given number of characters long. When a very large UNICODE value is input to a LONGVARCHAR parameter, it may be more practical to send it via a java.io.Reader object. The data will be read from the stream as needed until end-of-file is reached. The JDBC driver will do any necessary conversion from UNICODE 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:
setCharacterStream in interface java.sql.PreparedStatement
Parameters:
parameterIndex - the first parameter is 1, the second is 2, ...
reader - the java reader which contains the UNICODE data
length - the number of characters in the stream
Throws:
java.sql.SQLException - if a database access error occurs
Since:
1.2
See Also:
What Is in the JDBC 2.0 API

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
Gets the number, types and properties of a ResultSet object's columns.

Specified by:
getMetaData in interface java.sql.PreparedStatement
Returns:
the description of a ResultSet object's columns
Throws:
java.sql.SQLException - if a database access error occurs
Since:
1.2
See Also:
What Is in the JDBC 2.0 API

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,
                                     boolean describeBind)
                              throws GDSException,
                                     java.sql.SQLException
Prepare fixed statement and initialize parameters.

Overrides:
prepareFixedStatement in class AbstractStatement
Throws:
GDSException
java.sql.SQLException

getExecutionPlan

public java.lang.String getExecutionPlan()
                                  throws FBSQLException
Get the execution plan of this PreparedStatement

Specified by:
getExecutionPlan in interface FirebirdPreparedStatement
Returns:
The execution plan of the statement
Throws:
FBSQLException

getStatementType

public int getStatementType()
                     throws FBSQLException
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:
FBSQLException

getParameterMetaData

public java.sql.ParameterMetaData getParameterMetaData()
                                                throws java.sql.SQLException
Specified by:
getParameterMetaData 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: AbstractStatement
Executes an SQL statement that returns a single ResultSet object.

Specified by:
executeQuery in interface java.sql.Statement
Overrides:
executeQuery in class AbstractStatement
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: AbstractStatement
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 AbstractStatement
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: AbstractStatement
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 AbstractStatement
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:
AbstractStatement.getResultSet(), AbstractStatement.getUpdateCount(), AbstractStatement.getMoreResults()

addBatch

public void addBatch(java.lang.String sql)
              throws java.sql.SQLException
Description copied from class: AbstractStatement
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 AbstractStatement
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: AbstractStatement
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 AbstractStatement
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: AbstractStatement
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 AbstractStatement
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: AbstractStatement
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 AbstractStatement
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: AbstractStatement
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 AbstractStatement
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:
AbstractStatement.getResultSet(), AbstractStatement.getUpdateCount(), AbstractStatement.getMoreResults(), AbstractStatement.getGeneratedKeys()

execute

public boolean execute(java.lang.String sql,
                       int[] columnIndexes)
                throws java.sql.SQLException
Description copied from class: AbstractStatement
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 AbstractStatement
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:
AbstractStatement.getResultSet(), AbstractStatement.getUpdateCount(), AbstractStatement.getMoreResults()

execute

public boolean execute(java.lang.String sql,
                       java.lang.String[] columnNames)
                throws java.sql.SQLException
Description copied from class: AbstractStatement
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 AbstractStatement
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:
AbstractStatement.getResultSet(), AbstractStatement.getUpdateCount(), AbstractStatement.getMoreResults(), AbstractStatement.getGeneratedKeys()

equals

public boolean equals(java.lang.Object other)
Overrides:
equals in class AbstractStatement


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