public interface Statement extends Wrapper, AutoCloseable
ResultSets. For any given
Statement object, only one ResultSet can be opened at one
time. A call to any of the execution methods of Statement will cause
any previously created ResultSet object for that Statement to
be closed implicitly.
To have multiple ResultSet objects opened concurrently, multiple
Statement objects must be created and then executed.
To obtain such an executable statement one needs to invoke Connection#createStatement.
ResultSet,
Connection.createStatement()| Modifier and Type | Field and Description |
|---|---|
static int |
CLOSE_ALL_RESULTS
Passing this constant to
getMoreResults() implies that all ResultSet objects previously kept open should be closed. |
static int |
CLOSE_CURRENT_RESULT
Passing this constant to
getMoreResults() implies that the current
ResultSet object should be closed. |
static int |
EXECUTE_FAILED
Indicates that an error was encountered during execution of a batch
statement.
|
static int |
KEEP_CURRENT_RESULT
Passing this constant to getMoreResults implies that the current
ResultSet object should not be closed. |
static int |
NO_GENERATED_KEYS
Indicates that generated keys should not be accessible for retrieval.
|
static int |
RETURN_GENERATED_KEYS
Indicates that generated keys should be accessible for retrieval.
|
static int |
SUCCESS_NO_INFO
Indicates that a batch statement was executed with a successful result,
but a count of the number of rows it affected is unavailable.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addBatch(String sql)
Adds a specified SQL command to the list of commands for this
Statement. |
void |
cancel()
Cancels this statement's execution if both the database and the JDBC
driver support aborting an SQL statement in flight.
|
void |
clearBatch()
Clears the current list of SQL commands for this statement.
|
void |
clearWarnings()
Clears all
SQLWarnings from this statement. |
void |
close()
Releases this statement's database and JDBC driver resources.
|
boolean |
execute(String sql)
Executes a supplied SQL statement.
|
boolean |
execute(String sql,
int autoGeneratedKeys)
Executes a supplied SQL statement.
|
boolean |
execute(String sql,
int[] columnIndexes)
Executes the supplied SQL statement.
|
boolean |
execute(String sql,
String[] columnNames)
Executes the supplied SQL statement.
|
int[] |
executeBatch()
Submits a batch of SQL commands to the database.
|
ResultSet |
executeQuery(String sql)
Executes a supplied SQL statement.
|
int |
executeUpdate(String sql)
Executes the supplied SQL statement.
|
int |
executeUpdate(String sql,
int autoGeneratedKeys)
Executes the supplied SQL statement.
|
int |
executeUpdate(String sql,
int[] columnIndexes)
Executes the supplied SQL statement.
|
int |
executeUpdate(String sql,
String[] columnNames)
Executes the supplied SQL statement.
|
Connection |
getConnection()
Gets the
Connection object which created this statement. |
int |
getFetchDirection()
Gets the default direction for fetching rows for
ResultSets
generated from this statement. |
int |
getFetchSize()
Gets the default number of rows for a fetch for the
ResultSet
objects returned from this statement. |
ResultSet |
getGeneratedKeys()
Returns auto generated keys created by executing this statement.
|
int |
getMaxFieldSize()
Gets the maximum number of bytes which can be returned as values from
character and binary type columns in a
ResultSet derived from this
statement. |
int |
getMaxRows()
Gets the maximum number of rows that a
ResultSet can contain when
produced from this statement. |
boolean |
getMoreResults()
Moves to this statement's next result.
|
boolean |
getMoreResults(int current)
Moves to this statement's next result.
|
int |
getQueryTimeout()
Gets the timeout value for the statement's execution time.
|
ResultSet |
getResultSet()
Gets the current result.
|
int |
getResultSetConcurrency()
Gets the concurrency setting for
ResultSet objects generated by
this statement. |
int |
getResultSetHoldability()
Gets the cursor hold setting for
ResultSet objects generated by
this statement. |
int |
getResultSetType()
Gets the
ResultSet type setting for ResultSets derived
from this statement. |
int |
getUpdateCount()
Gets an update count for the current result if it is not a
ResultSet. |
SQLWarning |
getWarnings()
Retrieves the first
SQLWarning reported by calls on this
statement. |
boolean |
isClosed()
Returns true if this statement has been closed, false otherwise.
|
boolean |
isPoolable()
Returns true if this statement is poolable, false otherwise.
|
void |
setCursorName(String name)
Sets the SQL cursor name.
|
void |
setEscapeProcessing(boolean enable)
Sets Escape Processing mode.
|
void |
setFetchDirection(int direction)
Sets the fetch direction - a hint to the JDBC driver about the direction
of processing of rows in
ResultSets created by this statement. |
void |
setFetchSize(int rows)
Sets the fetch size.
|
void |
setMaxFieldSize(int max)
Sets the maximum number of bytes for
ResultSet columns that
contain character or binary values. |
void |
setMaxRows(int max)
Sets the maximum number of rows that any
ResultSet can contain. |
void |
setPoolable(boolean poolable)
Hints whether this statement should be pooled.
|
void |
setQueryTimeout(int seconds)
Sets the timeout, in seconds, for queries - how long the driver will
allow for completion of a statement execution.
|
isWrapperFor, unwrapstatic final int CLOSE_ALL_RESULTS
getMoreResults() implies that all ResultSet objects previously kept open should be closed.static final int CLOSE_CURRENT_RESULT
getMoreResults() implies that the current
ResultSet object should be closed.static final int EXECUTE_FAILED
static final int KEEP_CURRENT_RESULT
ResultSet object should not be closed.static final int NO_GENERATED_KEYS
static final int RETURN_GENERATED_KEYS
static final int SUCCESS_NO_INFO
void addBatch(String sql) throws SQLException
Statement.
The list of commands is executed by invoking the executeBatch
method.
sql - the SQL command as a String. Typically an INSERT or
UPDATE statement.SQLException - if an error occurs accessing the database or the database
does not support batch updates.void cancel()
throws SQLException
SQLException - if an error occurs accessing the database.void clearBatch()
throws SQLException
SQLException - if an error occurs accessing the database or the database
does not support batch updates.void clearWarnings()
throws SQLException
SQLWarnings from this statement.SQLException - if an error occurs accessing the database.void close()
throws SQLException
Using this method to release these resources as soon as possible is strongly recommended.
One should not rely on the resources being automatically released when finalized during garbage collection. Doing so can result in unpredictable behavior for the application.
close in interface AutoCloseableSQLException - if an error occurs accessing the database.boolean execute(String sql) throws SQLException
ResultSets.
Use the getResultSet or getUpdateCount methods to get the
first result and getMoreResults to get any subsequent results.
sql - the SQL statement to executetrue if the first result is a ResultSet, false if the first result is an update count or if there is no
result.SQLException - if an error occurs accessing the database.boolean execute(String sql, int autoGeneratedKeys) throws SQLException
ResultSets. This method allows control of whether auto-generated Keys
should be made available for retrieval, if the SQL statement is an
INSERT statement.
Use the getResultSet or getUpdateCount methods to get the
first result and getMoreResults to get any subsequent results.
sql - the SQL statement to execute.autoGeneratedKeys - a flag indicating whether to make auto generated keys
available for retrieval. This parameter must be one of Statement.NO_GENERATED_KEYS or Statement.RETURN_GENERATED_KEYS.true if results exists and the first result is a ResultSet, false if the first result is an update count
or if there is no result.SQLException - if an error occurs accessing the database.boolean execute(String sql, int[] columnIndexes) throws SQLException
ResultSets. This method allows retrieval of auto generated keys
specified by the supplied array of column indexes, if the SQL statement
is an INSERT statement.
Use the getResultSet or getUpdateCount methods to get the
first result and getMoreResults to get any subsequent results.
sql - the SQL statement to execute.columnIndexes - an array of indexes of the columns in the inserted row which
should be made available for retrieval via the getGeneratedKeys method.true if the first result is a ResultSet, false if the first result is an update count or if there is no
result.SQLException - if an error occurs accessing the database.boolean execute(String sql, String[] columnNames) throws SQLException
ResultSets. This method allows retrieval of auto generated keys
specified by the supplied array of column indexes, if the SQL statement
is an INSERT statement.
Use the getResultSet or getUpdateCount methods to get the
first result and getMoreResults to get any subsequent results.
sql - the SQL statement to execute.columnNames - an array of column names in the inserted row which should be
made available for retrieval via the getGeneratedKeys
method.true if the first result is a ResultSet, false if the first result is an update count or if there is no
resultSQLException - if an error occurs accessing the database.int[] executeBatch()
throws SQLException
If one of the commands in the batch fails, this method can throw a
BatchUpdateException and the JDBC driver may or may not process
the remaining commands. The JDBC driver must behave consistently with the
underlying database, following the "all or nothing" principle. If the
driver continues processing, the array of results returned contains the
same number of elements as there are commands in the batch, with a
minimum of one of the elements having the EXECUTE_FAILED value.
SUCCESS_NO_INFO, the command
completed successfully but the number of rows affected is
unknown.
EXECUTE_FAILED, the command failed.
SQLException - if an error occurs accessing the database.ResultSet executeQuery(String sql) throws SQLException
ResultSet.sql - an SQL statement to execute. Typically a SELECT
statementResultSet containing the data produced by the SQL
statement. Never null.SQLException - if an error occurs accessing the database or if the statement
produces anything other than a single ResultSet.int executeUpdate(String sql) throws SQLException
INSERT, UPDATE or DELETE statement or a statement which
returns nothing.sql - an SQL statement to execute - an SQL INSERT, UPDATE, DELETE or a statement which returns nothingSQLException - if an error occurs accessing the database or if the statement
produces a ResultSet.int executeUpdate(String sql, int autoGeneratedKeys) throws SQLException
sql - an SQL statement to execute - an SQL INSERT, UPDATE, DELETE or a statement which does not return
anything.autoGeneratedKeys - a flag that indicates whether to allow retrieval of auto
generated keys. Parameter must be one of Statement.RETURN_GENERATED_KEYS or Statement.NO_GENERATED_KEYSSQLException - if an error occurs accessing the database or if the statement
produces a ResultSet.int executeUpdate(String sql, int[] columnIndexes) throws SQLException
sql - an SQL statement to execute - an SQL INSERT, UPDATE, DELETE or a statement which returns nothingcolumnIndexes - an array of indexes of the columns in the inserted row which
should be made available for retrieval via the getGeneratedKeys method.SQLException - if an error occurs accessing the database or if the statement
produces a ResultSet.int executeUpdate(String sql, String[] columnNames) throws SQLException
sql - an SQL statement to execute - an SQL INSERT, UPDATE, DELETE or a statement which returns nothingcolumnNames - an array of column names in the inserted row which should be
made available for retrieval via the getGeneratedKeys
method.SQLException - if an error occurs accessing the database or if the statement
produces a ResultSet.Connection getConnection() throws SQLException
Connection object which created this statement.Connection through which this statement is
transmitted to the database.SQLException - if an error occurs accessing the database.int getFetchDirection()
throws SQLException
ResultSets
generated from this statement.SQLException - if an error occurs accessing the database.int getFetchSize()
throws SQLException
ResultSet
objects returned from this statement.ResultSets produced by this
statement.SQLException - if an error occurs accessing the database.ResultSet getGeneratedKeys() throws SQLException
ResultSet containing the auto generated keys - empty if
no keys are generated by this statement.SQLException - if an error occurs accessing the database.int getMaxFieldSize()
throws SQLException
ResultSet derived from this
statement. This limit applies to BINARY, VARBINARY,
LONGVARBINARY, CHAR, VARCHAR, and LONGVARCHAR types. Any data exceeding the maximum size is abandoned
without announcement.0 means that there is no
limit.SQLException - if an error occurs accessing the database.int getMaxRows()
throws SQLException
ResultSet can contain when
produced from this statement. If the limit is exceeded, the excess rows
are discarded silently.0 means that there is no
limit.SQLException - if an error occurs accessing the database.boolean getMoreResults()
throws SQLException
true if it is a
ResultSet. Any current ResultSet objects previously
obtained with getResultSet() are closed implicitly.true if the next result is a ResultSet, false if the next result is not a ResultSet or if there
are no more results. Note that if there is no more data, this
method will return false and getUpdateCount will
return -1.SQLException - if an error occurs accessing the database.boolean getMoreResults(int current)
throws SQLException
true if the next
result is a ResultSet. Any current ResultSet objects
previously obtained with getResultSet() are handled as indicated
by a supplied Flag parameter.current - a flag indicating what to do with existing ResultSets.
This parameter must be one of Statement.CLOSE_ALL_RESULTS, Statement.CLOSE_CURRENT_RESULT or Statement.KEEP_CURRENT_RESULT.true if the next result exists and is a ResultSet
, false if the next result is not a ResultSet or
if there are no more results. Note that if there is no more data,
this method will return false and getUpdateCount
will return -1.SQLException - if an error occurs accessing the database.int getQueryTimeout()
throws SQLException
Exception is thrown.0 indicates that
there is no current timeout.SQLException - if an error occurs accessing the database.ResultSet getResultSet() throws SQLException
ResultSet for the current result. null if the
result is an update count or if there are no more results.SQLException - if an error occurs accessing the database.int getResultSetConcurrency()
throws SQLException
ResultSet objects generated by
this statement.ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE.SQLException - if an error occurs accessing the database.int getResultSetHoldability()
throws SQLException
ResultSet objects generated by
this statement.ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMITSQLException - if there is an error while accessing the database.int getResultSetType()
throws SQLException
ResultSet type setting for ResultSets derived
from this statement.ResultSet.TYPE_FORWARD_ONLY for a ResultSet where
the cursor can only move forwards, ResultSet.TYPE_SCROLL_INSENSITIVE for a ResultSet which
is scrollable but is not sensitive to changes made by others,
ResultSet.TYPE_SCROLL_SENSITIVE for a ResultSet
which is scrollable but is sensitive to changes made by others.SQLException - if there is an error accessing the database.int getUpdateCount()
throws SQLException
ResultSet.-1 if the current
result is a ResultSet or if there are no more results.SQLException - if an error occurs accessing the database.SQLWarning getWarnings() throws SQLException
SQLWarning reported by calls on this
statement. If there are multiple warnings, subsequent warnings are
chained to the first one. The chain of warnings is cleared each time the
statement is executed.
Warnings associated with reads from the ResultSet returned from
executing the statement will be attached to the ResultSet, not the
statement object.
SQLException - if an error occurs accessing the database.void setCursorName(String name) throws SQLException
Cursor names must be unique within one Connection.
With the cursor name set, it can then be used in SQL positioned
update or delete statements to determine the current row in a ResultSet generated from this statement. The positioned update or delete
must be done with a different statement than this one.
name - the Cursor name as a string,SQLException - if an error occurs accessing the database.void setEscapeProcessing(boolean enable)
throws SQLException
If Escape Processing is on, the JDBC driver will do escape substitution
on an SQL statement before sending it for execution. This does not apply
to PreparedStatements since they are processed when created,
before this method can be called.
enable - true to set escape processing mode on, false to turn it off.SQLException - if an error occurs accessing the database.void setFetchDirection(int direction)
throws SQLException
ResultSets created by this statement.
The default fetch direction is FETCH_FORWARD.direction - which fetch direction to use. This parameter should be one of
ResultSet.FETCH_UNKNOWNResultSet.FETCH_FORWARDResultSet.FETCH_REVERSESQLException - if there is an error while accessing the database or if the
fetch direction is unrecognized.void setFetchSize(int rows)
throws SQLException
rows - the number of rows that should be fetched. 0 tells the driver
to ignore the hint. Should be less than getMaxRows for
this statement. Should not be negative.SQLException - if an error occurs accessing the database, or if the rows
parameter is out of range.void setMaxFieldSize(int max)
throws SQLException
ResultSet columns that
contain character or binary values. This applies to BINARY,
VARBINARY, LONGVARBINARY, CHAR, VARCHAR,
and LONGVARCHAR fields. Any data exceeding the maximum size is
abandoned without announcement.max - the maximum field size in bytes. 0 means "no limit".SQLException - if an error occurs accessing the database or the max
value is < 0.void setMaxRows(int max)
throws SQLException
ResultSet can contain.
If the number of rows exceeds this value, the additional rows are
silently discarded.max - the maximum number of rows. 0 means "no limit".SQLException - if an error occurs accessing the database or if max < 0.void setQueryTimeout(int seconds)
throws SQLException
SQLException.seconds - timeout in seconds. 0 means no timeout ("wait forever")SQLException - if an error occurs accessing the database or if seconds <
0.boolean isClosed()
throws SQLException
SQLExceptionvoid setPoolable(boolean poolable)
throws SQLException
Statement,
but true for CallableStatement and PreparedStatement. Pool manager
implementations may or may not honor this hint.SQLExceptionboolean isPoolable()
throws SQLException
SQLException