Class AS400JDBCConnection
- java.lang.Object
-
- com.ibm.as400.access.AS400JDBCConnection
-
- All Implemented Interfaces:
- java.sql.Connection, java.sql.Wrapper
public class AS400JDBCConnection extends java.lang.Object implements java.sql.Connection
The AS400JDBCConnection class provides a JDBC connection to a specific DB2 for IBM i database. Use DriverManager.getConnection() to create new AS400JDBCConnection objects.
There are many optional properties that can be specified when the connection is created. Properties can be specified either as part of the URL or in a java.util.Properties object. See JDBC properties for a complete list of properties supported by the AS400JDBCDriver.
Note that a connection may contain at most 9999 open statements.
-
-
Field Summary
Fields Modifier and Type Field and Description protected static int
QUERY_TIMEOUT_CANCEL
protected static int
QUERY_TIMEOUT_QQRYTIMLMT
-
Method Summary
Methods Modifier and Type Method and Description void
abort(java.util.concurrent.Executor executor)
Terminates an open connection.void
clearWarnings()
Clears all warnings that have been reported for the connection.void
close()
Releases the connection's resources immediately instead of waiting for them to be automatically released.void
commit()
Commits all changes made since the previous commit or rollback and releases any database locks currently held by the connection.java.sql.Array
createArrayOf(java.lang.String typeName, java.lang.Object[] elements)
Factory method for creating Array objects.java.sql.Blob
createBlob()
Constructs an object that implements theBlob
interface.java.sql.Clob
createClob()
Constructs an object that implements theClob
interface.java.sql.NClob
createNClob()
Constructs an object that implements theNClob
interface.java.sql.SQLXML
createSQLXML()
Constructs an object that implements theSQLXML
interface.java.sql.Statement
createStatement()
Creates a Statement object for executing SQL statements without parameters.java.sql.Statement
createStatement(int resultSetType, int resultSetConcurrency)
Creates a Statement object for executing SQL statements without parameters.java.sql.Statement
createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)
Creates a Statement object for executing SQL statements without parameters.java.sql.Struct
createStruct(java.lang.String typeName, java.lang.Object[] attributes)
Factory method for creating Struct objects.boolean
doUpdateDeleteBlocking()
protected void
finalize()
Closes the connection if not explicitly closed by the caller.boolean
getAutoCommit()
Returns the auto-commit state.java.lang.String
getCatalog()
Returns the catalog name.java.util.Properties
getClientInfo()
Returns a list containing the name and current value of each client info property supported by the driver.java.lang.String
getClientInfo(java.lang.String name)
Returns the value of the client info property specified by name.int
getConcurrentAccessResolution()
This method returns the concurrent access resolution setting.int
getHoldability()
Returns the holdability of ResultSets created from this connection.int
getMaximumBlockedInputRows()
java.sql.DatabaseMetaData
getMetaData()
Returns the DatabaseMetaData object that describes the connection's tables, supported SQL grammar, stored procedures, capabilities and more.int
getNetworkTimeout()
Retrieves the number of milliseconds the driver will wait for a database request to complete.java.lang.String
getSchema()
Retrieves thisConnection
object's current schema name.java.lang.String
getServerJobIdentifier()
Returns the job identifier of the host server job corresponding to this connection.AS400
getSystem()
Returns the system object which is managing the connection to the system.int
getTransactionIsolation()
Returns the transaction isolation level.java.util.Map
getTypeMap()
Returns the type map.protected java.lang.String[]
getValidWrappedList()
java.sql.SQLWarning
getWarnings()
Returns the first warning reported for the connection.boolean
isClosed()
Indicates if the connection is closed.protected boolean
isQueryTimeoutMechanismCancel()
Is SQL cancel used for the query timeout mechanismboolean
isReadOnly()
Indicates if the connection is in read-only mode.boolean
isValid(int timeout)
Returns true if the connection has not been closed and is still valid.boolean
isWrapperFor(java.lang.Class<?> iface)
Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does.java.lang.String
nativeSQL(java.lang.String sql)
Returns the native form of an SQL statement without executing it.java.sql.CallableStatement
prepareCall(java.lang.String sql)
Precompiles an SQL stored procedure call with optional input and output parameters and stores it in a CallableStatement object.java.sql.CallableStatement
prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency)
Precompiles an SQL stored procedure call with optional input and output parameters and stores it in a CallableStatement object.java.sql.CallableStatement
prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
Precompiles an SQL stored procedure call with optional input and output parameters and stores it in a CallableStatement object.java.sql.PreparedStatement
prepareStatement(java.lang.String sql)
Precompiles an SQL statement with optional input parameters and stores it in a PreparedStatement object.java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int autoGeneratedKeys)
Precompiles an SQL statement with optional input parameters and stores it in a PreparedStatement object.java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int[] columnIndexes)
Precompiles an SQL statement with optional input parameters and stores it in a PreparedStatement object.java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency)
Precompiles an SQL statement with optional input parameters and stores it in a PreparedStatement object.java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
Precompiles an SQL statement with optional input parameters and stores it in a PreparedStatement object.java.sql.PreparedStatement
prepareStatement(java.lang.String sql, java.lang.String[] columnNames)
Precompiles an SQL statement with optional input parameters and stores it in a PreparedStatement object.void
releaseSavepoint(java.sql.Savepoint savepoint)
Removes the given Savepoint object from the current transaction.void
rollback()
Drops all changes made since the previous commit or rollback and releases any database locks currently held by the connection.void
rollback(java.sql.Savepoint savepoint)
Undoes all changes made after the specified Savepoint was set.void
setAutoCommit(boolean autoCommit)
Sets the auto-commit mode.void
setCatalog(java.lang.String catalog)
This method is not supported.void
setClientInfo(java.util.Properties properties)
Sets the value of the connection's client info properties.void
setClientInfo(java.lang.String name, java.lang.String value)
Sets the value of the client info property specified by name to the value specified by value.void
setConcurrentAccessResolution(int concurrentAccessResolution)
This method sets concurrent access resolution.void
setDB2eWLMCorrelator(byte[] bytes)
Sets the eWLM Correlator.void
setDBHostServerTrace(boolean trace)
Starts or stops the Database Host Server trace for this connection.void
setHoldability(int holdability)
Sets the holdability of ResultSets created from this connection.void
setNetworkTimeout(java.util.concurrent.Executor executor, int milliseconds)
Sets the maximum period a Connection or objects created from the Connection will wait for the database to reply to any one request.void
setNetworkTimeout(int timeout)
Sets the maximum period a Connection or objects created from the Connection will wait for the database to reply to any one request.void
setReadOnly(boolean readOnly)
Sets the read-only mode.java.sql.Savepoint
setSavepoint()
Creates an unnamed savepoint in the current transaction and returns the new Savepoint object that represents it.java.sql.Savepoint
setSavepoint(java.lang.String name)
Creates a named savepoint in the current transaction and returns the new Savepoint object that represents it.void
setSchema(java.lang.String schema)
Sets the given schema name to access.void
setTransactionIsolation(int level)
Sets the transaction isolation level.void
setTypeMap(java.util.Map typeMap)
Sets the type map to be used for distinct and structured types.java.lang.String
toString()
Returns the connection's catalog name.<T> T
unwrap(java.lang.Class<T> iface)
Returns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy.
-
-
-
Field Detail
-
QUERY_TIMEOUT_QQRYTIMLMT
protected static final int QUERY_TIMEOUT_QQRYTIMLMT
- See Also:
- Constant Field Values
-
QUERY_TIMEOUT_CANCEL
protected static final int QUERY_TIMEOUT_CANCEL
- See Also:
- Constant Field Values
-
-
Method Detail
-
clearWarnings
public void clearWarnings() throws java.sql.SQLException
Clears all warnings that have been reported for the connection. After this call, getWarnings() returns null until a new warning is reported for the connection.- Specified by:
clearWarnings
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
- If an error occurs.
-
close
public void close() throws java.sql.SQLException
Releases the connection's resources immediately instead of waiting for them to be automatically released. This rolls back any active transactions, closes all statements that are running in the context of the connection, and disconnects from the IBM i system.- Specified by:
close
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
- If an error occurs.
-
commit
public void commit() throws java.sql.SQLException
Commits all changes made since the previous commit or rollback and releases any database locks currently held by the connection. This has no effect when the connection is in auto-commit mode.This method can not be called when the connection is part of a distributed transaction. See AS400JDBCXAResource for more information.
- Specified by:
commit
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
- If the connection is not open or an error occurs.
-
createStatement
public java.sql.Statement createStatement() throws java.sql.SQLException
Creates a Statement object for executing SQL statements without parameters. If the same SQL statement is executed many times, it is more efficient to use prepareStatement().Result sets created using the statement will be type ResultSet.TYPE_FORWARD_ONLY and concurrency ResultSet.CONCUR_READ_ONLY.
- Specified by:
createStatement
in interfacejava.sql.Connection
- Returns:
- The statement object.
- Throws:
java.sql.SQLException
- If the connection is not open, the maximum number of statements for this connection has been reached, or an error occurs.
-
createStatement
public java.sql.Statement createStatement(int resultSetType, int resultSetConcurrency) throws java.sql.SQLException
Creates a Statement object for executing SQL statements without parameters. If the same SQL statement is executed many times, it is more efficient to use prepareStatement().- Specified by:
createStatement
in interfacejava.sql.Connection
- Parameters:
resultSetType
- The result set type. Valid values are:- ResultSet.TYPE_FORWARD_ONLY
- ResultSet.TYPE_SCROLL_INSENSITIVE
- ResultSet.TYPE_SCROLL_SENSITIVE
resultSetConcurrency
- The result set concurrency. Valid values are:- ResultSet.CONCUR_READ_ONLY
- ResultSet.CONCUR_UPDATABLE
- Returns:
- The statement object.
- Throws:
java.sql.SQLException
- If the connection is not open, the maximum number of statements for this connection has been reached, the result type or currency is not supported, or an error occurs.
-
createStatement
public java.sql.Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws java.sql.SQLException
Creates a Statement object for executing SQL statements without parameters. If the same SQL statement is executed many times, it is more efficient to use prepareStatement().Full functionality of this method requires support in OS/400 V5R2 or IBM i. If connecting to OS/400 V5R1 or earlier, the value for resultSetHoldability will be ignored.
- Specified by:
createStatement
in interfacejava.sql.Connection
- Parameters:
resultSetType
- The result set type. Valid values are:- ResultSet.TYPE_FORWARD_ONLY
- ResultSet.TYPE_SCROLL_INSENSITIVE
- ResultSet.TYPE_SCROLL_SENSITIVE
resultSetConcurrency
- The result set concurrency. Valid values are:- ResultSet.CONCUR_READ_ONLY
- ResultSet.CONCUR_UPDATABLE
resultSetHoldability
- The result set holdability. Valid values are:- ResultSet.HOLD_CURSORS_OVER_COMMIT
- ResultSet.CLOSE_CURSORS_AT_COMMIT
- Returns:
- The statement object.
- Throws:
java.sql.SQLException
- If the connection is not open, the maximum number of statements for this connection has been reached, the result type, currency, or holdability is not supported, or an error occurs.- Since:
- Modification 5
-
finalize
protected void finalize() throws java.lang.Throwable
Closes the connection if not explicitly closed by the caller.- Overrides:
finalize
in classjava.lang.Object
- Throws:
java.lang.Throwable
- If an error occurs.
-
getAutoCommit
public boolean getAutoCommit() throws java.sql.SQLException
Returns the auto-commit state.- Specified by:
getAutoCommit
in interfacejava.sql.Connection
- Returns:
- true if the connection is in auto-commit mode; false otherwise.
- Throws:
java.sql.SQLException
- If the connection is not open.
-
getCatalog
public java.lang.String getCatalog() throws java.sql.SQLException
Returns the catalog name.- Specified by:
getCatalog
in interfacejava.sql.Connection
- Returns:
- The catalog name.
- Throws:
java.sql.SQLException
- If the connection is not open.
-
getConcurrentAccessResolution
public int getConcurrentAccessResolution()
This method returns the concurrent access resolution setting. This method has no effect on IBM i V6R1 or earlier. The possible values for this property areAS400JDBCDataSource.CONCURRENTACCESS_NOT_SET
,AS400JDBCDataSource.CONCURRENTACCESS_USE_CURRENTLY_COMMITTED
,AS400JDBCDataSource.CONCURRENTACCESS_WAIT_FOR_OUTCOME
andAS400JDBCDataSource.CONCURRENTACCESS_SKIP_LOCKS
, with the property defaulting toAS400JDBCDataSource.CONCURRENTACCESS_NOT_SET
. Setting this property to default exhibits the default behavior on the servers i.e., the semantic applied for read transactions to avoid locks will be determined by the server.AS400JDBCDataSource.CONCURRENTACCESS_USE_CURRENTLY_COMMITTED
specifies that driver will flow USE CURRENTLY COMMITTED to server. Whether CURRENTLY COMMITTED will actually be in effect is ultimately determined by server.AS400JDBCDataSource.CONCURRENTACCESS_WAIT_FOR_OUTCOME
specifies that driver will flow WAIT FOR OUTCOME to server. This will disable the CURRENTLY COMMITTED behavior at the server, if enabled, and the server will wait for the commit or rollback of data in the process of being updated.AS400JDBCDataSource.CONCURRENTACCESS_SKIP_LOCKS
specifies that driver will flow SKIP LOCKS to server. This directs the database manager to skip records in the case of record lock conflicts.- Returns:
- The concurrent access resolution setting. Possible return valuse:
AS400JDBCDataSource.CONCURRENTACCESS_NOT_SET
,AS400JDBCDataSource.CONCURRENTACCESS_USE_CURRENTLY_COMMITTED
,AS400JDBCDataSource.CONCURRENTACCESS_WAIT_FOR_OUTCOME
, orAS400JDBCDataSource.CONCURRENTACCESS_SKIP_LOCKS
-
getHoldability
public int getHoldability() throws java.sql.SQLException
Returns the holdability of ResultSets created from this connection.- Specified by:
getHoldability
in interfacejava.sql.Connection
- Returns:
- The cursor holdability. Valid values are ResultSet.HOLD_CURSORS_OVER_COMMIT and
ResultSet.CLOSE_CURSORS_AT_COMMIT. The holdability is derived in this order
of precedence:
- 1. The holdability specified using the method setHoldability(int) if this method was called.
- 2. The value of the
cursor hold
driver property.
- Throws:
java.sql.SQLException
- If the connection is not open.- Since:
- Modification 5
-
getMetaData
public java.sql.DatabaseMetaData getMetaData() throws java.sql.SQLException
Returns the DatabaseMetaData object that describes the connection's tables, supported SQL grammar, stored procedures, capabilities and more.- Specified by:
getMetaData
in interfacejava.sql.Connection
- Returns:
- The metadata object.
- Throws:
java.sql.SQLException
- If an error occurs.
-
getServerJobIdentifier
public java.lang.String getServerJobIdentifier()
Returns the job identifier of the host server job corresponding to this connection. Every JDBC connection is associated with a host server job on the IBM i system. The format is:- 10 character job name
- 10 character user name
- 6 character job number
Note: Since this method is not defined in the JDBC Connection interface, you typically need to cast a Connection object to AS400JDBCConnection in order to call this method:
String serverJobIdentifier = ((AS400JDBCConnection)connection).getServerJobIdentifier();
- Returns:
- The server job identifier, or null if not known.
-
getSystem
public AS400 getSystem()
Returns the system object which is managing the connection to the system.Note: Since this method is not defined in the JDBC Connection interface, you typically need to cast a Connection object to AS400JDBCConnection in order to call this method:
AS400 system = ((AS400JDBCConnection)connection).getSystem();
- Returns:
- The system.
-
getTransactionIsolation
public int getTransactionIsolation() throws java.sql.SQLException
Returns the transaction isolation level.- Specified by:
getTransactionIsolation
in interfacejava.sql.Connection
- Returns:
- The transaction isolation level. Possible
values are:
- TRANSACTION_NONE
- TRANSACTION_READ_UNCOMMITTED
- TRANSACTION_READ_COMMITTED
- TRANSACTION_REPEATABLE_READ
- Throws:
java.sql.SQLException
- If the connection is not open.
-
getTypeMap
public java.util.Map getTypeMap() throws java.sql.SQLException
Returns the type map.This driver does not support the type map.
- Specified by:
getTypeMap
in interfacejava.sql.Connection
- Returns:
- The type map.
- Throws:
java.sql.SQLException
- This exception is always thrown.
-
getWarnings
public java.sql.SQLWarning getWarnings() throws java.sql.SQLException
Returns the first warning reported for the connection. Subsequent warnings may be chained to this warning.- Specified by:
getWarnings
in interfacejava.sql.Connection
- Returns:
- The first warning or null if no warnings have been reported.
- Throws:
java.sql.SQLException
- If an error occurs.
-
isClosed
public boolean isClosed() throws java.sql.SQLException
Indicates if the connection is closed.- Specified by:
isClosed
in interfacejava.sql.Connection
- Returns:
- true if the connection is closed; false otherwise.
- Throws:
java.sql.SQLException
- If an error occurs.
-
isReadOnly
public boolean isReadOnly() throws java.sql.SQLException
Indicates if the connection is in read-only mode.- Specified by:
isReadOnly
in interfacejava.sql.Connection
- Returns:
- true if the connection is in read-only mode; false otherwise.
- Throws:
java.sql.SQLException
- If the connection is not open.
-
nativeSQL
public java.lang.String nativeSQL(java.lang.String sql) throws java.sql.SQLException
Returns the native form of an SQL statement without executing it. The JDBC driver converts all SQL statements from the JDBC SQL grammar into the native DB2 for IBM i SQL grammar prior to executing them.- Specified by:
nativeSQL
in interfacejava.sql.Connection
- Parameters:
sql
- The SQL statement in terms of the JDBC SQL grammar.- Returns:
- The translated SQL statement in the native DB2 for IBM i SQL grammar.
- Throws:
java.sql.SQLException
- If the SQL statement has a syntax error.
-
prepareCall
public java.sql.CallableStatement prepareCall(java.lang.String sql) throws java.sql.SQLException
Precompiles an SQL stored procedure call with optional input and output parameters and stores it in a CallableStatement object. This object can be used to efficiently call the SQL stored procedure multiple times.Result sets created using the statement will be type ResultSet.TYPE_FORWARD_ONLY and concurrency ResultSet.CONCUR_READ_ONLY.
- Specified by:
prepareCall
in interfacejava.sql.Connection
- Parameters:
sql
- The SQL stored procedure call.- Returns:
- The callable statement object.
- Throws:
java.sql.SQLException
- If the connection is not open, the maximum number of statements for this connection has been reached, or an error occurs.
-
prepareCall
public java.sql.CallableStatement prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency) throws java.sql.SQLException
Precompiles an SQL stored procedure call with optional input and output parameters and stores it in a CallableStatement object. This object can be used to efficiently call the SQL stored procedure multiple times.- Specified by:
prepareCall
in interfacejava.sql.Connection
- Parameters:
sql
- The SQL statement.resultSetType
- The result set type. Valid values are:- ResultSet.TYPE_FORWARD_ONLY
- ResultSet.TYPE_SCROLL_INSENSITIVE
- ResultSet.TYPE_SCROLL_SENSITIVE
resultSetConcurrency
- The result set concurrency. Valid values are:- ResultSet.CONCUR_READ_ONLY
- ResultSet.CONCUR_UPDATABLE
- Returns:
- The prepared statement object.
- Throws:
java.sql.SQLException
- If the connection is not open, the maximum number of statements for this connection has been reached, the result type or currency is not valid, or an error occurs.
-
prepareCall
public java.sql.CallableStatement prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws java.sql.SQLException
Precompiles an SQL stored procedure call with optional input and output parameters and stores it in a CallableStatement object. This object can be used to efficiently call the SQL stored procedure multiple times.Full functionality of this method requires support in OS/400 V5R2 or IBM i. If connecting to OS/400 V5R1 or earlier, the value for resultSetHoldability will be ignored.
- Specified by:
prepareCall
in interfacejava.sql.Connection
- Parameters:
sql
- The SQL statement.resultSetType
- The result set type. Valid values are:- ResultSet.TYPE_FORWARD_ONLY
- ResultSet.TYPE_SCROLL_INSENSITIVE
- ResultSet.TYPE_SCROLL_SENSITIVE
resultSetConcurrency
- The result set concurrency. Valid values are:- ResultSet.CONCUR_READ_ONLY
- ResultSet.CONCUR_UPDATABLE
resultSetHoldability
- The result set holdability. Valid values are:- ResultSet.HOLD_CURSORS_OVER_COMMIT
- ResultSet.CLOSE_CURSORS_AT_COMMIT
- Returns:
- The prepared statement object.
- Throws:
java.sql.SQLException
- If the connection is not open, the maximum number of statements for this connection has been reached, the result type, currency, or holdability is not valid, or an error occurs.- Since:
- Modification 5
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql) throws java.sql.SQLException
Precompiles an SQL statement with optional input parameters and stores it in a PreparedStatement object. This object can be used to efficiently execute this SQL statement multiple times.Result sets created using the statement will be type ResultSet.TYPE_FORWARD_ONLY and concurrency ResultSet.CONCUR_READ_ONLY.
- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Parameters:
sql
- The SQL statement.- Returns:
- The prepared statement object.
- Throws:
java.sql.SQLException
- If the connection is not open, the maximum number of statements for this connection has been reached, or an error occurs.
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql, int autoGeneratedKeys) throws java.sql.SQLException
Precompiles an SQL statement with optional input parameters and stores it in a PreparedStatement object. This object can be used to efficiently execute this SQL statement multiple times.This method requires OS/400 V5R2 or IBM i. If connecting to OS/400 V5R1 or earlier, an exception will be thrown.
Result sets created using the statement will be type ResultSet.TYPE_FORWARD_ONLY and concurrency ResultSet.CONCUR_READ_ONLY.
- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Parameters:
sql
- The SQL statement.autoGeneratedKeys
- Whether to return auto generated keys. Valid values are:- Statement.RETURN_GENERATED_KEYS
- Statement.NO_GENERATED_KEYS
- Returns:
- The prepared statement object.
- Throws:
java.sql.SQLException
- If the connection is not open, the maximum number of statements for this connection has been reached, if connecting to OS/400 V5R1 or earlier, an error occurs.- Since:
- Modification 5
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency) throws java.sql.SQLException
Precompiles an SQL statement with optional input parameters and stores it in a PreparedStatement object. This object can be used to efficiently execute this SQL statement multiple times.Result sets created using the statement will be holdability ResultSet.CLOSE_CURSORS_AT_COMMIT.
- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Parameters:
sql
- The SQL statement.resultSetType
- The result set type. Valid values are:- ResultSet.TYPE_FORWARD_ONLY
- ResultSet.TYPE_SCROLL_INSENSITIVE
- ResultSet.TYPE_SCROLL_SENSITIVE
resultSetConcurrency
- The result set concurrency. Valid values are:- ResultSet.CONCUR_READ_ONLY
- ResultSet.CONCUR_UPDATABLE
- Returns:
- The prepared statement object.
- Throws:
java.sql.SQLException
- If the connection is not open, the maximum number of statements for this connection has been reached, the result type or currency is not valid, or an error occurs.
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws java.sql.SQLException
Precompiles an SQL statement with optional input parameters and stores it in a PreparedStatement object. This object can be used to efficiently execute this SQL statement multiple times.- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Parameters:
sql
- The SQL statement.resultSetType
- The result set type. Valid values are:- ResultSet.TYPE_FORWARD_ONLY
- ResultSet.TYPE_SCROLL_INSENSITIVE
- ResultSet.TYPE_SCROLL_SENSITIVE
resultSetConcurrency
- The result set concurrency. Valid values are:- ResultSet.CONCUR_READ_ONLY
- ResultSet.CONCUR_UPDATABLE
resultSetHoldability
- The result set holdability. Valid values are:- ResultSet.HOLD_CURSORS_OVER_COMMIT
- ResultSet.CLOSE_CURSORS_AT_COMMIT
- Returns:
- The prepared statement object.
- Throws:
java.sql.SQLException
- If the connection is not open, the maximum number of statements for this connection has been reached, the result type, currency, or holdability is not valid, or an error occurs.
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql, int[] columnIndexes) throws java.sql.SQLException
Precompiles an SQL statement with optional input parameters and stores it in a PreparedStatement object. This object can be used to efficiently execute this SQL statement multiple times.This method is not supported when connecting to IBM i V5R4 or earlier systems.
- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Parameters:
sql
- The SQL statement.columnIndexes
- An array of column indexes indicating the columns that should be returned from the inserted row or rows.- Returns:
- The prepared statement object.
- Throws:
java.sql.SQLException
- - If connecting to IBM i V5R4 or earlier systems, the connection is not open, the maximum number of statements for this connection has been reached, or an error occurs.- Since:
- Modification 5
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql, java.lang.String[] columnNames) throws java.sql.SQLException
Precompiles an SQL statement with optional input parameters and stores it in a PreparedStatement object. This object can be used to efficiently execute this SQL statement multiple times.This method is not supported when connecting to IBM i V5R4 or earlier systems.
- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Parameters:
sql
- The SQL statement.columnNames
- An array of column names indicating the columns that should be returned from the inserted row or rows.- Returns:
- The prepared statement object.
- Throws:
java.sql.SQLException
- - If connecting to IBM i V5R4 or earlier systems, the connection is not open, the maximum number of statements for this connection has been reached, or an error occurs.- Since:
- Modification 5
-
releaseSavepoint
public void releaseSavepoint(java.sql.Savepoint savepoint) throws java.sql.SQLException
Removes the given Savepoint object from the current transaction. Any reference to the savepoint after it has been removed will cause an SQLException to be thrown.- Specified by:
releaseSavepoint
in interfacejava.sql.Connection
- Parameters:
savepoint
- the savepoint to be removed.- Throws:
java.sql.SQLException
- if a database access error occurs or the given Savepoint is not a valid savepoint in the current transaction.- Since:
- Modification 5
-
rollback
public void rollback() throws java.sql.SQLException
Drops all changes made since the previous commit or rollback and releases any database locks currently held by the connection. This has no effect when the connection is in auto-commit mode.This method can not be called when the connection is part of a distributed transaction. See AS400JDBCXAResource for more information.
- Specified by:
rollback
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
- If the connection is not open or an error occurs.
-
rollback
public void rollback(java.sql.Savepoint savepoint) throws java.sql.SQLException
Undoes all changes made after the specified Savepoint was set.- Specified by:
rollback
in interfacejava.sql.Connection
- Parameters:
savepoint
- the savepoint to be rolled back to.- Throws:
java.sql.SQLException
- if a database access error occurs, the Savepoint is no longer valid, or this Connection is currently in auto-commit mode.- Since:
- Modification 5
-
setAutoCommit
public void setAutoCommit(boolean autoCommit) throws java.sql.SQLException
Sets the auto-commit mode. If the connection is in auto-commit mode, then all of its SQL statements are executed and committed as individual transactions. Otherwise, its SQL statements are grouped into transactions that are terminated by either a commit or rollback.By default, the connection is in auto-commit mode. The commit occurs when the statement execution completes or the next statement execute occurs, whichever comes first. In the case of statements returning a result set, the statement execution completes when the last row of the result set has been retrieved or the result set has been closed. In advanced cases, a single statement may return multiple results as well as output parameter values. Here the commit occurs when all results and output parameter values have been retrieved.
The auto-commit mode is always false when the connection is part of a distributed transaction. See AS400JDBCXAResource for more information.
- Specified by:
setAutoCommit
in interfacejava.sql.Connection
- Parameters:
autoCommit
- true to turn on auto-commit mode, false to turn it off.- Throws:
java.sql.SQLException
- If the connection is not open or an error occurs.
-
setCatalog
public void setCatalog(java.lang.String catalog) throws java.sql.SQLException
This method is not supported.- Specified by:
setCatalog
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
- If the connection is not open.
-
setConcurrentAccessResolution
public void setConcurrentAccessResolution(int concurrentAccessResolution) throws java.sql.SQLException
This method sets concurrent access resolution. This method overrides the setting of ConcurrentAccessResolution on the datasource or connection URL properties. This changes the setting for this connection only. This method has no effect on IBM i V6R1 or earlier. The possible values for this property areAS400JDBCDataSource.CONCURRENTACCESS_NOT_SET
,AS400JDBCDataSource.CONCURRENTACCESS_USE_CURRENTLY_COMMITTED
,AS400JDBCDataSource.CONCURRENTACCESS_WAIT_FOR_OUTCOME
andAS400JDBCDataSource.CONCURRENTACCESS_SKIP_LOCKS
, with the property defaulting toAS400JDBCDataSource.CONCURRENTACCESS_NOT_SET
. Setting this property to default exhibits the default behavior on the servers i.e., the semantic applied for read transactions to avoid locks will be determined by the server.AS400JDBCDataSource.CONCURRENTACCESS_USE_CURRENTLY_COMMITTED
specifies that driver will flow USE CURRENTLY COMMITTED to server. Whether CURRENTLY COMMITTED will actually be in effect is ultimately determined by server.AS400JDBCDataSource.CONCURRENTACCESS_WAIT_FOR_OUTCOME
specifies that driver will flow WAIT FOR OUTCOME to server. This will disable the CURRENTLY COMMITTED behavior at the server, if enabled, and the server will wait for the commit or rollback of data in the process of being updated.AS400JDBCDataSource.CONCURRENTACCESS_SKIP_LOCKS
specifies that driver will flow SKIP LOCKS to server. This directs the database manager to skip records in the case of record lock conflicts.- Parameters:
concurrentAccessResolution
- The current access resolution setting. Possible valuse:AS400JDBCDataSource.CONCURRENTACCESS_NOT_SET
,AS400JDBCDataSource.CONCURRENTACCESS_USE_CURRENTLY_COMMITTED
,AS400JDBCDataSource.CONCURRENTACCESS_WAIT_FOR_OUTCOME
, orAS400JDBCDataSource.CONCURRENTACCESS_SKIP_LOCKS
- Throws:
java.sql.SQLException
-
setDB2eWLMCorrelator
public void setDB2eWLMCorrelator(byte[] bytes) throws java.sql.SQLException
Sets the eWLM Correlator. It is assumed a valid correlator value is used. If the value is null, all ARM/eWLM implementation will be turned off. eWLM correlators require IBM i V5R3 or later systems. This request is ignored when running to OS/400 V5R2 or earlier systems.- Parameters:
bytes
- The eWLM correlator value- Throws:
java.sql.SQLException
-
setHoldability
public void setHoldability(int holdability) throws java.sql.SQLException
Sets the holdability of ResultSets created from this connection.Full functionality of this method requires OS/400 V5R2 or IBM i. If connecting to OS/400 V5R1 or earlier, all cursors for the connection will be changed to the value of the variable holdability.
- Specified by:
setHoldability
in interfacejava.sql.Connection
- Parameters:
holdability
- The cursor holdability. Valid values are ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT.- Throws:
java.sql.SQLException
- If the connection is not open or the value passed in is not valid.- Since:
- Modification 5
-
setReadOnly
public void setReadOnly(boolean readOnly) throws java.sql.SQLException
Sets the read-only mode. This will provide read-only access to the database. Read-only mode can be useful by enabling certain database optimizations. If the caller specified "read only" or "read call" for the "access" property, then the read-only mode cannot be set to false. The read-only mode cannot be changed while in the middle of a transaction.This method can not be called when the connection is part of a distributed transaction. See AS400JDBCXAResource for more information.
- Specified by:
setReadOnly
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
- If the connection is not open, a transaction is active, or the "access" property is set to "read only".
-
setSavepoint
public java.sql.Savepoint setSavepoint() throws java.sql.SQLException
Creates an unnamed savepoint in the current transaction and returns the new Savepoint object that represents it.- Named savepoints must be unique. A savepoint name cannot be reused until the savepoint is released, committed, or rolled back.
- Savepoints are valid only if autocommit is off. An exception is thrown if autocommit is enabled.
- Savepoints are not valid across XA connections. An exception is thrown if the connection is an XA connection.
- Savepoints require OS/400 V5R2 or IBM i. An exception is thrown if connecting to OS/400 V5R1 or earlier.
- If the connection option is set to keep cursors open after a traditional rollback, cursors will remain open after a rollback to a savepoint.
- Specified by:
setSavepoint
in interfacejava.sql.Connection
- Returns:
- The new Savepoint object.
- Throws:
java.sql.SQLException
- if a database access error occurs or this Connection object is currently in auto-commit mode.- Since:
- Modification 5
-
setSavepoint
public java.sql.Savepoint setSavepoint(java.lang.String name) throws java.sql.SQLException
Creates a named savepoint in the current transaction and returns the new Savepoint object that represents it.- Named savepoints must be unique. A savepoint name cannot be reused until the savepoint is released, committed, or rolled back.
- Savepoints are valid only if autocommit is off. An exception is thrown if autocommit is enabled.
- Savepoints are not valid across XA connections. An exception is thrown if the connection is an XA connection.
- Savepoints require OS/400 V5R2 or IBM i. An exception is thrown if connecting to OS/400 V5R1 or earlier.
- If the connection option is set to keep cursors open after a traditional rollback, cursors will remain open after a rollback to a savepoint.
- Specified by:
setSavepoint
in interfacejava.sql.Connection
- Parameters:
name
- A String containing the name of the savepoint- Returns:
- The new Savepoint object.
- Throws:
java.sql.SQLException
- if a database access error occurs or this Connection object is currently in auto-commit mode.- Since:
- Modification 5
-
setTransactionIsolation
public void setTransactionIsolation(int level) throws java.sql.SQLException
Sets the transaction isolation level. The transaction isolation level cannot be changed while in the middle of a transaction.JDBC and DB2 for IBM i use different terminology for transaction isolation levels. The following table provides a terminology mapping:
IBM i isolation level JDBC transaction isolation level *CHG TRANSACTION_READ_UNCOMMITTED *CS TRANSACTION_READ_COMMITTED *ALL TRANSACTION_READ_REPEATABLE_READ *RR TRANSACTION_SERIALIZABLE - Specified by:
setTransactionIsolation
in interfacejava.sql.Connection
- Parameters:
level
- The transaction isolation level. Possible values are:- TRANSACTION_READ_UNCOMMITTED
- TRANSACTION_READ_COMMITTED
- TRANSACTION_REPEATABLE_READ
- TRANSACTION_SERIALIZABLE
- Throws:
java.sql.SQLException
- If the connection is not open, the input level is not valid or unsupported, or a transaction is active.
-
setTypeMap
public void setTypeMap(java.util.Map typeMap) throws java.sql.SQLException
Sets the type map to be used for distinct and structured types.Note: Distinct types are supported by DB2 for IBM i, but are not externalized by the IBM Toolbox for Java JDBC driver. In other words, distinct types behave as if they are the underlying type. Structured types are not supported by DB2 for IBM i. Consequently, this driver does not support the type map.
- Specified by:
setTypeMap
in interfacejava.sql.Connection
- Parameters:
typeMap
- The type map.- Throws:
java.sql.SQLException
- This exception is always thrown.
-
toString
public java.lang.String toString()
Returns the connection's catalog name. This is the name of the IBM i system.- Overrides:
toString
in classjava.lang.Object
- Returns:
- The catalog name.
-
getValidWrappedList
protected java.lang.String[] getValidWrappedList()
-
isValid
public boolean isValid(int timeout) throws java.sql.SQLException
Returns true if the connection has not been closed and is still valid. The driver shall submit a query on the connection or use some other mechanism that positively verifies the connection is still valid when this method is called.The query submitted by the driver to validate the connection shall be executed in the context of the current transaction.
- Specified by:
isValid
in interfacejava.sql.Connection
- Parameters:
timeout
- - The time in seconds to wait for the database operation used to validate the connection to complete. If the timeout period expires before the operation completes, this method returns false. A value of 0 indicates a timeout is not applied to the database operation.- Returns:
- true if the connection is valid, false otherwise
- Throws:
java.sql.SQLException
- if a database access error occurs.
-
setClientInfo
public void setClientInfo(java.lang.String name, java.lang.String value) throws java.sql.SQLClientInfoException
Sets the value of the client info property specified by name to the value specified by value.Applications may use the
DatabaseMetaData.getClientInfoProperties
method to determine the client info properties supported by the driver and the maximum length that may be specified for each property.The driver stores the value specified in a suitable location in the database. For example in a special register, session parameter, or system table column. For efficiency the driver may defer setting the value in the database until the next time a statement is executed or prepared. Other than storing the client information in the appropriate place in the database, these methods shall not alter the behavior of the connection in anyway. The values supplied to these methods are used for accounting, diagnostics and debugging purposes only.
The driver shall generate a warning if the client info name specified is not recognized by the driver.
If the value specified to this method is greater than the maximum length for the property the driver may either truncate the value and generate a warning or generate a
SQLException
. If the driver generates aSQLException
, the value specified was not set on the connection.The following client info properties are supported in Toobox for Java.
- ApplicationName - The name of the application currently utilizing the connection
- ClientUser - The name of the user that the application using the connection is performing work for. This may not be the same as the user name that was used in establishing the connection.
- ClientHostname - The hostname of the computer the application using the connection is running on.
- ClientAccounting - Client accounting information.
- ClientProgramID - The client program identification.
- Specified by:
setClientInfo
in interfacejava.sql.Connection
- Parameters:
name
- The name of the client info property to setvalue
- The value to set the client info property to. If the value is null, the current value of the specified property is cleared.- Throws:
java.sql.SQLClientInfoException
- if the database returns an error while setting the client info value on the database server.
-
setClientInfo
public void setClientInfo(java.util.Properties properties) throws java.sql.SQLClientInfoException
Sets the value of the connection's client info properties. TheProperties
object contains the names and values of the client info properties to be set. The set of client info properties contained in the properties list replaces the current set of client info properties on the connection. If a property that is currently set on the connection is not present in the properties list, that property is cleared. Specifying an empty properties list will clear all of the properties on the connection. SeesetClientInfo (String, String)
for more information.If an error occurs in setting any of the client info properties, a
ClientInfoException
is thrown. TheClientInfoException
contains information indicating which client info properties were not set. The state of the client information is unknown because some databases do not allow multiple client info properties to be set atomically. For those databases, one or more properties may have been set before the error occurred.The following client info properties are supported in Toobox for Java.
- ApplicationName - The name of the application currently utilizing the connection
- ClientUser - The name of the user that the application using the connection is performing work for. This may not be the same as the user name that was used in establishing the connection.
- ClientHostname - The hostname of the computer the application using the connection is running on.
- ClientAccounting - Client accounting information.
- ClientProgramID - The client program identification.
- Specified by:
setClientInfo
in interfacejava.sql.Connection
- Parameters:
properties
- the list of client info properties to set- Throws:
java.sql.SQLClientInfoException
- if the database returns an error while setting the clientInfo values on the database
-
getClientInfo
public java.lang.String getClientInfo(java.lang.String name) throws java.sql.SQLException
Returns the value of the client info property specified by name. This method may return null if the specified client info property has not been set and does not have a default value. This method will also return null if the specified client info property name is not supported by the driver.Applications may use the
DatabaseMetaData.getClientInfoProperties
method to determine the client info properties supported by the driver.The following client info properties are supported in Toobox for Java.
- ApplicationName - The name of the application currently utilizing the connection
- ClientUser - The name of the user that the application using the connection is performing work for. This may not be the same as the user name that was used in establishing the connection.
- ClientHostname - The hostname of the computer the application using the connection is running on.
- ClientAccounting - Client accounting information.
- ClientProgramID - The client program identification.
- Specified by:
getClientInfo
in interfacejava.sql.Connection
- Parameters:
name
- The name of the client info property to retrieve- Returns:
- The value of the client info property specified
- Throws:
java.sql.SQLException
- if the database returns an error when fetching the client info value from the database.see java.sql.DatabaseMetaData#getClientInfoProperties
-
getClientInfo
public java.util.Properties getClientInfo() throws java.sql.SQLException
Returns a list containing the name and current value of each client info property supported by the driver. The value of a client info property may be null if the property has not been set and does not have a default value.The following client info properties are supported in Toobox for Java.
- ApplicationName - The name of the application currently utilizing the connection
- ClientUser - The name of the user that the application using the connection is performing work for. This may not be the same as the user name that was used in establishing the connection.
- ClientHostname - The hostname of the computer the application using the connection is running on.
- ClientAccounting - Client accounting information.
- ClientProgramID - The client program identification.
- Specified by:
getClientInfo
in interfacejava.sql.Connection
- Returns:
- A
Properties
object that contains the name and current value of each of the client info properties supported by the driver. - Throws:
java.sql.SQLException
- if the database returns an error when fetching the client info values from the database
-
createClob
public java.sql.Clob createClob() throws java.sql.SQLException
Constructs an object that implements theClob
interface. The object returned initially contains no data. ThesetAsciiStream
,setCharacterStream
andsetString
methods of theClob
interface may be used to add data to theClob
.- Specified by:
createClob
in interfacejava.sql.Connection
- Returns:
- An object that implements the
Clob
interface - Throws:
java.sql.SQLException
- if an object that implements theClob
interface can not be constructed.
-
createBlob
public java.sql.Blob createBlob() throws java.sql.SQLException
Constructs an object that implements theBlob
interface. The object returned initially contains no data. ThesetBinaryStream
andsetBytes
methods of theBlob
interface may be used to add data to theBlob
.- Specified by:
createBlob
in interfacejava.sql.Connection
- Returns:
- An object that implements the
Blob
interface - Throws:
java.sql.SQLException
- if an object that implements theBlob
interface can not be constructed
-
createNClob
public java.sql.NClob createNClob() throws java.sql.SQLException
Constructs an object that implements theNClob
interface. The object returned initially contains no data. ThesetAsciiStream
,setCharacterStream
andsetString
methods of theNClob
interface may be used to add data to theNClob
.- Specified by:
createNClob
in interfacejava.sql.Connection
- Returns:
- An object that implements the
NClob
interface - Throws:
java.sql.SQLException
- if an object that implements theNClob
interface can not be constructed.
-
createSQLXML
public java.sql.SQLXML createSQLXML() throws java.sql.SQLException
Constructs an object that implements theSQLXML
interface. The object returned initially contains no data. ThecreateXMLStreamWriter
object andsetString
method of theSQLXML
interface may be used to add data to theSQLXML
object.- Specified by:
createSQLXML
in interfacejava.sql.Connection
- Returns:
- An object that implements the
SQLXML
interface - Throws:
java.sql.SQLException
- if an object that implements theSQLXML
interface can not be constructed
-
createArrayOf
public java.sql.Array createArrayOf(java.lang.String typeName, java.lang.Object[] elements) throws java.sql.SQLException
Factory method for creating Array objects.- Specified by:
createArrayOf
in interfacejava.sql.Connection
- Parameters:
typeName
- the SQL name of the type the elements of the array map to. The typeName is a database-specific name which may be the name of a built-in type, a user-defined type or a standard SQL type supported by this database. This is the value returned byArray.getBaseTypeName
For Toolbox, the typeName will correspond to a typename in java.sql.Types.elements
- the elements that populate the returned object- Returns:
- an Array object whose elements map to the specified SQL type
- Throws:
java.sql.SQLException
- if a database error occurs, the typeName is null or this method is called on a closed connectionSQLFeatureNotSupportedException
- if the JDBC driver does not support this data type
-
createStruct
public java.sql.Struct createStruct(java.lang.String typeName, java.lang.Object[] attributes) throws java.sql.SQLException
Factory method for creating Struct objects.- Specified by:
createStruct
in interfacejava.sql.Connection
- Parameters:
typeName
- the SQL type name of the SQL structured type that thisStruct
object maps to. The typeName is the name of a user-defined type that has been defined for this database. It is the value returned byStruct.getSQLTypeName
.attributes
- the attributes that populate the returned object- Returns:
- a Struct object that maps to the given SQL type and is populated with the given attributes
- Throws:
java.sql.SQLException
- if a database error occurs, the typeName is null or this method is called on a closed connectionSQLFeatureNotSupportedException
- if the JDBC driver does not support this data type
-
setDBHostServerTrace
public void setDBHostServerTrace(boolean trace)
Starts or stops the Database Host Server trace for this connection. Note: This method is only supported when running to IBM i V5R3 or later and is ignored if you specified to turn on database host server tracing using the 'server trace' connection property.- Parameters:
trace
- true to start database host server tracing, false to end it.
-
doUpdateDeleteBlocking
public boolean doUpdateDeleteBlocking()
-
getMaximumBlockedInputRows
public int getMaximumBlockedInputRows()
-
abort
public void abort(java.util.concurrent.Executor executor) throws java.sql.SQLException
Terminates an open connection. Calling abort results in:- The connection marked as closed
- Closes any physical connection to the database
- Releases resources used by the connection
- Insures that any thread that is currently accessing the connection will either progress to completion or throw an SQLException.
Calling abort marks the connection closed and releases any resources. Calling abort on a closed connection is a no-op.
It is possible that the aborting and releasing of the resources that are held by the connection can take an extended period of time. When the abort method returns, the connection will have been marked as closed and the Executor that was passed as a parameter to abort may still be executing tasks to release resources.
This method checks to see that there is an SQLPermission object before allowing the method to proceed. If a SecurityManager exists and its checkPermission method denies calling abort, this method throws a java.lang.SecurityException.
- Parameters:
executor
- The Executor implementation which will be used by abort.- Throws:
java.sql.SQLException
- - if a database access error occurs or the executor is nulljava.lang.SecurityException
- - if a security manager exists and its checkPermission method denies calling abort
-
getSchema
public java.lang.String getSchema() throws java.sql.SQLException
Retrieves thisConnection
object's current schema name.- Returns:
- the current schema name or null if there is none
- Throws:
java.sql.SQLException
- if a database access error occurs or this method is called on a closed connection
-
setNetworkTimeout
public void setNetworkTimeout(int timeout) throws java.sql.SQLException
Sets the maximum period a Connection or objects created from the Connection will wait for the database to reply to any one request. If any request remains unanswered, the waiting method will return with a SQLException, and the Connection or objects created from the Connection will be marked as closed. Any subsequent use of the objects, with the exception of the close, isClosed or Connection.isValid methods, will result in a SQLException.In the JTOpen JDBC driver, this is implemented by setting the SoTimeout of the underlying socket.
Currently, setting the network timeout is only supported when the "thread used" property is false.
When the driver determines that the setNetworkTimeout timeout value has expired, the JDBC driver marks the connection closed and releases any resources held by the connection.
This method checks to see that there is an SQLPermission object before allowing the method to proceed. If a SecurityManager exists and its checkPermission method denies calling setNetworkTimeout, this method throws a java.lang.SecurityException.
- Parameters:
timeout
- - The time in milliseconds to wait for the database operation to complete. If the JDBC driver does not support milliseconds, the JDBC driver will round the value up to the nearest second. If the timeout period expires before the operation completes, a SQLException will be thrown. A value of 0 indicates that there is not timeout for database operations.- Throws:
java.sql.SQLException
java.sql.SQLException
- - if a database access error occurs, this method is called on a closed connection, or the value specified for seconds is less than 0.java.lang.SecurityException
- - if a security manager exists and its checkPermission method denies calling setNetworkTimeout.SQLFeatureNotSupportedException
- - if the JDBC driver does not support this method- See Also:
SecurityManager.checkPermission(java.security.Permission), Statement.setQueryTimeout(int), getNetworkTimeout(), abort(java.util.concurrent.Executor), Executor
-
getNetworkTimeout
public int getNetworkTimeout() throws java.sql.SQLException
Retrieves the number of milliseconds the driver will wait for a database request to complete. If the limit is exceeded, a SQLException is thrown.- Returns:
- The current timeout limit in milliseconds; zero means there is no limit
- Throws:
java.sql.SQLException
- - if a database access error occurs or this method is called on a closed ConnectionSQLFeatureNotSupportedException
- - if the JDBC driver does not support this method- Since:
- JTOpen 7.X
- See Also:
setNetworkTimeout(java.util.concurrent.Executor, int)
-
setNetworkTimeout
public void setNetworkTimeout(java.util.concurrent.Executor executor, int milliseconds) throws java.sql.SQLException
Sets the maximum period a Connection or objects created from the Connection will wait for the database to reply to any one request. If any request remains unanswered, the waiting method will return with a SQLException, and the Connection or objects created from the Connection will be marked as closed. Any subsequent use of the objects, with the exception of the close, isClosed or Connection.isValid methods, will result in a SQLException.Note: This method is intended to address a rare but serious condition where network partitions can cause threads issuing JDBC calls to hang uninterruptedly in socket reads, until the OS TCP-TIMEOUT (typically 10 minutes). This method is related to the abort() method which provides an administrator thread a means to free any such threads in cases where the JDBC connection is accessible to the administrator thread. The setNetworkTimeout method will cover cases where there is no administrator thread, or it has no access to the connection. This method is severe in it's effects, and should be given a high enough value so it is never triggered before any more normal timeouts, such as transaction timeouts.
JDBC driver implementations may also choose to support the setNetworkTimeout method to impose a limit on database response time, in environments where no network is present.
Drivers may internally implement some or all of their API calls with multiple internal driver-database transmissions, and it is left to the driver implementation to determine whether the limit will be applied always to the response to the API call, or to any single request made during the API call.
This method can be invoked more than once, such as to set a limit for an area of JDBC code, and to reset to the default on exit from this area. Invocation of this method has no impact on already outstanding requests.
The Statement.setQueryTimeout() timeout value is independent of the timeout value specified in setNetworkTimeout. If the query timeout expires before the network timeout then the statement execution will be canceled. If the network is still active the result will be that both the statement and connection are still usable. However if the network timeout expires before the query timeout or if the statement timeout fails due to network problems, the connection will be marked as closed, any resources held by the connection will be released and both the connection and statement will be unusable.
When the driver determines that the setNetworkTimeout timeout value has expired, the JDBC driver marks the connection closed and releases any resources held by the connection.
This method checks to see that there is an SQLPermission object before allowing the method to proceed. If a SecurityManager exists and its checkPermission method denies calling setNetworkTimeout, this method throws a java.lang.SecurityException.
- Parameters:
executor
- - The Executor implementation which will be used by setNetworkTimeout.milliseconds
- - The time in milliseconds to wait for the database operation to complete. If the JDBC driver does not support milliseconds, the JDBC driver will round the value up to the nearest second. If the timeout period expires before the operation completes, a SQLException will be thrown. A value of 0 indicates that there is not timeout for database operations.- Throws:
java.sql.SQLException
- - if a database access error occurs, this method is called on a closed connection, the executor is null, or the value specified for seconds is less than 0.java.lang.SecurityException
- - if a security manager exists and its checkPermission method denies calling setNetworkTimeout.SQLFeatureNotSupportedException
- - if the JDBC driver does not support this method
-
setSchema
public void setSchema(java.lang.String schema) throws java.sql.SQLException
Sets the given schema name to access.Calling setSchema has no effect on previously created or prepared Statement objects. For the toolbox driver, the DBMS prepare operation takes place immediately when the Connection method prepareStatement or prepareCall is invoked. For maximum portability, setSchema should be called before a Statement is created or prepared.
- Parameters:
schema
- The name of the schema to use for the connection- Throws:
java.sql.SQLException
- If a database access error occurs or this method is called on a closed connection
-
isQueryTimeoutMechanismCancel
protected boolean isQueryTimeoutMechanismCancel()
Is SQL cancel used for the query timeout mechanism- Returns:
- true if cancel will be used as the query timeout mechanism
-
isWrapperFor
public boolean isWrapperFor(java.lang.Class<?> iface) throws java.sql.SQLException
Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does. Returns false otherwise. If this implements the interface then return true, else if this is a wrapper then return the result of recursively callingisWrapperFor
on the wrapped object. If this does not implement the interface and is not a wrapper, return false. This method should be implemented as a low-cost operation compared tounwrap
so that callers can use this method to avoid expensiveunwrap
calls that may fail. If this method returns true then callingunwrap
with the same argument should succeed.- Specified by:
isWrapperFor
in interfacejava.sql.Wrapper
- Parameters:
iface
- a Class defining an interface.- Returns:
- true if this implements the interface or directly or indirectly wraps an object that does.
- Throws:
java.sql.SQLException
- if an error occurs while determining whether this is a wrapper for an object with the given interface.
-
unwrap
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException
Returns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy. If the receiver implements the interface then the result is the receiver or a proxy for the receiver. If the receiver is a wrapper and the wrapped object implements the interface then the result is the wrapped object or a proxy for the wrapped object. Otherwise return the the result of callingunwrap
recursively on the wrapped object or a proxy for that result. If the receiver is not a wrapper and does not implement the interface, then anSQLException
is thrown.- Specified by:
unwrap
in interfacejava.sql.Wrapper
- Parameters:
iface
- A Class defining an interface that the result must implement.- Returns:
- an object that implements the interface. May be a proxy for the actual implementing object.
- Throws:
java.sql.SQLException
- If no object found that implements the interface
-
-