Class BrokeredPreparedStatement
- All Implemented Interfaces:
AutoCloseable
,PreparedStatement
,Statement
,Wrapper
,EnginePreparedStatement
,EngineStatement
- Direct Known Subclasses:
BrokeredCallableStatement
,BrokeredPreparedStatement42
PreparedStatement
that forwards calls off to a real
PreparedStatement
obtained through the
BrokeredStatementControl.getRealPreparedStatement()
method.
This class implements the JDBC 4.1 interface.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Object
An Integer, an int array or a String array that specifies generated key columns, or null if there are no generated key columns.(package private) final String
SQL used to create me.Fields inherited from class org.apache.derby.iapi.jdbc.BrokeredStatement
control, resultSetConcurrency, resultSetHoldability, resultSetType
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
ConstructorsConstructorDescriptionBrokeredPreparedStatement
(BrokeredStatementControl control, String sql, Object generatedKeys) -
Method Summary
Modifier and TypeMethodDescriptionfinal void
addBatch()
JDBC 2.0 Add a set of parameters to the batch.final void
In general, parameter values remain in force for repeated use of a Statement.void
close()
In many cases, it is desirable to immediately release a Statements's database and JDBC resources instead of waiting for this to happen when it is automatically closed; the close method provides this immediate release.createDuplicateStatement
(Connection conn, PreparedStatement oldStatement) Create a duplicate PreparedStatement to this, including state, from the passed in Connection.final boolean
execute()
long
final ResultSet
A prepared SQL query is executed and its ResultSet is returned.final int
Execute a SQL INSERT, UPDATE or DELETE statement.final ResultSetMetaData
JDBC 2.0 The number, types and properties of a ResultSet's columns are provided by the getMetaData method.final ParameterMetaData
(package private) PreparedStatement
Access the underlying PreparedStatement.final Statement
Override the BrokeredStatement's getStatement() to always return a PreparedStatement.final long
Get the version of the prepared statement.final void
final void
setAsciiStream
(int parameterIndex, InputStream x) Sets the designated parameter to the given input stream.final void
setAsciiStream
(int parameterIndex, InputStream x, int length) We do this inefficiently and read it all in here.final void
setAsciiStream
(int parameterIndex, InputStream x, long length) Sets the designated parameter to the given input stream, which will have the specified number of bytes.final void
setBigDecimal
(int parameterIndex, BigDecimal x) Set a parameter to a java.math.BigDecimal value.void
setBinaryStream
(int parameterIndex, InputStream x) final void
setBinaryStream
(int parameterIndex, InputStream x, int length) final void
setBinaryStream
(int parameterIndex, InputStream x, long length) Sets the designated parameter to the given input stream, which will have the specified number of bytes.final void
setBlob
(int parameterIndex, InputStream inputStream) Sets the designated parameter to aInputStream
object.final void
setBlob
(int parameterIndex, InputStream inputStream, long length) final void
final void
setBoolean
(int parameterIndex, boolean x) Set a parameter to a Java boolean value.final void
setByte
(int parameterIndex, byte x) Set a parameter to a Java byte value.final void
setBytes
(int parameterIndex, byte[] x) Set a parameter to a Java array of bytes.void
setCharacterStream
(int parameterIndex, Reader reader) final void
setCharacterStream
(int parameterIndex, Reader reader, int length) final void
setCharacterStream
(int parameterIndex, Reader x, long length) Sets the designated parameter to the given Reader, which will have the specified number of bytes.final void
Sets the designated parameter to aReader
object.final void
final void
final void
Set a parameter to a java.sql.Date value.final void
final void
setDouble
(int parameterIndex, double x) Set a parameter to a Java double value.final void
setFloat
(int parameterIndex, float x) Set a parameter to a Java float value.final void
setInt
(int parameterIndex, int x) Set a parameter to a Java int value.final void
setLong
(int parameterIndex, long x) Set a parameter to a Java long value.final void
setNCharacterStream
(int parameterIndex, Reader value) final void
setNCharacterStream
(int index, Reader value, long length) final void
final void
final void
final void
setNString
(int index, String value) final void
setNull
(int parameterIndex, int sqlType) Set a parameter to SQL NULL.final void
Set a parameter to SQL NULL.final void
Set the value of a parameter using an object; use the java.lang equivalent objects for integral values.final void
This method is like setObject above, but assumes a scale of zero.final void
The interface says that the type of the Object parameter must be compatible with the type of the targetSqlType.final void
final void
final void
setShort
(int parameterIndex, short x) Set a parameter to a Java short value.final void
final void
Set a parameter to a Java String value.final void
Set a parameter to a java.sql.Time value.final void
final void
setTimestamp
(int parameterIndex, Timestamp x) Set a parameter to a java.sql.Timestamp value.final void
setTimestamp
(int i, Timestamp x, Calendar cal) final void
setUnicodeStream
(int parameterIndex, InputStream x, int length) Deprecated.final void
Methods inherited from class org.apache.derby.iapi.jdbc.BrokeredStatement
addBatch, cancel, checkIfClosed, clearBatch, clearWarnings, closeOnCompletion, controlCheck, createDuplicateStatement, execute, execute, execute, execute, executeBatch, executeLargeBatch, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeQuery, executeUpdate, executeUpdate, executeUpdate, executeUpdate, getConnection, getFetchDirection, getFetchSize, getGeneratedKeys, getLargeMaxRows, getLargeUpdateCount, getMaxFieldSize, getMaxRows, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getUpdateCount, getWarnings, isClosed, isCloseOnCompletion, isPoolable, isWrapperFor, setCursorName, setEscapeProcessing, setFetchDirection, setFetchSize, setLargeMaxRows, setMaxFieldSize, setMaxRows, setPoolable, setQueryTimeout, setStatementState, unableToUnwrap, unwrap, wrapResultSet
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.derby.iapi.jdbc.EngineStatement
closeOnCompletion, executeLargeBatch, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, getLargeMaxRows, getLargeUpdateCount, isCloseOnCompletion, setLargeMaxRows
Methods inherited from interface java.sql.PreparedStatement
setObject, setObject
Methods inherited from interface java.sql.Statement
addBatch, cancel, clearBatch, clearWarnings, enquoteIdentifier, enquoteLiteral, enquoteNCharLiteral, execute, execute, execute, execute, executeBatch, executeQuery, executeUpdate, executeUpdate, executeUpdate, executeUpdate, getConnection, getFetchDirection, getFetchSize, getGeneratedKeys, getMaxFieldSize, getMaxRows, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getUpdateCount, getWarnings, isClosed, isPoolable, isSimpleIdentifier, setCursorName, setEscapeProcessing, setFetchDirection, setFetchSize, setMaxFieldSize, setMaxRows, setPoolable, setQueryTimeout
Methods inherited from interface java.sql.Wrapper
isWrapperFor, unwrap
-
Field Details
-
sql
SQL used to create me. -
generatedKeys
An Integer, an int array or a String array that specifies generated key columns, or null if there are no generated key columns.
-
-
Constructor Details
-
BrokeredPreparedStatement
public BrokeredPreparedStatement(BrokeredStatementControl control, String sql, Object generatedKeys) throws SQLException - Throws:
SQLException
-
-
Method Details
-
executeQuery
A prepared SQL query is executed and its ResultSet is returned.- Specified by:
executeQuery
in interfacePreparedStatement
- Returns:
- a ResultSet that contains the data produced by the query; never null
- Throws:
SQLException
- thrown on failure.
-
executeUpdate
Execute a 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 interfacePreparedStatement
- Returns:
- either the row count for INSERT, UPDATE or DELETE; or 0 for SQL statements that return nothing
- Throws:
SQLException
- thrown on failure.
-
close
Description copied from class:BrokeredStatement
In many cases, it is desirable to immediately release a Statements's database and JDBC resources instead of waiting for this to happen when it is automatically closed; the close method provides this immediate release.Note: A Statement is automatically closed when it is garbage collected. When a Statement is closed its current ResultSet, if one exists, is also closed.
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceStatement
- Overrides:
close
in classBrokeredStatement
- Throws:
SQLException
- thrown on failure.
-
setNull
Set a parameter to SQL NULL.Note: You must specify the parameter's SQL type.
- Specified by:
setNull
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...sqlType
- SQL type code defined by java.sql.Types- Throws:
SQLException
- thrown on failure.
-
setNull
Set a parameter to SQL NULL.Note: You must specify the parameter's SQL type.
- Specified by:
setNull
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...sqlType
- SQL type code defined by java.sql.Types- Throws:
SQLException
- thrown on failure.
-
setBoolean
Set a parameter to a Java boolean value. According to the JDBC API spec, the driver converts this to a SQL BIT value when it sends it to the database. But we don't have to do this, since the database engine supports a boolean type.- Specified by:
setBoolean
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the parameter value- Throws:
SQLException
- thrown on failure.
-
setByte
Set a parameter to a Java byte value. The driver converts this to a SQL TINYINT value when it sends it to the database.- Specified by:
setByte
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the parameter value- Throws:
SQLException
- thrown on failure.
-
setShort
Set a parameter to a Java short value. The driver converts this to a SQL SMALLINT value when it sends it to the database.- Specified by:
setShort
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the parameter value- Throws:
SQLException
- thrown on failure.
-
setInt
Set a parameter to a Java int value. The driver converts this to a SQL INTEGER value when it sends it to the database.- Specified by:
setInt
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the parameter value- Throws:
SQLException
- thrown on failure.
-
setLong
Set a parameter to a Java long value. The driver converts this to a SQL BIGINT value when it sends it to the database.- Specified by:
setLong
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the parameter value- Throws:
SQLException
- thrown on failure.
-
setFloat
Set a parameter to a Java float value. The driver converts this to a SQL FLOAT value when it sends it to the database.- Specified by:
setFloat
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the parameter value- Throws:
SQLException
- thrown on failure.
-
setDouble
Set a parameter to a Java double value. The driver converts this to a SQL DOUBLE value when it sends it to the database.- Specified by:
setDouble
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the parameter value- Throws:
SQLException
- thrown on failure.
-
setBigDecimal
Set a parameter to a java.math.BigDecimal value. The driver converts this to a SQL NUMERIC value when it sends it to the database.- Specified by:
setBigDecimal
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the parameter value- Throws:
SQLException
- thrown on failure.
-
setString
Set a parameter to a Java String value. The driver converts this to a SQL VARCHAR or LONGVARCHAR value (depending on the arguments size relative to the driver's limits on VARCHARs) when it sends it to the database.- Specified by:
setString
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the parameter value- Throws:
SQLException
- thrown on failure.
-
setBytes
Set a parameter to a Java array of bytes. The driver converts this to a SQL VARBINARY or LONGVARBINARY (depending on the argument's size relative to the driver's limits on VARBINARYs) when it sends it to the database.- Specified by:
setBytes
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the parameter value- Throws:
SQLException
- thrown on failure.
-
setDate
Set a parameter to a java.sql.Date value. The driver converts this to a SQL DATE value when it sends it to the database.- Specified by:
setDate
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the parameter value- Throws:
SQLException
- thrown on failure.
-
setTime
Set a parameter to a java.sql.Time value. The driver converts this to a SQL TIME value when it sends it to the database.- Specified by:
setTime
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the parameter value- Throws:
SQLException
- thrown on failure.
-
setTimestamp
Set a parameter to a java.sql.Timestamp value. The driver converts this to a SQL TIMESTAMP value when it sends it to the database.- Specified by:
setTimestamp
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the parameter value- Throws:
SQLException
- thrown on failure.
-
setAsciiStream
We do this inefficiently and read it all in here. The target type is assumed to be a String.- Specified by:
setAsciiStream
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the java input stream which contains the ASCII parameter valuelength
- the number of bytes in the stream- Throws:
SQLException
- thrown on failure.
-
setUnicodeStream
public final void setUnicodeStream(int parameterIndex, InputStream x, int length) throws SQLException Deprecated.We do this inefficiently and read it all in here. The target type is assumed to be a String. The unicode source is assumed to be in char[]. RESOLVE: might it be in UTF, instead? that'd be faster!- Specified by:
setUnicodeStream
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the java input stream which contains the UNICODE parameter valuelength
- the number of bytes in the stream- Throws:
SQLException
- thrown on failure.
-
setBinaryStream
public final void setBinaryStream(int parameterIndex, InputStream x, int length) throws SQLException - Specified by:
setBinaryStream
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the java input stream which contains the binary parameter valuelength
- the number of bytes in the stream- Throws:
SQLException
- thrown on failure.
-
addBatch
JDBC 2.0 Add a set of parameters to the batch.- Specified by:
addBatch
in interfacePreparedStatement
- Throws:
SQLException
- if a database-access error occurs.
-
clearParameters
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 clearParameters.
- Specified by:
clearParameters
in interfacePreparedStatement
- Throws:
SQLException
- thrown on failure.
-
getMetaData
JDBC 2.0 The number, types and properties of a ResultSet's columns are provided by the getMetaData method.- Specified by:
getMetaData
in interfacePreparedStatement
- Returns:
- the description of a ResultSet's columns
- Throws:
SQLException
- Feature not implemented for now.
-
setObject
public final void setObject(int parameterIndex, Object x, int targetSqlType, int scale) throws SQLException The interface says that the type of the Object parameter must be compatible with the type of the targetSqlType. We check that, and if it flies, we expect the underlying engine to do the required conversion once we pass in the value using its type. So, an Integer converting to a CHAR is done via setInteger() support on the underlying CHAR type.If x is null, it won't tell us its type, so we pass it on to setNull
- Specified by:
setObject
in interfacePreparedStatement
- Parameters:
parameterIndex
- The first parameter is 1, the second is 2, ...x
- The object containing the input parameter valuetargetSqlType
- 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. For all other types this value will be ignored,- Throws:
SQLException
- thrown on failure.
-
setObject
This method is like setObject above, but assumes a scale of zero.- Specified by:
setObject
in interfacePreparedStatement
- Throws:
SQLException
- thrown on failure.
-
setObject
Set the value of a parameter using an object; use the java.lang equivalent objects for integral values.
The JDBC specification specifies a standard mapping from Java Object types to SQL types. The given argument java object will be converted to the corresponding SQL type before being sent to the database.
Note that this method may be used to pass datatabase specific abstract data types, by using a Driver specific Java type.
- Specified by:
setObject
in interfacePreparedStatement
- Parameters:
parameterIndex
- The first parameter is 1, the second is 2, ...x
- The object containing the input parameter value- Throws:
SQLException
- thrown on failure.
-
execute
- Specified by:
execute
in interfacePreparedStatement
- Throws:
SQLException
- thrown on failure.- See Also:
-
setCharacterStream
public final void setCharacterStream(int parameterIndex, Reader reader, int length) throws SQLException - Specified by:
setCharacterStream
in interfacePreparedStatement
- Throws:
SQLException
-
setRef
- Specified by:
setRef
in interfacePreparedStatement
- Throws:
SQLException
-
setBlob
- Specified by:
setBlob
in interfacePreparedStatement
- Throws:
SQLException
-
setClob
- Specified by:
setClob
in interfacePreparedStatement
- Throws:
SQLException
-
setArray
- Specified by:
setArray
in interfacePreparedStatement
- Throws:
SQLException
-
setDate
- Specified by:
setDate
in interfacePreparedStatement
- Throws:
SQLException
-
setTime
- Specified by:
setTime
in interfacePreparedStatement
- Throws:
SQLException
-
setTimestamp
- Specified by:
setTimestamp
in interfacePreparedStatement
- Throws:
SQLException
-
executeLargeUpdate
- Specified by:
executeLargeUpdate
in interfaceEnginePreparedStatement
- Specified by:
executeLargeUpdate
in interfacePreparedStatement
- Throws:
SQLException
-
setBinaryStream
- Specified by:
setBinaryStream
in interfacePreparedStatement
- Throws:
SQLException
-
setCharacterStream
- Specified by:
setCharacterStream
in interfacePreparedStatement
- Throws:
SQLException
-
setURL
- Specified by:
setURL
in interfacePreparedStatement
- Throws:
SQLException
-
getParameterMetaData
- Specified by:
getParameterMetaData
in interfacePreparedStatement
- Throws:
SQLException
-
setRowId
- Specified by:
setRowId
in interfacePreparedStatement
- Throws:
SQLException
-
setNString
- Specified by:
setNString
in interfacePreparedStatement
- Throws:
SQLException
-
setNCharacterStream
- Specified by:
setNCharacterStream
in interfacePreparedStatement
- Throws:
SQLException
-
setNCharacterStream
- Specified by:
setNCharacterStream
in interfacePreparedStatement
- Throws:
SQLException
-
setNClob
- Specified by:
setNClob
in interfacePreparedStatement
- Throws:
SQLException
-
setClob
- Specified by:
setClob
in interfacePreparedStatement
- Throws:
SQLException
-
setBlob
public final void setBlob(int parameterIndex, InputStream inputStream, long length) throws SQLException - Specified by:
setBlob
in interfacePreparedStatement
- Throws:
SQLException
-
setNClob
- Specified by:
setNClob
in interfacePreparedStatement
- Throws:
SQLException
-
setNClob
- Specified by:
setNClob
in interfacePreparedStatement
- Throws:
SQLException
-
setSQLXML
- Specified by:
setSQLXML
in interfacePreparedStatement
- Throws:
SQLException
-
setAsciiStream
Sets the designated parameter to the given input stream.- Specified by:
setAsciiStream
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the Java input stream that contains the ASCII parameter value- Throws:
SQLException
- if a database access error occurs or this method is called on a closedPreparedStatement
-
setAsciiStream
public final void setAsciiStream(int parameterIndex, InputStream x, long length) throws SQLException Sets the designated parameter to the given input stream, which will have the specified number of bytes.- Specified by:
setAsciiStream
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the java input stream which contains the ASCII parameter valuelength
- the number of bytes in the stream- Throws:
SQLException
- thrown on failure.
-
setBinaryStream
public final void setBinaryStream(int parameterIndex, InputStream x, long length) throws SQLException Sets the designated parameter to the given input stream, which will have the specified number of bytes.- Specified by:
setBinaryStream
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the java input stream which contains the binary parameter valuelength
- the number of bytes in the stream- Throws:
SQLException
- thrown on failure.
-
setBlob
Sets the designated parameter to aInputStream
object. This method differs from thesetBinaryStream(int, InputStream)
method because it informs the driver that the parameter value should be sent to the server as aBLOB
.- Specified by:
setBlob
in interfacePreparedStatement
- Parameters:
inputStream
- an object that contains the data to set the parameter value to.- Throws:
SQLException
- if a database access error occurs, this method is called on a closedPreparedStatement
-
setCharacterStream
Sets the designated parameter to the given Reader, which will have the specified number of bytes.- Specified by:
setCharacterStream
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...x
- the java Reader which contains the UNICODE valuelength
- the number of bytes in the stream- Throws:
SQLException
- thrown on failure.
-
setClob
Sets the designated parameter to aReader
object. This method differs from thesetCharacterStream(int,Reader)
method because it informs the driver that the parameter value should be sent to the server as aCLOB
.- Specified by:
setClob
in interfacePreparedStatement
- Parameters:
parameterIndex
- the first parameter is 1, the second is 2, ...reader
- an object that contains the data to set the parameter value to.- Throws:
SQLException
- if a database access error occurs, this method is called on a closed PreparedStatement
-
getPreparedStatement
Access the underlying PreparedStatement. This method is package protected to restrict access to the underlying object to the brokered objects. Allowing the application to access the underlying object thtough a public method would- Throws:
SQLException
-
getStatement
Override the BrokeredStatement's getStatement() to always return a PreparedStatement.- Overrides:
getStatement
in classBrokeredStatement
- Throws:
SQLException
-
createDuplicateStatement
public PreparedStatement createDuplicateStatement(Connection conn, PreparedStatement oldStatement) throws SQLException Create a duplicate PreparedStatement to this, including state, from the passed in Connection.- Throws:
SQLException
-
getVersionCounter
Description copied from interface:EnginePreparedStatement
Get the version of the prepared statement. If this has not been changed, the caller may assume that a recompilation has not taken place, i.e. meta-data are (also) unchanged.- Specified by:
getVersionCounter
in interfaceEnginePreparedStatement
- Returns:
- version counter
- Throws:
SQLException
-