is new.
All Superinterfaces:
Wrapper
public interface Connection
extends
Wrapper
A connection (session) with a specific database. SQL statements are executed and results are returned within the context of a connection.
A Connection object's database is able to provide information describing its tables, its supported SQL grammar, its stored procedures, the capabilities of this connection, and so on. This information is obtained with the getMetaData method.
Note:
When configuring a Connection, JDBC applications should use the appropritate Connection method such as setAutoCommit or setTransactionIsolation. Applications should not invoke SQL commands directly to change the connection's configuration when there is a JDBC method available.
By default a Connection object is in auto-commit mode, which means that it automatically commits changes after executing each statement. If auto-commit mode has been disabled, the method commit must be called explicitly in order to commit changes; otherwise, database changes will not be saved.
A new Connection object created using the JDBC 2.1 core API has an initially empty type map associated with it. A user may enter a custom mapping for a UDT in this type map. When a UDT is retrieved from a data source with the method ResultSet.getObject, the getObject method will check the connection's type map to see if there is an entry for that UDT. If so, the getObject method will map the UDT to the class indicated. If there is no entry, the UDT will be mapped using the standard mapping.
A user may create a new type map, which is a java.util.Map object, make an entry in it, and pass it to the java.sql methods that can perform custom mapping. In this case, the method will use the given type map instead of the one associated with the connection.
For example, the following code fragment specifies that the SQL type ATHLETES will be mapped to the class Athletes in the Java programming language. The code fragment retrieves the type map for the Connection object con, inserts the entry into it, and then sets the type map with the new entry as the connection's type map.
java.util.Map map = con.getTypeMap();
map.put("mySchemaName.ATHLETES", Class.forName("Athletes"));
con.setTypeMap(map);
| Field Summary | |
|---|---|
| static int |
TRANSACTION_NONE
A constant indicating that transactions are not supported. |
| static int |
TRANSACTION_READ_COMMITTED
A constant indicating that dirty reads are prevented; non-repeatable reads and phantom reads can occur. |
| static int |
TRANSACTION_READ_UNCOMMITTED
A constant indicating that dirty reads, non-repeatable reads and phantom reads can occur. |
| static int |
TRANSACTION_REPEATABLE_READ
A constant indicating that dirty reads and non-repeatable reads are prevented; phantom reads can occur. |
| static int |
TRANSACTION_SERIALIZABLE
A constant indicating that dirty reads, non-repeatable reads and phantom reads are prevented. |
| Method Summary | ||
|---|---|---|
| void |
clearWarnings
() Clears all warnings reported for this Connection object. |
|
| void |
close
() Releases this Connection object's database and JDBC resources immediately instead of waiting for them to be automatically released. |
|
| void |
commit
() Makes all changes made since the previous commit/rollback permanent and releases any database locks currently held by this Connection object. |
|
Blob
|
createBlob
()
Constructs an object that implements the Blob interface.
|
|
Clob
|
createClob
()
Constructs an object that implements the Clob interface.
|
|
NClob
|
createNClob
()
Constructs an object that implements the NClob interface.
|
|
|
createQueryObject
(
Class
<T> ifc)
Creates a concrete implementation of a Query interface using the JDBC drivers QueryObjectGenerator implementation.
|
|
SQLXML
|
createSQLXML
()
Constructs an object that implements the SQLXML interface.
|
|
| Statement |
createStatement
() Creates a Statement object for sending SQL statements to the database. |
|
| Statement |
createStatement
(int resultSetType, int resultSetConcurrency) Creates a Statement object that will generate ResultSet objects with the given type and concurrency. |
|
| Statement |
createStatement
(int resultSetType, int resultSetConcurrency, int resultSetHoldability) Creates a Statement object that will generate ResultSet objects with the given type, concurrency, and holdability. |
|
| boolean |
getAutoCommit
() Retrieves the current auto-commit mode for this Connection object. |
|
| String |
getCatalog
() Retrieves this Connection object's current catalog name. |
|
Properties
|
getClientInfo
()
Returns a list containing the name and current value of each client info property supported by the driver.
|
|
String
|
getClientInfo
(
String
Returns the value of the client info property specified by name.
|
|
| int |
getHoldability
() Retrieves the current holdability of ResultSet objects created using this Connection object. |
|
| DatabaseMetaData |
getMetaData
() Retrieves a DatabaseMetaData object that contains metadata about the database to which this Connection object represents a connection. |
|
| int |
getTransactionIsolation
() Retrieves this Connection object's current transaction isolation level. |
|
| Map < String , Class <?>> |
getTypeMap
() Retrieves the Map object associated with this Connection object. |
|
| SQLWarning |
getWarnings
() Retrieves the first warning reported by calls on this Connection object. |
|
| boolean |
isClosed
() Retrieves whether this Connection object has been closed. |
|
| boolean |
isReadOnly
() Retrieves whether this Connection object is in read-only mode. |
|
boolean
|
isValid
(int timeout)
Returns true if the connection has not been closed and is still valid.
|
|
| String |
nativeSQL
(
String
sql) Converts the given SQL statement into the system's native SQL grammar. |
|
| CallableStatement |
prepareCall
(
String
sql) Creates a CallableStatement object for calling database stored procedures. |
|
| CallableStatement |
prepareCall
(
String
sql, int resultSetType, int resultSetConcurrency) Creates a CallableStatement object that will generate ResultSet objects with the given type and concurrency. |
|
| CallableStatement |
prepareCall
(
String
sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) Creates a CallableStatement object that will generate ResultSet objects with the given type and concurrency. |
|
| PreparedStatement |
prepareStatement
(
String
sql) Creates a PreparedStatement object for sending parameterized SQL statements to the database. |
|
| PreparedStatement |
prepareStatement
(
String
sql, int autoGeneratedKeys) Creates a default PreparedStatement object that has the capability to retrieve auto-generated keys. |
|
| PreparedStatement |
prepareStatement
(
String
sql, int[] columnIndexes) Creates a default PreparedStatement object capable of returning the auto-generated keys designated by the given array. |
|
| PreparedStatement |
prepareStatement
(
String
sql, int resultSetType, int resultSetConcurrency) Creates a PreparedStatement object that will generate ResultSet objects with the given type and concurrency. |
|
| PreparedStatement |
prepareStatement
(
String
sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) Creates a PreparedStatement object that will generate ResultSet objects with the given type, concurrency, and holdability. |
|
| PreparedStatement |
prepareStatement
(
String
sql,
String
[] columnNames) Creates a default PreparedStatement object capable of returning the auto-generated keys designated by the given array. |
|
| void |
releaseSavepoint
(
Savepoint
Removes the
specified
and subsequent Savepoint objects
|
|
| void |
rollback
() Undoes all changes made in the current transaction and releases any database locks currently held by this Connection object. |
|
| void |
rollback
(
Savepoint
savepoint) Undoes all changes made after the given Savepoint object was set. |
|
| void |
setAutoCommit
(boolean autoCommit) Sets this connection's auto-commit mode to the given state. |
|
| void |
setCatalog
(
String
catalog) Sets the given catalog name in order to select a subspace of this Connection object's database in which to work. |
|
| void |
setClientInfo
(
Properties
Sets
value
connection's client info properties.
|
|
void
|
setClientInfo
(
String
name,
String
Sets the value of the client info property specified by name to the value specified by value.
|
|
void
|
setHoldability
(int holdability)
Changes the default holdability of ResultSet objects created using this Connection object to the given holdability.
|
|
| void |
setReadOnly
(boolean readOnly) Puts this connection in read-only mode as a hint to the driver to enable database optimizations. |
|
| Savepoint |
setSavepoint
() Creates an unnamed savepoint in the current transaction and returns the new Savepoint object that represents it. |
|
| Savepoint |
setSavepoint
(
String
name) Creates a savepoint with the given name in the current transaction and returns the new Savepoint object that represents it. |
|
| void |
setTransactionIsolation
(int level) Attempts to change the transaction isolation level for this Connection object to the one given. |
|
| void |
setTypeMap
(
Map
<
String
,
Class
<?>> map) Installs the given TypeMap object as the type map for this Connection object. |
|
Methods inherited from interface java.sql.
Wrapper
|
|---|
isWrapperFor
,
unwrap
|
| Field Detail |
|---|
static final int TRANSACTION_NONE
static final int TRANSACTION_READ_UNCOMMITTED
static final int TRANSACTION_READ_COMMITTED
static final int TRANSACTION_REPEATABLE_READ
static final int TRANSACTION_SERIALIZABLE
| Method Detail |
|---|
Statement createStatement()
throws SQLException
Result sets created using the returned Statement object will by default be type TYPE_FORWARD_ONLY and have a concurrency level of CONCUR_READ_ONLY.
PreparedStatement prepareStatement(String sql)
throws SQLException
A SQL statement with or without IN parameters can be pre-compiled and stored in a PreparedStatement object. This object can then be used to efficiently execute this statement multiple times.
Note: This method is optimized for handling parametric SQL statements that benefit from precompilation. If the driver supports precompilation, the method prepareStatement will send the statement to the database for precompilation. Some drivers may not support precompilation. In this case, the statement may not be sent to the database until the PreparedStatement object is executed. This has no direct effect on users; however, it does affect which methods throw certain SQLException objects.
Result sets created using the returned PreparedStatement object will by default be type TYPE_FORWARD_ONLY and have a concurrency level of CONCUR_READ_ONLY.
CallableStatement prepareCall(String sql)
throws SQLException
Note: This method is optimized for handling stored procedure call statements. Some drivers may send the call statement to the database when the method prepareCall is done; others may wait until the CallableStatement object is executed. This has no direct effect on users; however, it does affect which method throws certain SQLExceptions.
Result sets created using the returned CallableStatement object will by default be type TYPE_FORWARD_ONLY and have a concurrency level of CONCUR_READ_ONLY.
specified using
syntax.
String nativeSQL(String sql)
throws SQLException
void setAutoCommit(boolean autoCommit)
throws SQLException
The commit occurs when the statement completes or the next execute occurs, whichever comes first. In the case of statements returning a ResultSet object, the statement completes when the last row of the ResultSet object has been retrieved or the ResultSet object has been closed. In advanced cases, a single statement may return multiple results as well as output parameter values. In these cases, the commit occurs when all results and output parameter values have been retrieved.
NOTE: If this method is called during a transaction, the transaction is committed.
boolean getAutoCommit()
throws SQLException
void commit()
throws SQLException
void rollback()
throws SQLException
void close()
throws SQLException
Calling the method close on a Connection object that is already closed is a no-op.
Note: A Connection object is automatically closed when it is garbage collected. Certain fatal errors also close a Connection object.
boolean isClosed()
throws SQLException
This method generally cannot be called to determine whether a connection to a database is valid or invalid. A typical client can determine that a connection is invalid by catching any exceptions that might be thrown when an operation is attempted.
DatabaseMetaData getMetaData()
throws SQLException
void setReadOnly(boolean readOnly)
throws SQLException
Note: This method cannot be called during a transaction.
boolean isReadOnly()
throws SQLException
void setCatalog(String catalog)
throws SQLException
If the driver does not support catalogs, it will silently ignore this request.
String getCatalog()
throws SQLException
void setTransactionIsolation(int level)
throws SQLException
Note: If this method is called during a transaction, the result is implementation-defined.
int getTransactionIsolation()
throws SQLException
SQLWarning getWarnings()
throws SQLException
This method may not be called on a closed connection; doing so will cause an SQLException to be thrown.
Note: Subsequent warnings will be chained to this SQLWarning.
void clearWarnings()
throws SQLException
Statement createStatement(int resultSetType,
int resultSetConcurrency)
throws SQLException
PreparedStatement prepareStatement(String sql,
int resultSetType,
int resultSetConcurrency)
throws SQLException
CallableStatement prepareCall(String sql,
int resultSetType,
int resultSetConcurrency)
throws SQLException
Map<String,Class<?>> getTypeMap()
throws SQLException
void setTypeMap(Map<String,Class<?>> map)
throws SQLException
void setHoldability(int holdability)
throws SQLException
default
holdability of ResultSet objects created using this Connection object to the given holdability.
int getHoldability()
throws SQLException
Savepoint setSavepoint()
throws SQLException
if setSavepoint is invoked outside of an active transaction, a transaction will be started at this newly created savepoint.
Savepoint setSavepoint(String name)
throws SQLException
if setSavepoint is invoked outside of an active transaction, a transaction will be started at this newly created savepoint.
void rollback(Savepoint savepoint)
throws SQLException
This method should be used only when auto-commit has been disabled.
void releaseSavepoint(Savepoint savepoint)
throws SQLException
specified
and subsequent Savepoint objects
Statement createStatement(int resultSetType,
int resultSetConcurrency,
int resultSetHoldability)
throws SQLException
PreparedStatement prepareStatement(String sql,
int resultSetType,
int resultSetConcurrency,
int resultSetHoldability)
throws SQLException
This method is the same as the prepareStatement method above, but it allows the default result set type, concurrency, and holdability to be overridden.
CallableStatement prepareCall(String sql,
int resultSetType,
int resultSetConcurrency,
int resultSetHoldability)
throws SQLException
PreparedStatement prepareStatement(String sql,
int autoGeneratedKeys)
throws SQLException
statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).
Note: This method is optimized for handling parametric SQL statements that benefit from precompilation. If the driver supports precompilation, the method prepareStatement will send the statement to the database for precompilation. Some drivers may not support precompilation. In this case, the statement may not be sent to the database until the PreparedStatement object is executed. This has no direct effect on users; however, it does affect which methods throw certain SQLExceptions.
Result sets created using the returned PreparedStatement object will by default be type TYPE_FORWARD_ONLY and have a concurrency level of CONCUR_READ_ONLY.
PreparedStatement prepareStatement(String sql,
int[] columnIndexes)
throws SQLException
The driver will ignore the array if the SQL statement is not an INSERT statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).
An SQL statement with or without IN parameters can be pre-compiled and stored in a PreparedStatement object. This object can then be used to efficiently execute this statement multiple times.
Note: This method is optimized for handling parametric SQL statements that benefit from precompilation. If the driver supports precompilation, the method prepareStatement will send the statement to the database for precompilation. Some drivers may not support precompilation. In this case, the statement may not be sent to the database until the PreparedStatement object is executed. This has no direct effect on users; however, it does affect which methods throw certain SQLExceptions.
Result sets created using the returned PreparedStatement object will by default be type TYPE_FORWARD_ONLY and have a concurrency level of CONCUR_READ_ONLY.
PreparedStatement prepareStatement(String sql,
String[] columnNames)
throws SQLException
The driver will ignore the array if the SQL statement is not an INSERT statement, or an SQL statement able to return auto-generated keys (the list of such statements is vendor-specific).
An SQL statement with or without IN parameters can be pre-compiled and stored in a PreparedStatement object. This object can then be used to efficiently execute this statement multiple times.
Note: This method is optimized for handling parametric SQL statements that benefit from precompilation. If the driver supports precompilation, the method prepareStatement will send the statement to the database for precompilation. Some drivers may not support precompilation. In this case, the statement may not be sent to the database until the PreparedStatement object is executed. This has no direct effect on users; however, it does affect which methods throw certain SQLExceptions.
Result sets created using the returned PreparedStatement object will by default be type TYPE_FORWARD_ONLY and have a concurrency level of CONCUR_READ_ONLY.
createClob
Clob
createClob
() throws
SQLException
Constructs an object that implements the Clob interface. The object returned initially contains no data. The setAsciiStream, setCharacterStream and setString methods of the Clob interface may be used to add data to the Clob.
Returns:
An object that implements the Clob interface
Throws:
SQLException
- if an object that implements the Clob interface can not be constructed.
Since:
1.6
createBlob
Blob
createBlob
() throws
SQLException
Constructs an object that implements the Blob interface. The object returned initially contains no data. The setBinaryStream and setBytes methods of the Blob interface may be used to add data to the Blob.
Returns:
An object that implements the Blob interface
Throws:
SQLException
- if an object that implements the Blob interface can not be constructed
Since:
1.6
createNClob
NClob
createNClob
() throws
SQLException
Constructs an object that implements the NClob interface. The object returned initially contains no data. The setAsciiStream, setCharacterStream and setString methods of the NClob interface may be used to add data to the NClob.
Returns:
An object that implements the NClob interface
Throws:
SQLException
- if an object that implements the NClob interface can not be constructed.
Since:
1.6
createSQLXML
SQLXML
createSQLXML
() throws
SQLException
Constructs an object that implements the SQLXML interface. The object returned initially contains no data. The createXmlStreamWriter object and setString method of the SQLXML interface may be used to add data to the SQLXML object.
Returns:
An object that implements the SQLXML interface
Throws:
SQLException
- if an object that implements the SQLXML interface can not be constructed
Since:
1.6
isValid
boolean
isValid
(int timeout) throws
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.
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:
SQLException
- if a database access error occurs.
Since:
1.6
See Also:
DatabaseMetaData.getClientInfoProperties()
setClientInfo
void
setClientInfo
(
String
name,
String
value) throws
SQLException
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 a SQLException, the value specified was not set on the connection.
The following are standard client info properties. Drivers are not required to support these properties however if the driver supports a client info property that can be described by one of the standard properties, the standard property name should be used.
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.
Parameters:
name - The name of the client info property to set
value - The value to set the client info property to. If the value is null, the current value of the specified property is cleared.
Throws:
SQLException
- if the database server returns an error while setting the client info value on the database server.
Since:
6.0
setClientInfo
void
setClientInfo
(
Properties
properties) throws
ClientInfoException
Sets the value of the connection's client info properties. The Properties 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. See setClientInfo (String, String) for more information.
If an error occurs in setting any of the client info properties, a ClientInfoException is thrown. The ClientInfoException 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.
Parameters:
properties - the list of client info properties to set
Throws:
ClientInfoException
- if the database server returns an error while setting the clientInfo values on the database server
Since:
1.6
See Also:
setClientInfo(String, String)
getClientInfo
String
getClientInfo
(
String
name) throws
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.
Parameters:
name - The name of the client info property to retrieve
Returns:
The value of the client info property specified
Throws:
SQLException
- if the database server returns an error when fetching the client info value from the database.
Since:
1.6
See Also:
DatabaseMetaData.getClientInfoProperties()
getClientInfo
Properties
getClientInfo
() throws
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.
Returns:
A Properties object that contains the name and current value of each of the client info properties supported by the driver.
Throws:
SQLException
- if the database server returns an error when fetching the client info values from the database
Since:
1.6
createQueryObject
<T> T
createQueryObject
(
Class
<T> ifc) throws
SQLException
Creates a concrete implementation of a Query interface using the JDBC drivers QueryObjectGenerator implementation. If the JDBC driver does not provide its own QueryObjectGenerator, the QueryObjectGenerator provided with J2SE will be used.
Parameters:
ifc - The Query interface that will be created
Returns:
A concrete implementation of a Query interface
Throws:
SQLException
- if a database access error occurs.
Since:
1.6