java.sql
public
interface
java.sql.Statement
Interface used for executing static SQL statements and returning their
results.
By default, an object implementing the Statement interface can returns
results as ResultSets. For any given Statement object, only one ResultSet can
be open 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 open concurrently, multiple Statement
objects must be used.
Known Indirect Subclasses
Summary
Constants
|
|
|
Value |
|
int |
CLOSE_ALL_RESULTS |
Passing this constant to getMoreResults implies that all ResultSet
objects previously kept open should be closed. |
3 |
0x00000003 |
int |
CLOSE_CURRENT_RESULT |
Passing this constant to getMoreResults implies that the current
ResultSet object should be closed
|
1 |
0x00000001 |
int |
EXECUTE_FAILED |
Indicates that an error was encountered during execution of a batch
statement. |
-3 |
0xfffffffd |
int |
KEEP_CURRENT_RESULT |
Passing this constant to getMoreResults implies that the current
ResultSet object should not be closed. |
2 |
0x00000002 |
int |
NO_GENERATED_KEYS |
Indicates that generated keys should not be accessible for retrieval. |
2 |
0x00000002 |
int |
RETURN_GENERATED_KEYS |
Indicates that generated keys should be accessible for retrieval. |
1 |
0x00000001 |
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. |
-2 |
0xfffffffe |
Public Methods
Details
Constants
public
static
final
int
CLOSE_ALL_RESULTS
Passing this constant to getMoreResults implies that all ResultSet
objects previously kept open should be closed.
Constant Value:
3
(0x00000003)
public
static
final
int
CLOSE_CURRENT_RESULT
Passing this constant to getMoreResults implies that the current
ResultSet object should be closed
Constant Value:
1
(0x00000001)
public
static
final
int
EXECUTE_FAILED
Indicates that an error was encountered during execution of a batch
statement.
Constant Value:
-3
(0xfffffffd)
public
static
final
int
KEEP_CURRENT_RESULT
Passing this constant to getMoreResults implies that the current
ResultSet object should not be closed.
Constant Value:
2
(0x00000002)
public
static
final
int
NO_GENERATED_KEYS
Indicates that generated keys should not be accessible for retrieval.
Constant Value:
2
(0x00000002)
public
static
final
int
RETURN_GENERATED_KEYS
Indicates that generated keys should be accessible for retrieval.
Constant Value:
1
(0x00000001)
public
static
final
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.
Constant Value:
-2
(0xfffffffe)
Public Methods
public
void
addBatch(String sql)
Adds a specified SQL commands to the list of commands for this Statement.
The list of commands is executed by invoking the
executeBatch
method.
Parameters
sql
| the SQL command as a String. Typically an INSERT or UPDATE
statement. |
Throws
SQLException
| if an error occurs accessing the database or the database
does not support batch updates
|
public
void
cancel()
Cancels this Statement execution if both the database and the JDBC driver
support aborting an SQL statement in flight. This method can be used by
one thread to stop a Statement that is being executed on another thread.
public
void
clearBatch()
Clears the current list of SQL commands for this Statement.
Throws
SQLException
| if an error occurs accessing the database or the database
does not support batch updates
|
public
void
clearWarnings()
Clears all SQLWarnings from this Statement.
public
void
close()
Releases this Statement's database and JDBC driver resources.
Using this method to release these resources as soon as possible is
strongly recommended. It is not a good idea to rely on these resources
being released when the Statement object is finalized during garbage
collection. Doing so can result in unpredictable performance
characteristics for the application.
public
boolean
execute(String sql, String[] columnNames)
Executes the supplied SQL statement. This may return multiple 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.
Parameters
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. |
Returns
- true if the first result is a ResultSet, false if the first
result is an update count or if there is no result
public
boolean
execute(String sql)
Executes a supplied SQL statement. This may return multiple ResultSets.
Use the getResultSet
or getUpdateCount
methods to get the first result and getMoreResults
to get
any subsequent results.
Parameters
sql
| the SQL statement to execute |
Returns
- true if the first result is a ResultSet, false if the first
result is an update count or if there is no result
public
boolean
execute(String sql, int autoGeneratedKeys)
Executes a supplied SQL statement. This may return multiple 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.
Parameters
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 |
Returns
- 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
public
boolean
execute(String sql, int[] columnIndexes)
Executes the supplied SQL statement. This may return multiple 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.
Parameters
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. |
Returns
- true if the first result is a ResultSet, false if the first
result is an update count or if there is no result
public
int[]
executeBatch()
Submits a batch of SQL commands to the database. Returns an array of
update counts, if all the commands execute successfully.
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, either always continuing or never continuing. 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.
Returns
- an array of update counts, with one entry for each command in the
batch. The elements are ordered according to the order in which
the commands were added to the batch.
- If the value of an element is >=0, the corresponding command
completed successfully and the value is the update count for that
command, which is the number of rows in the database affected by
the command.
- If the value is SUCCESS_NO_INFO, the command completed
successfully but the number of rows affected is unknown.
-
- If the value is EXECUTE_FAILED, the command failed.
Executes a supplied SQL statement. Returns a single ResultSet.
Parameters
sql
| an SQL statement to execute. Typically a SELECT statement |
Returns
- a ResultSet containing the data produced by the SQL statement.
Never null.
Throws
SQLException
| if an error occurs accessing the database or if the statement
produces anything other than a single ResultSet
|
public
int
executeUpdate(String sql, int[] columnIndexes)
Executes the supplied SQL statement. This method allows retrieval of auto
generated keys specified by the supplied array of column indexes.
Parameters
sql
| an SQL statement to execute - an SQL INSERT, UPDATE, DELETE or
a statement which returns nothing |
columnIndexes
| an array of indexes of the columns in the inserted row which
should be made available for retrieval via the
getGeneratedKeys method. |
Returns
- the count of updated rows, or 0 for a statement that returns
nothing.
Throws
SQLException
| if an error occurs accessing the database or if the statement
produces a ResultSet
|
public
int
executeUpdate(String sql)
Executes the supplied SQL statement. The statement may be an INSERT,
UPDATE or DELETE statement or a statement which returns nothing.
Parameters
sql
| an SQL statement to execute - an SQL INSERT, UPDATE, DELETE or
a statement which returns nothing |
Returns
- the count of updated rows, or 0 for a statement that returns
nothing.
Throws
SQLException
| if an error occurs accessing the database or if the statement
produces a ResultSet
|
public
int
executeUpdate(String sql, String[] columnNames)
Executes the supplied SQL statement. This method allows retrieval of auto
generated keys specified by the supplied array of column names.
Parameters
sql
| an SQL statement to execute - an SQL INSERT, UPDATE, DELETE or
a statement which returns nothing |
columnNames
| an array of column names in the inserted row which should be
made available for retrieval via the
getGeneratedKeys method. |
Returns
- the count of updated rows, or 0 for a statement that returns
nothing.
Throws
SQLException
| if an error occurs accessing the database or if the statement
produces a ResultSet
|
public
int
executeUpdate(String sql, int autoGeneratedKeys)
Executes the supplied SQL statement. This method allows control of
whether auto-generated Keys should be made available for retrieval.
Parameters
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_KEYS |
Returns
- the number of updated rows, or 0 if the statement returns
nothing.
Throws
SQLException
| if an error occurs accessing the database or if the statement
produces a ResultSet
|
public
Connection
getConnection()
Gets the Connection that produced this Statement.
public
int
getFetchDirection()
Gets the default direction for fetching rows for ResultSets generated
from this Statement.
Returns
- an integer describing the default fetch direction, one of:
ResultSet.FETCH_FORWARD, ResultSet.FETCH_REVERSE,
ResultSet.FETCH_UNKNOWN
public
int
getFetchSize()
Gets the default number of rows for a fetch for the ResultSet objects
returned from this Statement.
Returns
- the default fetch size for ResultSets produced by this Statement
public
ResultSet
getGeneratedKeys()
Returns auto generated keys created by executing this Statement.
Returns
- a ResultSet containing the auto generated keys - empty if no keys
were generated by the Statement
public
int
getMaxFieldSize()
Gets the maximum number of bytes which can be returned for values from
Character and Binary values in a 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.
Returns
- the current size limit, where 0 means that there is no limit
public
int
getMaxRows()
Gets the maximum number of rows that a ResultSet can contain when
produced from this Statement. If the limit is exceeded, the excess rows
are discarded silently.
Returns
- the current row limit, where 0 means that there is no limit.
public
boolean
getMoreResults(int current)
Moves to this Statement's next result. Returns 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.
Parameters
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. |
Returns
- 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.
public
boolean
getMoreResults()
Moves to this Statement's next result. Returns true if it is a ResultSet.
Any current ResultSet objects previously obtained with
getResultSet()
are closed implicitly.
Returns
- 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.
public
int
getQueryTimeout()
Gets the timeout value for Statement execution. The JDBC driver will wait
up to this value for the execution to complete - after the limit is
exceeded an SQL Exception is thrown.
Returns
- the current Query Timeout value, where 0 indicates that there is
no current timeout.
public
ResultSet
getResultSet()
Gets the current result. Should only be called once per result.
Returns
- the ResultSet for the current result. null if the result is an
update count or if there are no more results.
public
int
getResultSetConcurrency()
Gets the concurrency setting for ResultSet objects generated by this
Statement.
Returns
- ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE
public
int
getResultSetHoldability()
Gets the cursor hold setting for ResultSet objects generated by this
Statement.
Returns
- ResultSet.HOLD_CURSORS_OVER_COMMIT or
ResultSet.CLOSE_CURSORS_AT_COMMIT
Throws
SQLException
| if there is an error while accessing the database
|
public
int
getResultSetType()
Gets the ResultSet type setting for ResultSets derived from this
Statement.
Returns
- ResultSet.TYPE_FORWARD_ONLY for a ResultSet where the cursor can
only move forward, 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
public
int
getUpdateCount()
Gets an update count for the current result if it is not a ResultSet.
Returns
- the current result as an update count. -1 if the current result
is a ResultSet or if there are no more results
public
SQLWarning
getWarnings()
Retrieves the first SQLWarning reported by calls on this Statement.
If there are multiple warnings, subsequent warnings are chained to the
first one.
The chain or warnings is cleared each time the Statement is executed.
Warnings associated with reads from the ResultSet returned from executing
a Statement will be attached to the ResultSet, not the Statement object.
Returns
- an SQLWarning, null if there are no warnings
public
void
setCursorName(String name)
Sets the SQL cursor name. This name is used by subsequent Statement
execute methods.
Cursor names must be unique within one Connection.
With the Cursor name set, it can then be utilized 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.
Parameters
name
| the Cursor name as a String, |
public
void
setEscapeProcessing(boolean enable)
Sets Escape Processing mode.
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.
Parameters
enable
| true to set escape processing mode on, false to turn it off. |
public
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. The
default fetch direction is FETCH_FORWARD.
Parameters
direction
| which fetch direction to use. This parameter should be one of
ResultSet.FETCH_UNKNOWN, ResultSet.FETCH_FORWARD or
ResultSet.FETCH_REVERSE |
Throws
SQLException
| if there is an error while accessing the database or if the
fetch direction is unrecognized
|
public
void
setFetchSize(int rows)
Sets the fetch size. This is a hint to the JDBC driver about how many
rows should be fetched from the database when more are required by
application processing.
Parameters
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. |
Throws
SQLException
| if an error occurs accessing the database, or if the rows
parameter is out of range.
|
public
void
setMaxFieldSize(int max)
Sets the maximum number of bytes for 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.
Parameters
max
| the maximum field size in bytes. O means "no limit". |
Throws
SQLException
| if an error occurs accessing the database or the max value is
<0.
|
public
void
setMaxRows(int max)
Sets the maximum number of rows that any ResultSet can contain. If the
number of rows exceeds this value, the additional rows are silently
discarded.
Parameters
max
| the maximum number of rows. 0 means "no limit". |
Throws
SQLException
| if an error occurs accessing the database or if max <0.
|
public
void
setQueryTimeout(int seconds)
Sets the timeout, in seconds, for queries - how long the driver will
allow for completion of a Statement execution. If the timeout is
exceeded, the query will throw an SQLException.
Parameters
seconds
| timeout in seconds. 0 means no timeout ("wait forever") |
Throws
SQLException
| if an error occurs accessing the database or if seconds <0.
|