com.ibm.as400.access
Class AS400JDBCStatement
java.lang.Object
|
+--com.ibm.as400.access.AS400JDBCStatement
- Direct Known Subclasses:
- AS400JDBCPreparedStatement
- public class AS400JDBCStatement
- extends java.lang.Object
- implements java.sql.Statement
The AS400JDBCStatement class provides a mechanism for
executing static SQL statements. Use Connection.createStatement()
to create new Statement objects.
Only one result set per statement can be open at any point in time.
Therefore, if an application needs to read from multiple result sets,
then each must be generated by a different statement.
AS400JDBCStatements are thread-safe.
Note that the connection keeps a reference to each statement that
it creates. This means that statements will not get garbage collected
until the connection gets garbage collected. It is best to
explicitly close statements rather than counting on garbage collection.
Method Summary |
void |
addBatch(java.lang.String sql)
Adds an SQL statement to the current batch of SQL statements. |
void |
cancel()
Cancels the statement. |
void |
clearBatch()
Clears the current batch of SQL statements. |
void |
clearWarnings()
Clears all warnings that have been reported for the statement. |
void |
close()
Releases the statement's resources immediately instead of waiting
for them to be automatically released. |
boolean |
execute(java.lang.String sql)
Runs an SQL statement that may return multiple result sets. |
int[] |
executeBatch()
Runs the batch of SQL statements. |
java.sql.ResultSet |
executeQuery(java.lang.String sql)
Runs an SQL statement that returns a single result set. |
int |
executeUpdate(java.lang.String sql)
Runs an SQL INSERT, UPDATE, or DELETE statement, or any
SQL statement that does not return a result set. |
protected void |
finalize()
Closes the statement if not explicitly closed by the caller. |
java.sql.Connection |
getConnection()
Returns the connection for this statement. |
int |
getFetchDirection()
Returns the fetch direction. |
int |
getFetchSize()
Returns the fetch size. |
int |
getMaxFieldSize()
Returns the maximum field size limit for the statement. |
int |
getMaxRows()
Returns the maximum rows limit for the statement. |
boolean |
getMoreResults()
Returns the next result set. |
int |
getQueryTimeout()
Returns the query timeout limit for this statement. |
java.sql.ResultSet |
getResultSet()
Returns the current result set. |
int |
getResultSetConcurrency()
Returns the result set concurrency to be used for this statement. |
int |
getResultSetType()
Returns the result set type to be used for this statement. |
int |
getUpdateCount()
Returns the current update count. |
java.sql.SQLWarning |
getWarnings()
Returns the first warning reported for the statement. |
void |
setCursorName(java.lang.String cursorName)
Sets the SQL cursor name that will be used by the statement. |
void |
setEscapeProcessing(boolean escapeProcessing)
Sets the escape processing mode. |
void |
setFetchDirection(int fetchDirection)
Sets the direction in which the rows in a result set will be
processed. |
void |
setFetchSize(int fetchSize)
Sets the number of rows to be fetched from the database when more
rows are needed. |
void |
setMaxFieldSize(int maxFieldSize)
Sets the maximum field size limit. |
void |
setMaxRows(int maxRows)
Sets the maximum rows limit. |
void |
setQueryTimeout(int queryTimeout)
Sets the query timeout limit. |
java.lang.String |
toString()
Returns the statement name. |
Methods inherited from class java.lang.Object |
clone,
equals,
getClass,
hashCode,
notify,
notifyAll,
wait,
wait,
wait |
addBatch
public void addBatch(java.lang.String sql)
throws java.sql.SQLException
- Adds an SQL statement to the current batch of SQL statements.
- Specified by:
- addBatch in interface java.sql.Statement
- Parameters:
sql
- The SQL statement to be added to the current batch.
This can be any SQL statement that does not return
a result set.- Throws:
- java.sql.SQLException - If the statement is not open or
the SQL statement contains a syntax
error.
cancel
public void cancel()
throws java.sql.SQLException
- Cancels the statement. This is useful when one thread
needs to cancel a statement that is being executed by another
thread. This will close the current result set.
- Specified by:
- cancel in interface java.sql.Statement
- Throws:
- java.sql.SQLException - If the statement is not open or
an error occurs.
clearBatch
public void clearBatch()
throws java.sql.SQLException
- Clears the current batch of SQL statements.
- Specified by:
- clearBatch in interface java.sql.Statement
- Throws:
- java.sql.SQLException - If the statement is not open.
clearWarnings
public void clearWarnings()
throws java.sql.SQLException
- Clears all warnings that have been reported for the statement.
After this call, getWarnings() returns null until a new warning
is reported for the statement.
- Specified by:
- clearWarnings in interface java.sql.Statement
- Throws:
- java.sql.SQLException - If an error occurs.
close
public void close()
throws java.sql.SQLException
- Releases the statement's resources immediately instead of waiting
for them to be automatically released. This closes the current
result set.
- Specified by:
- close in interface java.sql.Statement
- Throws:
- java.sql.SQLException - If an error occurs.
execute
public boolean execute(java.lang.String sql)
throws java.sql.SQLException
- Runs an SQL statement that may return multiple result sets.
This closes the current result set and clears warnings before
executing the new SQL statement.
Under some situations, a single SQL statement may return
multiple result sets, an update count, or both. This might occur
when executing a stored procedure that returns multiple
result sets or when dynamically executing an unknown SQL string.
Use getMoreResults(), getResultSet(), and getUpdateCount()
to navigate through multiple result sets, an update count, or
both.
- Specified by:
- execute in interface java.sql.Statement
- Parameters:
sql
- The SQL statement.- Returns:
- true if a result set was returned, false
if an update count was returned or nothing
was returned.
- Throws:
- java.sql.SQLException - If the statement is not open,
the SQL statement contains a syntax
error, the query timeout limit is
exceeded, or an error occurs.
executeBatch
public int[] executeBatch()
throws java.sql.SQLException
- Runs the batch of SQL statements. Batch updates can be used
to submit a set of SQL statements together as a single unit.
The SQL statements are run in the order in which they were
added to the batch. The batch is cleared after the SQL statements
are run. In addition, this closes the current result set and
clears warnings before executing the new SQL statement.
When batch updates are run, autocommit should usually be turned off.
This allows the caller to decide whether or not to commit the
transaction in the event that an error occurs and some of the
SQL statements in a batch fail to run.
- Specified by:
- executeBatch in interface java.sql.Statement
- Returns:
- An array of row counts for the SQL statements that are run.
The array contains one element for each statement in the
batch of SQL statements. The array is ordered according to
the order in which the SQL statements were added to the batch.
- Throws:
- java.sql.SQLException - If the statement is not open,
an SQL statement contains a syntax
error, the query timeout limit is
exceeded, an SQL statement returns
a result set, or an error occurs.
executeQuery
public java.sql.ResultSet executeQuery(java.lang.String sql)
throws java.sql.SQLException
- Runs an SQL statement that returns a single result set.
This closes the current result set and clears warnings
before executing the new SQL statement.
- Specified by:
- executeQuery in interface java.sql.Statement
- Parameters:
sql
- The SQL statement.- Returns:
- The result set that contains the data produced
by the query.
- Throws:
- java.sql.SQLException - If the statement is not open,
the SQL statement contains a syntax
error, no result set is returned by the
database, the query timeout limit is
exceeded, or an error occurs.
executeUpdate
public int executeUpdate(java.lang.String sql)
throws java.sql.SQLException
- Runs an SQL INSERT, UPDATE, or DELETE statement, or any
SQL statement that does not return a result set.
This closes the current result set and clears warnings
before executing the new SQL statement.
- Specified by:
- executeUpdate in interface java.sql.Statement
- Parameters:
sql
- The SQL statement.- Returns:
- Either the row count for INSERT, UPDATE, or
DELETE, or 0 for SQL statements that
return nothing.
- Throws:
- java.sql.SQLException - If the statement is not open,
the SQL statement contains a syntax
error, the query timeout limit is
exceeded, the statement returns
a result set, or an error occurs.
finalize
protected void finalize()
throws java.lang.Throwable
- Closes the statement if not explicitly closed by the caller.
- Overrides:
- finalize in class java.lang.Object
- Throws:
- java.lang.Throwable - If an error occurs.
getConnection
public java.sql.Connection getConnection()
throws java.sql.SQLException
- Returns the connection for this statement.
- Specified by:
- getConnection in interface java.sql.Statement
- Returns:
- The connection for this statement.
- Throws:
- java.sql.SQLException - If an error occurs.
getFetchDirection
public int getFetchDirection()
throws java.sql.SQLException
- Returns the fetch direction.
- Specified by:
- getFetchDirection in interface java.sql.Statement
- Returns:
- The fetch direction.
- Throws:
- java.sql.SQLException - If the statement is not open.
getFetchSize
public int getFetchSize()
throws java.sql.SQLException
- Returns the fetch size.
- Specified by:
- getFetchSize in interface java.sql.Statement
- Returns:
- The fetch size.
- Throws:
- java.sql.SQLException - If the statement is not open.
getMaxFieldSize
public int getMaxFieldSize()
throws java.sql.SQLException
- Returns the maximum field size limit for the statement.
The maximum field size limit is the maximum amount of data
returned for any column value. It applies only to BINARY,
VARBINARY, CHAR, and VARCHAR fields. If the limit is exceeded,
then the excess data is discarded.
- Specified by:
- getMaxFieldSize in interface java.sql.Statement
- Returns:
- The maximum field size limit (in bytes), or
0 for no limit.
- Throws:
- java.sql.SQLException - If the statement is not open.
getMaxRows
public int getMaxRows()
throws java.sql.SQLException
- Returns the maximum rows limit for the statement.
The maximum rows limit is the maximum number of rows that a
result set can contain. If the limit is exceeded, then the
excess rows are dropped.
- Specified by:
- getMaxRows in interface java.sql.Statement
- Returns:
- The maximum rows limit, or 0 for no limit.
- Throws:
- java.sql.SQLException - If the statement is not open.
getMoreResults
public boolean getMoreResults()
throws java.sql.SQLException
- Returns the next result set. This closes the
current result set.
- Specified by:
- getMoreResults in interface java.sql.Statement
- Returns:
- true if another result set is available, false
if there are no more result sets.
- Throws:
- java.sql.SQLException - If an error occurs.
getQueryTimeout
public int getQueryTimeout()
throws java.sql.SQLException
- Returns the query timeout limit for this statement.
The query timeout limit is the number of seconds that the
driver will wait for an SQL statement to execute.
- Specified by:
- getQueryTimeout in interface java.sql.Statement
- Returns:
- The query timeout limit (in seconds), or
0 for no limit.
- Throws:
- java.sql.SQLException - If the statement is not open.
getResultSet
public java.sql.ResultSet getResultSet()
throws java.sql.SQLException
- Returns the current result set.
- Specified by:
- getResultSet in interface java.sql.Statement
- Returns:
- The current result set, or null if an update
count was returned or there are no more
result sets.
- Throws:
- java.sql.SQLException - If the statement is not open.
getResultSetConcurrency
public int getResultSetConcurrency()
throws java.sql.SQLException
- Returns the result set concurrency to be used for this statement.
- Specified by:
- getResultSetConcurrency in interface java.sql.Statement
- Returns:
- The result set concurrency.
- Throws:
- java.sql.SQLException - If the statement is not open.
getResultSetType
public int getResultSetType()
throws java.sql.SQLException
- Returns the result set type to be used for this statement.
- Specified by:
- getResultSetType in interface java.sql.Statement
- Returns:
- The result set type.
- Throws:
- java.sql.SQLException - If the statement is not open.
getUpdateCount
public int getUpdateCount()
throws java.sql.SQLException
- Returns the current update count.
- Specified by:
- getUpdateCount in interface java.sql.Statement
- Returns:
- The update count, or -1 if a result set was
returned or there are no more result sets.
- Throws:
- java.sql.SQLException - If the statement is not open.
getWarnings
public java.sql.SQLWarning getWarnings()
throws java.sql.SQLException
- Returns the first warning reported for the statement.
Subsequent warnings may be chained to this warning.
- Specified by:
- getWarnings in interface java.sql.Statement
- Returns:
- The first warning, or null if no warnings
have been reported.
- Throws:
- java.sql.SQLException - If an error occurs.
setCursorName
public void setCursorName(java.lang.String cursorName)
throws java.sql.SQLException
- Sets the SQL cursor name that will be used by the statement.
Cursor names must be unique within the connection.
The cursor name can only be set when no result set is open.
The cursor name can be used in SQL positioned UPDATE or DELETE
statements to identify the current row in the result set generated
by this statement. By definition, SQL positioned UPDATEs or
DELETEs must be executed by a different statement than the one
that generated the result set being used for positioning.
Cursor names are case sensitive. However, when using a cursor
name within other SQL positioned UPDATE or DELETE statements,
the cursor name will be uppercased. If you use a cursor name
with lowercase characters, you need to enclose it in double
quotes when referring to it in other SQL statements.
- Specified by:
- setCursorName in interface java.sql.Statement
- Parameters:
cursorName
- The cursor name. If null, a unique
default name will be used.- Throws:
- java.sql.SQLException - If the statement is not open,
a result set is open, the cursor
name is not unique within the
connection, or an error occurs.
setEscapeProcessing
public void setEscapeProcessing(boolean escapeProcessing)
throws java.sql.SQLException
- Sets the escape processing mode. When processing escape
clauses, the JDBC driver substitutes escape clauses
in SQL statements with DB2 for OS/400 SQL grammar elements.
If escape processing is not needed, then setting the escape
processing mode to false improves performance.
- Specified by:
- setEscapeProcessing in interface java.sql.Statement
- Parameters:
escapeProcessing
- true to process escape clauses;
false otherwise. The default
is true.- Throws:
- java.sql.SQLException - If the statement is not open.
setFetchDirection
public void setFetchDirection(int fetchDirection)
throws java.sql.SQLException
- Sets the direction in which the rows in a result set will be
processed.
This setting is not used.
- Specified by:
- setFetchDirection in interface java.sql.Statement
- Parameters:
fetchDirection
- The fetch direction for processing rows.
Valid values are:
- ResultSet.FETCH_FORWARD
- ResultSet.FETCH_REVERSE
- ResultSet.FETCH_UNKNOWN
The default is ResultSet.FETCH_FORWARD.- Throws:
- java.sql.SQLException - If the statement is not open,
the result set type is
ResultSet.TYPE_FORWARD_ONLY,
and the input value is not
ResultSet.FETCH_FORWARD,
or the input value is not valid.
setFetchSize
public void setFetchSize(int fetchSize)
throws java.sql.SQLException
- Sets the number of rows to be fetched from the database when more
rows are needed. The number of rows specified only affects result
sets created using this statement. If the value specified is zero,
then the driver will choose an appropriate fetch size.
This setting only affects statements that meet the criteria
specified in the "block criteria" property. The fetch size
is only used if the "block size" property is set to "0".
- Specified by:
- setFetchSize in interface java.sql.Statement
- Parameters:
fetchSize
- The number of rows. This must be greater than
or equal to 0 and less than or equal to the
maximum rows limit. The default is zero.- Throws:
- java.sql.SQLException - If the statement is not open
or the input value is not valid.
setMaxFieldSize
public void setMaxFieldSize(int maxFieldSize)
throws java.sql.SQLException
- Sets the maximum field size limit. The maximum field size
limit is the maximum amount of data returned for any column
value. It applies only to BINARY, VARBINARY, CHAR, and VARCHAR
fields. If the limit is exceeded, then the excess data is
discarded.
- Specified by:
- setMaxFieldSize in interface java.sql.Statement
- Parameters:
maxFieldSize
- The maximum field size limit (in bytes) or
0 for no limit. The default is 0.- Throws:
- java.sql.SQLException - If the statement is not open
or the input value is not valid.
setMaxRows
public void setMaxRows(int maxRows)
throws java.sql.SQLException
- Sets the maximum rows limit. The maximum rows limit is the
maximum number of rows that a result set can contain.
If the limit is exceeded, the excess rows are dropped.
- Specified by:
- setMaxRows in interface java.sql.Statement
- Parameters:
maxRows
- The maximum rows limit or 0 for no limit.
The default is 0.- Throws:
- java.sql.SQLException - If the statement is not open
or the input value is not valid.
setQueryTimeout
public void setQueryTimeout(int queryTimeout)
throws java.sql.SQLException
- Sets the query timeout limit. The query timeout limit
is the number of seconds that the driver will wait for a
SQL statement to execute.
- Specified by:
- setQueryTimeout in interface java.sql.Statement
- Parameters:
queryTimeout
- The query timeout limit (in seconds)
or 0 for no limit. The default is 0.- Throws:
- java.sql.SQLException - If the statement is not open
or the input value is not valid.
toString
public java.lang.String toString()
- Returns the statement name.
- Overrides:
- toString in class java.lang.Object
- Returns:
- The statement name.