/* * Copyright (c) 1996, 2022, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions.
*/
/** * <P>A connection (session) with a specific * database. SQL statements are executed and results are returned * within the context of a connection. * <P> * A {@code 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 {@code getMetaData} method. * * <P><B>Note:</B> When configuring a {@code Connection}, JDBC applications * should use the appropriate {@code Connection} method such as * {@code setAutoCommit} or {@code setTransactionIsolation}. * Applications should not invoke SQL commands directly to change the connection's * configuration when there is a JDBC method available. By default a {@code 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 {@code commit} must be called explicitly in * order to commit changes; otherwise, database changes will not be saved. * <P> * A new {@code 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 {@code ResultSet.getObject}, the {@code getObject} method * will check the connection's type map to see if there is an entry for that * UDT. If so, the {@code getObject} method will map the UDT to the * class indicated. If there is no entry, the UDT will be mapped using the * standard mapping. * <p> * A user may create a new type map, which is a {@code java.util.Map} * object, make an entry in it, and pass it to the {@code 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. * <p> * For example, the following code fragment specifies that the SQL * type {@code ATHLETES} will be mapped to the class * {@code Athletes} in the Java programming language. * The code fragment retrieves the type map for the {@code Connection * } object {@code con}, inserts the entry into it, and then sets * the type map with the new entry as the connection's type map. * <pre> * java.util.Map map = con.getTypeMap(); * map.put("mySchemaName.ATHLETES", Class.forName("Athletes")); * con.setTypeMap(map); * </pre> * * @see DriverManager#getConnection * @see Statement * @see ResultSet * @see DatabaseMetaData * @since 1.1
*/ publicinterface Connection extends Wrapper, AutoCloseable {
/** * Creates a {@code Statement} object for sending * SQL statements to the database. * SQL statements without parameters are normally * executed using {@code Statement} objects. If the same SQL statement * is executed many times, it may be more efficient to use a * {@code PreparedStatement} object. * <P> * Result sets created using the returned {@code Statement} * object will by default be type {@code TYPE_FORWARD_ONLY} * and have a concurrency level of {@code CONCUR_READ_ONLY}. * The holdability of the created result sets can be determined by * calling {@link #getHoldability}. * * @return a new default {@code Statement} object * @throws SQLException if a database access error occurs * or this method is called on a closed connection
*/
Statement createStatement() throws SQLException;
/** * Creates a {@code PreparedStatement} object for sending * parameterized SQL statements to the database. * <P> * A SQL statement with or without IN parameters can be * pre-compiled and stored in a {@code PreparedStatement} object. This * object can then be used to efficiently execute this statement * multiple times. * * <P><B>Note:</B> This method is optimized for handling * parametric SQL statements that benefit from precompilation. If * the driver supports precompilation, * the method {@code 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 {@code PreparedStatement} * object is executed. This has no direct effect on users; however, it does * affect which methods throw certain {@code SQLException} objects. * <P> * Result sets created using the returned {@code PreparedStatement} * object will by default be type {@code TYPE_FORWARD_ONLY} * and have a concurrency level of {@code CONCUR_READ_ONLY}. * The holdability of the created result sets can be determined by * calling {@link #getHoldability}. * * @param sql an SQL statement that may contain one or more '?' IN * parameter placeholders * @return a new default {@code PreparedStatement} object containing the * pre-compiled SQL statement * @throws SQLException if a database access error occurs * or this method is called on a closed connection
*/
PreparedStatement prepareStatement(String sql) throws SQLException;
/** * Creates a {@code CallableStatement} object for calling * database stored procedures. * The {@code CallableStatement} object provides * methods for setting up its IN and OUT parameters, and * methods for executing the call to a stored procedure. * * <P><B>Note:</B> This method is optimized for handling stored * procedure call statements. Some drivers may send the call * statement to the database when the method {@code prepareCall} * is done; others * may wait until the {@code CallableStatement} object * is executed. This has no * direct effect on users; however, it does affect which method * throws certain SQLExceptions. * <P> * Result sets created using the returned {@code CallableStatement} * object will by default be type {@code TYPE_FORWARD_ONLY} * and have a concurrency level of {@code CONCUR_READ_ONLY}. * The holdability of the created result sets can be determined by * calling {@link #getHoldability}. * * @param sql an SQL statement that may contain one or more '?' * parameter placeholders. Typically this statement is specified using JDBC * call escape syntax. * @return a new default {@code CallableStatement} object containing the * pre-compiled SQL statement * @throws SQLException if a database access error occurs * or this method is called on a closed connection
*/
CallableStatement prepareCall(String sql) throws SQLException;
/** * Converts the given SQL statement into the system's native SQL grammar. * A driver may convert the JDBC SQL grammar into its system's * native SQL grammar prior to sending it. This method returns the * native form of the statement that the driver would have sent. * * @param sql an SQL statement that may contain one or more '?' * parameter placeholders * @return the native form of this statement * @throws SQLException if a database access error occurs * or this method is called on a closed connection
*/
String nativeSQL(String sql) throws SQLException;
/** * Sets this connection's auto-commit mode to the given state. * If a connection is in auto-commit mode, then all its SQL * statements will be executed and committed as individual * transactions. Otherwise, its SQL statements are grouped into * transactions that are terminated by a call to either * the method {@code commit} or the method {@code rollback}. * By default, new connections are in auto-commit * mode. * <P> * The commit occurs when the statement completes. The time when the statement * completes depends on the type of SQL Statement: * <ul> * <li>For DML statements, such as Insert, Update or Delete, and DDL statements, * the statement is complete as soon as it has finished executing. * <li>For Select statements, the statement is complete when the associated result * set is closed. * <li>For {@code CallableStatement} objects or for statements that return * multiple results, the statement is complete * when all of the associated result sets have been closed, and all update * counts and output parameters have been retrieved. *</ul> * <P> * <B>NOTE:</B> If this method is called during a transaction and the * auto-commit mode is changed, the transaction is committed. If * {@code setAutoCommit} is called and the auto-commit mode is * not changed, the call is a no-op. * * @param autoCommit {@code true} to enable auto-commit mode; * {@code false} to disable it * @throws SQLException if a database access error occurs, * setAutoCommit(true) is called while participating in a distributed transaction, * or this method is called on a closed connection * @see #getAutoCommit
*/ void setAutoCommit(boolean autoCommit) throws SQLException;
/** * Retrieves the current auto-commit mode for this {@code Connection} * object. * * @return the current state of this {@code Connection} object's * auto-commit mode * @throws SQLException if a database access error occurs * or this method is called on a closed connection * @see #setAutoCommit
*/ boolean getAutoCommit() throws SQLException;
/** * Makes all changes made since the previous * commit/rollback permanent and releases any database locks * currently held by this {@code Connection} object. * This method should be * used only when auto-commit mode has been disabled. * * @throws SQLException if a database access error occurs, * this method is called while participating in a distributed transaction, * if this method is called on a closed connection or this * {@code Connection} object is in auto-commit mode * @see #setAutoCommit
*/ void commit() throws SQLException;
/** * Undoes all changes made in the current transaction * and releases any database locks currently held * by this {@code Connection} object. This method should be * used only when auto-commit mode has been disabled. * * @throws SQLException if a database access error occurs, * this method is called while participating in a distributed transaction, * this method is called on a closed connection or this * {@code Connection} object is in auto-commit mode * @see #setAutoCommit
*/ void rollback() throws SQLException;
/** * Releases this {@code Connection} object's database and JDBC resources * immediately instead of waiting for them to be automatically released. * <P> * Calling the method {@code close} on a {@code Connection} * object that is already closed is a no-op. * <P> * It is <b>strongly recommended</b> that an application explicitly * commits or rolls back an active transaction prior to calling the * {@code close} method. If the {@code close} method is called * and there is an active transaction, the results are implementation-defined. * * @throws SQLException if a database access error occurs
*/ void close() throws SQLException;
/** * Retrieves whether this {@code Connection} object has been * closed. A connection is closed if the method {@code close} * has been called on it or if certain fatal errors have occurred. * This method is guaranteed to return {@code true} only when * it is called after the method {@code Connection.close} has * been called. * <P> * 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. * * @return {@code true} if this {@code Connection} object * is closed; {@code false} if it is still open * @throws SQLException if a database access error occurs
*/ boolean isClosed() throws SQLException;
/** * Retrieves a {@code DatabaseMetaData} object that contains * metadata about the database to which this * {@code Connection} object represents a connection. * The metadata includes information about the database's * tables, its supported SQL grammar, its stored * procedures, the capabilities of this connection, and so on. * * @return a {@code DatabaseMetaData} object for this * {@code Connection} object * @throws SQLException if a database access error occurs * or this method is called on a closed connection
*/
DatabaseMetaData getMetaData() throws SQLException;
/** * Puts this connection in read-only mode as a hint to the driver to enable * database optimizations. * * <P><B>Note:</B> This method cannot be called during a transaction. * * @param readOnly {@code true} enables read-only mode; * {@code false} disables it * @throws SQLException if a database access error occurs, this * method is called on a closed connection or this * method is called during a transaction
*/ void setReadOnly(boolean readOnly) throws SQLException;
/** * Retrieves whether this {@code Connection} * object is in read-only mode. * * @return {@code true} if this {@code Connection} object * is read-only; {@code false} otherwise * @throws SQLException if a database access error occurs * or this method is called on a closed connection
*/ boolean isReadOnly() throws SQLException;
/** * Sets the given catalog name in order to select * a subspace of this {@code Connection} object's database * in which to work. * <P> * If the driver does not support catalogs, it will * silently ignore this request. * <p> * Calling {@code setCatalog} has no effect on previously created or prepared * {@code Statement} objects. It is implementation defined whether a DBMS * prepare operation takes place immediately when the {@code Connection} * method {@code prepareStatement} or {@code prepareCall} is invoked. * For maximum portability, {@code setCatalog} should be called before a * {@code Statement} is created or prepared. * * @param catalog the name of a catalog (subspace in this * {@code Connection} object's database) in which to work * @throws SQLException if a database access error occurs * or this method is called on a closed connection * @see #getCatalog
*/ void setCatalog(String catalog) throws SQLException;
/** * Retrieves this {@code Connection} object's current catalog name. * * @return the current catalog name or {@code null} if there is none * @throws SQLException if a database access error occurs * or this method is called on a closed connection * @see #setCatalog
*/
String getCatalog() throws SQLException;
/** * A constant indicating that transactions are not supported.
*/ int TRANSACTION_NONE = 0;
/** * A constant indicating that * dirty reads, non-repeatable reads and phantom reads can occur. * This level allows a row changed by one transaction to be read * by another transaction before any changes in that row have been * committed (a "dirty read"). If any of the changes are rolled back, * the second transaction will have retrieved an invalid row.
*/ int TRANSACTION_READ_UNCOMMITTED = 1;
/** * A constant indicating that * dirty reads are prevented; non-repeatable reads and phantom * reads can occur. This level only prohibits a transaction * from reading a row with uncommitted changes in it.
*/ int TRANSACTION_READ_COMMITTED = 2;
/** * A constant indicating that * dirty reads and non-repeatable reads are prevented; phantom * reads can occur. This level prohibits a transaction from * reading a row with uncommitted changes in it, and it also * prohibits the situation where one transaction reads a row, * a second transaction alters the row, and the first transaction * rereads the row, getting different values the second time * (a "non-repeatable read").
*/ int TRANSACTION_REPEATABLE_READ = 4;
/** * A constant indicating that * dirty reads, non-repeatable reads and phantom reads are prevented. * This level includes the prohibitions in * {@code TRANSACTION_REPEATABLE_READ} and further prohibits the * situation where one transaction reads all rows that satisfy * a {@code WHERE} condition, a second transaction inserts a row that * satisfies that {@code WHERE} condition, and the first transaction * rereads for the same condition, retrieving the additional * "phantom" row in the second read.
*/ int TRANSACTION_SERIALIZABLE = 8;
/** * Attempts to change the transaction isolation level for this * {@code Connection} object to the one given. * The constants defined in the interface {@code Connection} * are the possible transaction isolation levels. * <P> * <B>Note:</B> If this method is called during a transaction, the result * is implementation-defined. * * @param level one of the following {@code Connection} constants: * {@code Connection.TRANSACTION_READ_UNCOMMITTED}, * {@code Connection.TRANSACTION_READ_COMMITTED}, * {@code Connection.TRANSACTION_REPEATABLE_READ}, or * {@code Connection.TRANSACTION_SERIALIZABLE}. * (Note that {@code Connection.TRANSACTION_NONE} cannot be used * because it specifies that transactions are not supported.) * @throws SQLException if a database access error occurs, this * method is called on a closed connection * or the given parameter is not one of the {@code Connection} * constants * @see DatabaseMetaData#supportsTransactionIsolationLevel * @see #getTransactionIsolation
*/ void setTransactionIsolation(int level) throws SQLException;
/** * Retrieves this {@code Connection} object's current * transaction isolation level. * * @return the current transaction isolation level, which will be one * of the following constants: * {@code Connection.TRANSACTION_READ_UNCOMMITTED}, * {@code Connection.TRANSACTION_READ_COMMITTED}, * {@code Connection.TRANSACTION_REPEATABLE_READ}, * {@code Connection.TRANSACTION_SERIALIZABLE}, or * {@code Connection.TRANSACTION_NONE}. * @throws SQLException if a database access error occurs * or this method is called on a closed connection * @see #setTransactionIsolation
*/ int getTransactionIsolation() throws SQLException;
/** * Retrieves the first warning reported by calls on this * {@code Connection} object. If there is more than one * warning, subsequent warnings will be chained to the first one * and can be retrieved by calling the method * {@code SQLWarning.getNextWarning} on the warning * that was retrieved previously. * <P> * This method may not be * called on a closed connection; doing so will cause an * {@code SQLException} to be thrown. * * <P><B>Note:</B> Subsequent warnings will be chained to this * SQLWarning. * * @return the first {@code SQLWarning} object or {@code null} * if there are none * @throws SQLException if a database access error occurs or * this method is called on a closed connection * @see SQLWarning
*/
SQLWarning getWarnings() throws SQLException;
/** * Clears all warnings reported for this {@code Connection} object. * After a call to this method, the method {@code getWarnings} * returns {@code null} until a new warning is * reported for this {@code Connection} object. * * @throws SQLException if a database access error occurs * or this method is called on a closed connection
*/ void clearWarnings() throws SQLException;
/** * Creates a {@code Statement} object that will generate * {@code ResultSet} objects with the given type and concurrency. * This method is the same as the {@code createStatement} method * above, but it allows the default result set * type and concurrency to be overridden. * The holdability of the created result sets can be determined by * calling {@link #getHoldability}. * * @param resultSetType a result set type; one of * {@code ResultSet.TYPE_FORWARD_ONLY}, * {@code ResultSet.TYPE_SCROLL_INSENSITIVE}, or * {@code ResultSet.TYPE_SCROLL_SENSITIVE} * @param resultSetConcurrency a concurrency type; one of * {@code ResultSet.CONCUR_READ_ONLY} or * {@code ResultSet.CONCUR_UPDATABLE} * @return a new {@code Statement} object that will generate * {@code ResultSet} objects with the given type and * concurrency * @throws SQLException if a database access error occurs, this * method is called on a closed connection * or the given parameters are not {@code ResultSet} * constants indicating type and concurrency * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method or this method is not supported for the specified result * set type and result set concurrency. * @since 1.2
*/
Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException;
/** * * Creates a {@code PreparedStatement} object that will generate * {@code ResultSet} objects with the given type and concurrency. * This method is the same as the {@code prepareStatement} method * above, but it allows the default result set * type and concurrency to be overridden. * The holdability of the created result sets can be determined by * calling {@link #getHoldability}. * * @param sql a {@code String} object that is the SQL statement to * be sent to the database; may contain one or more '?' IN * parameters * @param resultSetType a result set type; one of * {@code ResultSet.TYPE_FORWARD_ONLY}, * {@code ResultSet.TYPE_SCROLL_INSENSITIVE}, or * {@code ResultSet.TYPE_SCROLL_SENSITIVE} * @param resultSetConcurrency a concurrency type; one of * {@code ResultSet.CONCUR_READ_ONLY} or * {@code ResultSet.CONCUR_UPDATABLE} * @return a new PreparedStatement object containing the * pre-compiled SQL statement that will produce {@code ResultSet} * objects with the given type and concurrency * @throws SQLException if a database access error occurs, this * method is called on a closed connection * or the given parameters are not {@code ResultSet} * constants indicating type and concurrency * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method or this method is not supported for the specified result * set type and result set concurrency. * @since 1.2
*/
PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException;
/** * Creates a {@code CallableStatement} object that will generate * {@code ResultSet} objects with the given type and concurrency. * This method is the same as the {@code prepareCall} method * above, but it allows the default result set * type and concurrency to be overridden. * The holdability of the created result sets can be determined by * calling {@link #getHoldability}. * * @param sql a {@code String} object that is the SQL statement to * be sent to the database; may contain on or more '?' parameters * @param resultSetType a result set type; one of * {@code ResultSet.TYPE_FORWARD_ONLY}, * {@code ResultSet.TYPE_SCROLL_INSENSITIVE}, or * {@code ResultSet.TYPE_SCROLL_SENSITIVE} * @param resultSetConcurrency a concurrency type; one of * {@code ResultSet.CONCUR_READ_ONLY} or * {@code ResultSet.CONCUR_UPDATABLE} * @return a new {@code CallableStatement} object containing the * pre-compiled SQL statement that will produce {@code ResultSet} * objects with the given type and concurrency * @throws SQLException if a database access error occurs, this method * is called on a closed connection * or the given parameters are not {@code ResultSet} * constants indicating type and concurrency * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method or this method is not supported for the specified result * set type and result set concurrency. * @since 1.2
*/
CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException;
/** * Retrieves the {@code Map} object associated with this * {@code Connection} object. * Unless the application has added an entry, the type map returned * will be empty. * <p> * You must invoke {@code setTypeMap} after making changes to the * {@code Map} object returned from * {@code getTypeMap} as a JDBC driver may create an internal * copy of the {@code Map} object passed to {@code setTypeMap}: * * <pre> * Map<String,Class<?>> myMap = con.getTypeMap(); * myMap.put("mySchemaName.ATHLETES", Athletes.class); * con.setTypeMap(myMap); * </pre> * @return the {@code java.util.Map} object associated * with this {@code Connection} object * @throws SQLException if a database access error occurs * or this method is called on a closed connection * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method * @since 1.2 * @see #setTypeMap
*/
java.util.Map<String,Class<?>> getTypeMap() throws SQLException;
/** * Installs the given {@code TypeMap} object as the type map for * this {@code Connection} object. The type map will be used for the * custom mapping of SQL structured types and distinct types. * <p> * You must set the values for the {@code TypeMap} prior to * calling {@code setMap} as a JDBC driver may create an internal copy * of the {@code TypeMap}: * * <pre> * Map myMap<String,Class<?>> = new HashMap<String,Class<?>>(); * myMap.put("mySchemaName.ATHLETES", Athletes.class); * con.setTypeMap(myMap); * </pre> * @param map the {@code java.util.Map} object to install * as the replacement for this {@code Connection} * object's default type map * @throws SQLException if a database access error occurs, this * method is called on a closed connection or * the given parameter is not a {@code java.util.Map} * object * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method * @since 1.2 * @see #getTypeMap
*/ void setTypeMap(java.util.Map<String,Class<?>> map) throws SQLException;
/** * Changes the default holdability of {@code ResultSet} objects * created using this {@code Connection} object to the given * holdability. The default holdability of {@code ResultSet} objects * can be determined by invoking * {@link DatabaseMetaData#getResultSetHoldability}. * * @param holdability a {@code ResultSet} holdability constant; one of * {@code ResultSet.HOLD_CURSORS_OVER_COMMIT} or * {@code ResultSet.CLOSE_CURSORS_AT_COMMIT} * @throws SQLException if a database access occurs, this method is called * on a closed connection, or the given parameter * is not a {@code ResultSet} constant indicating holdability * @throws SQLFeatureNotSupportedException if the given holdability is not supported * @see #getHoldability * @see DatabaseMetaData#getResultSetHoldability * @see ResultSet * @since 1.4
*/ void setHoldability(int holdability) throws SQLException;
/** * Retrieves the current holdability of {@code ResultSet} objects * created using this {@code Connection} object. * * @return the holdability, one of * {@code ResultSet.HOLD_CURSORS_OVER_COMMIT} or * {@code ResultSet.CLOSE_CURSORS_AT_COMMIT} * @throws SQLException if a database access error occurs * or this method is called on a closed connection * @see #setHoldability * @see DatabaseMetaData#getResultSetHoldability * @see ResultSet * @since 1.4
*/ int getHoldability() throws SQLException;
/** * Creates an unnamed savepoint in the current transaction and * returns the new {@code Savepoint} object that represents it. * *<p> if setSavepoint is invoked outside of an active transaction, a transaction will be started at this newly created *savepoint. * * @return the new {@code Savepoint} object * @throws SQLException if a database access error occurs, * this method is called while participating in a distributed transaction, * this method is called on a closed connection * or this {@code Connection} object is currently in * auto-commit mode * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method * @see Savepoint * @since 1.4
*/
Savepoint setSavepoint() throws SQLException;
/** * Creates a savepoint with the given name in the current transaction * and returns the new {@code Savepoint} object that represents it. * * <p> if setSavepoint is invoked outside of an active transaction, a transaction will be started at this newly created *savepoint. * * @param name a {@code String} containing the name of the savepoint * @return the new {@code Savepoint} object * @throws SQLException if a database access error occurs, * this method is called while participating in a distributed transaction, * this method is called on a closed connection * or this {@code Connection} object is currently in * auto-commit mode * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method * @see Savepoint * @since 1.4
*/
Savepoint setSavepoint(String name) throws SQLException;
/** * Undoes all changes made after the given {@code Savepoint} object * was set. * <P> * This method should be used only when auto-commit has been disabled. * * @param savepoint the {@code Savepoint} object to roll back to * @throws SQLException if a database access error occurs, * this method is called while participating in a distributed transaction, * this method is called on a closed connection, * the {@code Savepoint} object is no longer valid, * or this {@code Connection} object is currently in * auto-commit mode * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method * @see Savepoint * @see #rollback * @since 1.4
*/ void rollback(Savepoint savepoint) throws SQLException;
/** * Removes the specified {@code Savepoint} and subsequent {@code Savepoint} objects from the current * transaction. Any reference to the savepoint after it have been removed * will cause an {@code SQLException} to be thrown. * * @param savepoint the {@code Savepoint} object to be removed * @throws SQLException if a database access error occurs, this * method is called on a closed connection or * the given {@code Savepoint} object is not a valid * savepoint in the current transaction * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method * @since 1.4
*/ void releaseSavepoint(Savepoint savepoint) throws SQLException;
/** * Creates a {@code Statement} object that will generate * {@code ResultSet} objects with the given type, concurrency, * and holdability. * This method is the same as the {@code createStatement} method * above, but it allows the default result set * type, concurrency, and holdability to be overridden. * * @param resultSetType one of the following {@code ResultSet} * constants: * {@code ResultSet.TYPE_FORWARD_ONLY}, * {@code ResultSet.TYPE_SCROLL_INSENSITIVE}, or * {@code ResultSet.TYPE_SCROLL_SENSITIVE} * @param resultSetConcurrency one of the following {@code ResultSet} * constants: * {@code ResultSet.CONCUR_READ_ONLY} or * {@code ResultSet.CONCUR_UPDATABLE} * @param resultSetHoldability one of the following {@code ResultSet} * constants: * {@code ResultSet.HOLD_CURSORS_OVER_COMMIT} or * {@code ResultSet.CLOSE_CURSORS_AT_COMMIT} * @return a new {@code Statement} object that will generate * {@code ResultSet} objects with the given type, * concurrency, and holdability * @throws SQLException if a database access error occurs, this * method is called on a closed connection * or the given parameters are not {@code ResultSet} * constants indicating type, concurrency, and holdability * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method or this method is not supported for the specified result * set type, result set holdability and result set concurrency. * @see ResultSet * @since 1.4
*/
Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException;
/** * Creates a {@code PreparedStatement} object that will generate * {@code ResultSet} objects with the given type, concurrency, * and holdability. * <P> * This method is the same as the {@code prepareStatement} method * above, but it allows the default result set * type, concurrency, and holdability to be overridden. * * @param sql a {@code String} object that is the SQL statement to * be sent to the database; may contain one or more '?' IN * parameters * @param resultSetType one of the following {@code ResultSet} * constants: * {@code ResultSet.TYPE_FORWARD_ONLY}, * {@code ResultSet.TYPE_SCROLL_INSENSITIVE}, or * {@code ResultSet.TYPE_SCROLL_SENSITIVE} * @param resultSetConcurrency one of the following {@code ResultSet} * constants: * {@code ResultSet.CONCUR_READ_ONLY} or * {@code ResultSet.CONCUR_UPDATABLE} * @param resultSetHoldability one of the following {@code ResultSet} * constants: * {@code ResultSet.HOLD_CURSORS_OVER_COMMIT} or * {@code ResultSet.CLOSE_CURSORS_AT_COMMIT} * @return a new {@code PreparedStatement} object, containing the * pre-compiled SQL statement, that will generate * {@code ResultSet} objects with the given type, * concurrency, and holdability * @throws SQLException if a database access error occurs, this * method is called on a closed connection * or the given parameters are not {@code ResultSet} * constants indicating type, concurrency, and holdability * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method or this method is not supported for the specified result * set type, result set holdability and result set concurrency. * @see ResultSet * @since 1.4
*/
PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException;
/** * Creates a {@code CallableStatement} object that will generate * {@code ResultSet} objects with the given type and concurrency. * This method is the same as the {@code prepareCall} method * above, but it allows the default result set * type, result set concurrency type and holdability to be overridden. * * @param sql a {@code String} object that is the SQL statement to * be sent to the database; may contain on or more '?' parameters * @param resultSetType one of the following {@code ResultSet} * constants: * {@code ResultSet.TYPE_FORWARD_ONLY}, * {@code ResultSet.TYPE_SCROLL_INSENSITIVE}, or * {@code ResultSet.TYPE_SCROLL_SENSITIVE} * @param resultSetConcurrency one of the following {@code ResultSet} * constants: * {@code ResultSet.CONCUR_READ_ONLY} or * {@code ResultSet.CONCUR_UPDATABLE} * @param resultSetHoldability one of the following {@code ResultSet} * constants: * {@code ResultSet.HOLD_CURSORS_OVER_COMMIT} or * {@code ResultSet.CLOSE_CURSORS_AT_COMMIT} * @return a new {@code CallableStatement} object, containing the * pre-compiled SQL statement, that will generate * {@code ResultSet} objects with the given type, * concurrency, and holdability * @throws SQLException if a database access error occurs, this * method is called on a closed connection * or the given parameters are not {@code ResultSet} * constants indicating type, concurrency, and holdability * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method or this method is not supported for the specified result * set type, result set holdability and result set concurrency. * @see ResultSet * @since 1.4
*/
CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException;
/** * Creates a default {@code PreparedStatement} object that has * the capability to retrieve auto-generated keys. The given constant * tells the driver whether it should make auto-generated keys * available for retrieval. This parameter is ignored if the SQL statement * is not an {@code INSERT} statement, or an SQL statement able to return * auto-generated keys (the list of such statements is vendor-specific). * <P> * <B>Note:</B> This method is optimized for handling * parametric SQL statements that benefit from precompilation. If * the driver supports precompilation, * the method {@code 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 {@code PreparedStatement} * object is executed. This has no direct effect on users; however, it does * affect which methods throw certain SQLExceptions. * <P> * Result sets created using the returned {@code PreparedStatement} * object will by default be type {@code TYPE_FORWARD_ONLY} * and have a concurrency level of {@code CONCUR_READ_ONLY}. * The holdability of the created result sets can be determined by * calling {@link #getHoldability}. * * @param sql an SQL statement that may contain one or more '?' IN * parameter placeholders * @param autoGeneratedKeys a flag indicating whether auto-generated keys * should be returned; one of * {@code Statement.RETURN_GENERATED_KEYS} or * {@code Statement.NO_GENERATED_KEYS} * @return a new {@code PreparedStatement} object, containing the * pre-compiled SQL statement, that will have the capability of * returning auto-generated keys * @throws SQLException if a database access error occurs, this * method is called on a closed connection * or the given parameter is not a {@code Statement} * constant indicating whether auto-generated keys should be * returned * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method with a constant of Statement.RETURN_GENERATED_KEYS * @since 1.4
*/
PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException;
/** * Creates a default {@code PreparedStatement} object capable * of returning the auto-generated keys designated by the given array. * This array contains the indexes of the columns in the target * table that contain the auto-generated keys that should be made * available. The driver will ignore the array if the SQL statement * is not an {@code INSERT} statement, or an SQL statement able to return * auto-generated keys (the list of such statements is vendor-specific). *<p> * An SQL statement with or without IN parameters can be * pre-compiled and stored in a {@code PreparedStatement} object. This * object can then be used to efficiently execute this statement * multiple times. * <P> * <B>Note:</B> This method is optimized for handling * parametric SQL statements that benefit from precompilation. If * the driver supports precompilation, * the method {@code 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 {@code PreparedStatement} * object is executed. This has no direct effect on users; however, it does * affect which methods throw certain SQLExceptions. * <P> * Result sets created using the returned {@code PreparedStatement} * object will by default be type {@code TYPE_FORWARD_ONLY} * and have a concurrency level of {@code CONCUR_READ_ONLY}. * The holdability of the created result sets can be determined by * calling {@link #getHoldability}. * * @param sql an SQL statement that may contain one or more '?' IN * parameter placeholders * @param columnIndexes an array of column indexes indicating the columns * that should be returned from the inserted row or rows * @return a new {@code PreparedStatement} object, containing the * pre-compiled statement, that is capable of returning the * auto-generated keys designated by the given array of column * indexes * @throws SQLException if a database access error occurs * or this method is called on a closed connection * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method * * @since 1.4
*/
PreparedStatement prepareStatement(String sql, int columnIndexes[]) throws SQLException;
/** * Creates a default {@code PreparedStatement} object capable * of returning the auto-generated keys designated by the given array. * This array contains the names of the columns in the target * table that contain the auto-generated keys that should be returned. * The driver will ignore the array if the SQL statement * is not an {@code INSERT} statement, or an SQL statement able to return * auto-generated keys (the list of such statements is vendor-specific). * <P> * An SQL statement with or without IN parameters can be * pre-compiled and stored in a {@code PreparedStatement} object. This * object can then be used to efficiently execute this statement * multiple times. * <P> * <B>Note:</B> This method is optimized for handling * parametric SQL statements that benefit from precompilation. If * the driver supports precompilation, * the method {@code 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 {@code PreparedStatement} * object is executed. This has no direct effect on users; however, it does * affect which methods throw certain SQLExceptions. * <P> * Result sets created using the returned {@code PreparedStatement} * object will by default be type {@code TYPE_FORWARD_ONLY} * and have a concurrency level of {@code CONCUR_READ_ONLY}. * The holdability of the created result sets can be determined by * calling {@link #getHoldability}. * * @param sql an SQL statement that may contain one or more '?' IN * parameter placeholders * @param columnNames an array of column names indicating the columns * that should be returned from the inserted row or rows * @return a new {@code PreparedStatement} object, containing the * pre-compiled statement, that is capable of returning the * auto-generated keys designated by the given array of column * names * @throws SQLException if a database access error occurs * or this method is called on a closed connection * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this method * * @since 1.4
*/
PreparedStatement prepareStatement(String sql, String columnNames[]) throws SQLException;
/** * Constructs an object that implements the {@code Clob} interface. The object * returned initially contains no data. The {@code setAsciiStream}, * {@code setCharacterStream} and {@code setString} methods of * the {@code Clob} interface may be used to add data to the {@code Clob}. * @return An object that implements the {@code Clob} interface * @throws SQLException if an object that implements the * {@code Clob} interface can not be constructed, this method is * called on a closed connection or a database access error occurs. * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this data type * * @since 1.6
*/
Clob createClob() throws SQLException;
/** * Constructs an object that implements the {@code Blob} interface. The object * returned initially contains no data. The {@code setBinaryStream} and * {@code setBytes} methods of the {@code Blob} interface may be used to add data to * the {@code Blob}. * @return An object that implements the {@code Blob} interface * @throws SQLException if an object that implements the * {@code Blob} interface can not be constructed, this method is * called on a closed connection or a database access error occurs. * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this data type * * @since 1.6
*/
Blob createBlob() throws SQLException;
/** * Constructs an object that implements the {@code NClob} interface. The object * returned initially contains no data. The {@code setAsciiStream}, * {@code setCharacterStream} and {@code setString} methods of the {@code NClob} interface may * be used to add data to the {@code NClob}. * @return An object that implements the {@code NClob} interface * @throws SQLException if an object that implements the * {@code NClob} interface can not be constructed, this method is * called on a closed connection or a database access error occurs. * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this data type * * @since 1.6
*/
NClob createNClob() throws SQLException;
/** * Constructs an object that implements the {@code SQLXML} interface. The object * returned initially contains no data. The {@code createXmlStreamWriter} object and * {@code setString} method of the {@code SQLXML} interface may be used to add data to the {@code SQLXML} * object. * @return An object that implements the {@code SQLXML} interface * @throws SQLException if an object that implements the {@code SQLXML} interface can not * be constructed, this method is * called on a closed connection or a database access error occurs. * @throws SQLFeatureNotSupportedException if the JDBC driver does not support * this data type * @since 1.6
*/
SQLXML createSQLXML() 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. * <p> * The query submitted by the driver to validate the connection shall be * executed in the context of the current transaction. * * @param 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. * * @return true if the connection is valid, false otherwise * @throws SQLException if the value supplied for {@code timeout} * is less than 0 * @since 1.6 * * @see java.sql.DatabaseMetaData#getClientInfoProperties
*/ boolean isValid(int timeout) throws SQLException;
/** * Sets the value of the client info property specified by name to the * value specified by value. * <p> * Applications may use the {@code DatabaseMetaData.getClientInfoProperties} * method to determine the client info properties supported by the driver * and the maximum length that may be specified for each property. * <p> * 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. * <p> * The driver shall generate a warning if the client info name specified * is not recognized by the driver. * <p> * 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 {@code SQLClientInfoException}. If the driver * generates a {@code SQLClientInfoException}, the value specified was not set on the * connection. * <p> * 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. * * <ul> * <li>ApplicationName - The name of the application currently utilizing * the connection</li> * <li>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.</li> * <li>ClientHostname - The hostname of the computer the application * using the connection is running on.</li> * </ul> * * @param name The name of the client info property to set * @param 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 SQLClientInfoException if the database server returns an error while * setting the client info value on the database server or this method * is called on a closed connection * * @since 1.6
*/ void setClientInfo(String name, String value) throws SQLClientInfoException;
/** * Sets the value of the connection's client info properties. The * {@code 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 {@code setClientInfo (String, String)} for * more information. * <p> * If an error occurs in setting any of the client info properties, a * {@code SQLClientInfoException} is thrown. The {@code SQLClientInfoException} * 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. * * * @param properties the list of client info properties to set * * @see java.sql.Connection#setClientInfo(String, String) setClientInfo(String, String) * @since 1.6 * * @throws SQLClientInfoException if the database server returns an error while * setting the clientInfo values on the database server or this method * is called on a closed connection *
*/ void setClientInfo(Properties properties) throws SQLClientInfoException;
/** * 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. * <p> * Applications may use the {@code DatabaseMetaData.getClientInfoProperties} * method to determine the client info properties supported by the driver. * * @param name The name of the client info property to retrieve * * @return 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 * or this method is called on a closed connection * * @since 1.6 * * @see java.sql.DatabaseMetaData#getClientInfoProperties
*/
String getClientInfo(String name) 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. * * @return A {@code 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 * or this method is called on a closed connection * * @since 1.6
*/
Properties getClientInfo() throws SQLException;
/** * Factory method for creating Array objects. *<p> * <b>Note: </b>When {@code createArrayOf} is used to create an array object * that maps to a primitive data type, then it is implementation-defined * whether the {@code Array} object is an array of that primitive * data type or an array of {@code Object}. * <p> * <b>Note: </b>The JDBC driver is responsible for mapping the elements * {@code Object} array to the default JDBC SQL type defined in * java.sql.Types for the given class of {@code Object}. The default * mapping is specified in Appendix B of the JDBC specification. If the * resulting JDBC type is not the appropriate type for the given typeName then * it is implementation defined whether an {@code SQLException} is * thrown or the driver supports the resulting conversion. * * @param 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 by {@code Array.getBaseTypeName} * @param elements the elements that populate the returned object * @return an Array object whose elements map to the specified SQL type * @throws SQLException if a database error occurs, the JDBC type is not * appropriate for the typeName and the conversion is not supported, the typeName is null or this method is called on a closed connection * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this data type * @since 1.6
*/
Array createArrayOf(String typeName, Object[] elements) throws
SQLException;
/** * Factory method for creating Struct objects. * * @param typeName the SQL type name of the SQL structured type that this {@code Struct} * 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 by * {@code Struct.getSQLTypeName}.
* @param attributes the attributes that populate the returned object * @return a Struct object that maps to the given SQL type and is populated with the given attributes * @throws SQLException if a database error occurs, the typeName is null or this method is called on a closed connection * @throws SQLFeatureNotSupportedException if the JDBC driver does not support this data type * @since 1.6
*/
Struct createStruct(String typeName, Object[] attributes) throws SQLException;
/** * Sets the given schema name to access. * <P> * If the driver does not support schemas, it will * silently ignore this request. * <p> * Calling {@code setSchema} has no effect on previously created or prepared * {@code Statement} objects. It is implementation defined whether a DBMS * prepare operation takes place immediately when the {@code Connection} * method {@code prepareStatement} or {@code prepareCall} is invoked. * For maximum portability, {@code setSchema} should be called before a * {@code Statement} is created or prepared. * * @param schema the name of a schema in which to work * @throws SQLException if a database access error occurs * or this method is called on a closed connection * @see #getSchema * @since 1.7
*/ void setSchema(String schema) throws SQLException;
/** * Retrieves this {@code Connection} object's current schema name. * * @return the current schema name or {@code null} if there is none * @throws SQLException if a database access error occurs * or this method is called on a closed connection * @see #setSchema * @since 1.7
*/
String getSchema() throws SQLException;
/** * Terminates an open connection. Calling {@code abort} results in: * <ul> * <li>The connection marked as closed * <li>Closes any physical connection to the database * <li>Releases resources used by the connection * <li>Insures that any thread that is currently accessing the connection * will either progress to completion or throw an {@code SQLException}. * </ul> * <p> * Calling {@code abort} marks the connection closed and releases any * resources. Calling {@code abort} on a closed connection is a * no-op. * <p> * 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 * {@code abort} method returns, the connection will have been marked as * closed and the {@code Executor} that was passed as a parameter to abort * may still be executing tasks to release resources. * <p> * This method checks to see that there is an {@code SQLPermission} * object before allowing the method to proceed. If a * {@code SecurityManager} exists and its * {@code checkPermission} method denies calling {@code abort}, * this method throws a * {@code java.lang.SecurityException}. * @param executor The {@code Executor} implementation which will * be used by {@code abort}. * @throws java.sql.SQLException if a database access error occurs or * the {@code executor} is {@code null}, * @throws java.lang.SecurityException if a security manager exists and its
--> --------------------
--> maximum size reached
--> --------------------
Messung V0.5
¤ Dauer der Verarbeitung: 0.44 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.