home *** CD-ROM | disk | FTP | other *** search
Java Source | 1998-03-20 | 15.1 KB | 425 lines |
- /*
- * @(#)Statement.java 1.11 98/03/18
- *
- * Copyright 1996-1998 by Sun Microsystems, Inc.,
- * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
- * All rights reserved.
- *
- * This software is the confidential and proprietary information
- * of Sun Microsystems, Inc. ("Confidential Information"). You
- * shall not disclose such Confidential Information and shall use
- * it only in accordance with the terms of the license agreement
- * you entered into with Sun.
- */
-
- package java.sql;
-
- /**
- * <P>A Statement object is used for executing a static SQL statement
- * and obtaining the results produced by it.
- *
- * <P>Only one ResultSet per Statement can be open at any point in
- * time. Therefore, if the reading of one ResultSet is interleaved
- * with the reading of another, each must have been generated by
- * different Statements. All statement execute methods implicitly
- * close a statment's current ResultSet if an open one exists.
- *
- * @see Connection#createStatement
- * @see ResultSet
- */
- public interface Statement {
-
- /**
- * Execute a SQL statement that returns a single ResultSet.
- *
- * @param sql typically this is a static SQL SELECT statement
- * @return a ResultSet that contains the data produced by the
- * query; never null
- * @exception SQLException if a database-access error occurs.
- */
- ResultSet executeQuery(String sql) throws SQLException;
-
- /**
- * Execute a SQL INSERT, UPDATE or DELETE statement. In addition,
- * SQL statements that return nothing such as SQL DDL statements
- * can be executed.
- *
- * @param sql a SQL INSERT, UPDATE or DELETE statement or a SQL
- * statement that returns nothing
- * @return either the row count for INSERT, UPDATE or DELETE or 0
- * for SQL statements that return nothing
- * @exception SQLException if a database-access error occurs.
- */
- int executeUpdate(String sql) throws SQLException;
-
- /**
- * In many cases, it is desirable to immediately release a
- * Statements's database and JDBC resources instead of waiting for
- * this to happen when it is automatically closed; the close
- * method provides this immediate release.
- *
- * <P><B>Note:</B> A Statement is automatically closed when it is
- * garbage collected. When a Statement is closed, its current
- * ResultSet, if one exists, is also closed.
- *
- * @exception SQLException if a database-access error occurs.
- */
- void close() throws SQLException;
-
- //----------------------------------------------------------------------
-
- /**
- * The maxFieldSize limit (in bytes) is the maximum amount of data
- * returned for any column value; it only applies to BINARY,
- * VARBINARY, LONGVARBINARY, CHAR, VARCHAR, and LONGVARCHAR
- * columns. If the limit is exceeded, the excess data is silently
- * discarded.
- *
- * @return the current max column size limit; zero means unlimited
- * @exception SQLException if a database-access error occurs.
- */
- int getMaxFieldSize() throws SQLException;
-
- /**
- * The maxFieldSize limit (in bytes) is set to limit the size of
- * data that can be returned for any column value; it only applies
- * to BINARY, VARBINARY, LONGVARBINARY, CHAR, VARCHAR, and
- * LONGVARCHAR fields. If the limit is exceeded, the excess data
- * is silently discarded. For maximum portability use values
- * greater than 256.
- *
- * @param max the new max column size limit; zero means unlimited
- * @exception SQLException if a database-access error occurs.
- */
- void setMaxFieldSize(int max) throws SQLException;
-
- /**
- * The maxRows limit is the maximum number of rows that a
- * ResultSet can contain. If the limit is exceeded, the excess
- * rows are silently dropped.
- *
- * @return the current max row limit; zero means unlimited
- * @exception SQLException if a database-access error occurs.
- */
- int getMaxRows() throws SQLException;
-
- /**
- * The maxRows limit is set to limit the number of rows that any
- * ResultSet can contain. If the limit is exceeded, the excess
- * rows are silently dropped.
- *
- * @param max the new max rows limit; zero means unlimited
- * @exception SQLException if a database-access error occurs.
- */
- void setMaxRows(int max) throws SQLException;
-
- /**
- * If escape scanning is on (the default), the driver will do
- * escape substitution before sending the SQL to the database.
- *
- * Note: Since prepared statements have usually been parsed prior
- * to making this call, disabling escape processing for prepared
- * statements will like have no affect.
- *
- * @param enable true to enable; false to disable
- * @exception SQLException if a database-access error occurs.
- */
- void setEscapeProcessing(boolean enable) throws SQLException;
-
- /**
- * The queryTimeout limit is the number of seconds the driver will
- * wait for a Statement to execute. If the limit is exceeded, a
- * SQLException is thrown.
- *
- * @return the current query timeout limit in seconds; zero means unlimited
- * @exception SQLException if a database-access error occurs.
- */
- int getQueryTimeout() throws SQLException;
-
- /**
- * The queryTimeout limit is the number of seconds the driver will
- * wait for a Statement to execute. If the limit is exceeded, a
- * SQLException is thrown.
- *
- * @param seconds the new query timeout limit in seconds; zero means
- * unlimited
- * @exception SQLException if a database-access error occurs.
- */
- void setQueryTimeout(int seconds) throws SQLException;
-
- /**
- * Cancel can be used by one thread to cancel a statement that
- * is being executed by another thread.
- *
- * @exception SQLException if a database-access error occurs.
- */
- void cancel() throws SQLException;
-
- /**
- * The first warning reported by calls on this Statement is
- * returned. A Statment's execute methods clear its SQLWarning
- * chain. Subsequent Statement warnings will be chained to this
- * SQLWarning.
- *
- * <p>The warning chain is automatically cleared each time
- * a statement is (re)executed.
- *
- * <P><B>Note:</B> If you are processing a ResultSet then any
- * warnings associated with ResultSet reads will be chained on the
- * ResultSet object.
- *
- * @return the first SQLWarning or null
- * @exception SQLException if a database-access error occurs.
- */
- SQLWarning getWarnings() throws SQLException;
-
- /**
- * After this call, getWarnings returns null until a new warning is
- * reported for this Statement.
- *
- * @exception SQLException if a database-access error occurs.
- */
- void clearWarnings() throws SQLException;
-
- /**
- * setCursorname defines the SQL cursor name that will be used by
- * subsequent Statement execute methods. This name can then be
- * used in SQL positioned update/delete statements to identify the
- * current row in the ResultSet generated by this statement. If
- * the database doesn't support positioned update/delete, this
- * method is a noop.
- *
- * <P><B>Note:</B> By definition, positioned update/delete
- * execution must be done by a different Statement than the one
- * which generated the ResultSet being used for positioning. Also,
- * cursor names must be unique within a Connection.
- *
- * @param name the new cursor name.
- * @exception SQLException if a database-access error occurs.
- */
- void setCursorName(String name) throws SQLException;
-
- //----------------------- Multiple Results --------------------------
-
- /**
- * Execute a SQL statement that may return multiple results.
- * Under some (uncommon) situations a single SQL statement may return
- * multiple result sets and/or update counts. Normally you can ignore
- * this, unless you're executing a stored procedure that you know may
- * return multiple results, or unless you're dynamically executing an
- * unknown SQL string. The "execute", "getMoreResults", "getResultSet"
- * and "getUpdateCount" methods let you navigate through multiple results.
- *
- * The "execute" method executes a SQL statement and indicates the
- * form of the first result. You can then use getResultSet or
- * getUpdateCount to retrieve the result, and getMoreResults to
- * move to any subsequent result(s).
- *
- * @param sql any SQL statement
- * @return true if the next result is a ResultSet; false if it is
- * an update count or there are no more results
- * @exception SQLException if a database-access error occurs.
- * @see #getResultSet
- * @see #getUpdateCount
- * @see #getMoreResults
- */
- boolean execute(String sql) throws SQLException;
-
- /**
- * getResultSet returns the current result as a ResultSet. It
- * should only be called once per result.
- *
- * @return the current result as a ResultSet; null if the result
- * is an update count or there are no more results
- * @exception SQLException if a database-access error occurs.
- * @see #execute
- */
- ResultSet getResultSet() throws SQLException;
-
- /**
- * getUpdateCount returns the current result as an update count;
- * if the result is a ResultSet or there are no more results, -1
- * is returned. It should only be called once per result.
- *
- * @return the current result as an update count; -1 if it is a
- * ResultSet or there are no more results
- * @exception SQLException if a database-access error occurs.
- * @see #execute
- */
- int getUpdateCount() throws SQLException;
-
- /**
- * getMoreResults moves to a Statement's next result. It returns true if
- * this result is a ResultSet. getMoreResults also implicitly
- * closes any current ResultSet obtained with getResultSet.
- *
- * There are no more results when (!getMoreResults() &&
- * (getUpdateCount() == -1)
- *
- * @return true if the next result is a ResultSet; false if it is
- * an update count or there are no more results
- * @exception SQLException if a database-access error occurs.
- * @see #execute
- */
- boolean getMoreResults() throws SQLException;
-
-
- //--------------------------JDBC 2.0-----------------------------
-
-
- /**
- * JDBC 2.0
- *
- * Give a hint as to the direction in which the rows in a result set
- * will be processed. The hint applies only to result sets created
- * using this Statement object. The default value is
- * ResultSet.FETCH_FORWARD.
- *
- * @param direction the initial direction for processing rows
- * @exception SQLException if a database-access error occurs or direction
- * is not one of ResultSet.FETCH_FORWARD, ResultSet.FETCH_REVERSE, or
- * ResultSet.FETCH_UNKNOWN
- */
- void setFetchDirection(int direction) throws SQLException;
-
- /**
- * JDBC 2.0
- *
- * Determine the fetch direction.
- *
- * @return the default fetch direction
- * @exception SQLException if a database-access error occurs
- */
- int getFetchDirection() throws SQLException;
-
- /**
- * JDBC 2.0
- *
- * Give the JDBC driver a hint as to the number of rows that should
- * be fetched from the database when more rows are needed. The number
- * of rows specified only affects result sets created using this
- * statement. If the value specified is zero, then the hint is ignored.
- * The default value is zero.
- *
- * @param rows the number of rows to fetch
- * @exception SQLException if a database-access error occurs, or the
- * condition 0 <= rows <= this.getMaxRows() is not satisfied.
- */
- void setFetchSize(int rows) throws SQLException;
-
- /**
- * JDBC 2.0
- *
- * Determine the default fetch size.
- */
- int getFetchSize() throws SQLException;
-
- /**
- * JDBC 2.0
- *
- * Give the JDBC driver a hint as to the number of keys contained in the
- * keyset of a TYPE_KEYSET result set. The number of keys specified only
- * affects result sets created using this statement. If the value
- * specified is zero, then result sets produced by the statement will
- * have a keyset size equal to the size of the result set. The default
- * value is zero.
- *
- * @param rows the number of keys in a keyset
- * @exception SQLException if a database-access error occurs, or the
- * condition this.getFetchSize() <= keys <= this.getMaxRows() is not
- * satisfied.
- */
- void setKeysetSize(int keys) throws SQLException;
-
- /**
- * JDBC 2.0
- *
- * Determine the default keyset size.
- */
- int getKeysetSize() throws SQLException;
-
- /**
- * JDBC 2.0
- *
- * Set the concurrency value to be used for result sets
- * produced by this statement. If no value is set explicitly for
- * a statement, the connection's setting is used.
- *
- * @param value the concurrency value
- * @exception SQLException if a database-access error occurs or
- * value is not one of ResultSet.CONCUR_READ_ONLY, CONCUR_LOCK,
- * CONCUR_VERSION, or CONCUR_VALUE.
- */
- void setResultSetConcurrency(int value) throws SQLException;
-
- /**
- * JDBC 2.0
- *
- * Determine the default concurrency.
- */
- int getResultSetConcurrency() throws SQLException;
-
- /**
- * JDBC 2.0
- *
- * Set the type for result sets produced by this statement. If no
- * value is set explicitly for a statement, the connection's setting
- * is used.
- *
- * @exception SQLException if a database-access error occurs, or
- * type is not one of ResultSet.TYPE_FORWARD_ONLY, etc.
- */
- void setResultSetType(int value) throws SQLException;
-
- /**
- * JDBC 2.0
- *
- * Determine the default result set type.
- */
- int getResultSetType() ;
-
- /**
- * JDBC 2.0
- *
- * Adds a SQL command to the current batch of commmands for the statement.
- * This method is optional.
- *
- * @param sql typically this is a static SQL INSERT or UPDATE statement
- * @exception SQLException if a database-access error occurs, or the
- * driver does not support batch statements
- */
- void addBatch( String sql ) throws SQLException;
-
- /**
- * JDBC 2.0
- *
- * Make the set of commands in the current batch empty.
- * This method is optional.
- *
- * @exception SQLException if a database-access error occurs, or the
- * driver does not support batch statements
- */
- void clearBatch() throws SQLException;
-
- /**
- * JDBC 2.0
- *
- * Submit a batch of commands to the database for execution.
- * This method is optional.
- *
- * @return an array of update counts containing one element for each
- * command in the batch. The array is ordered according
- * to the order in which commands were inserted into the batch
- * @exception SQLException if a database-access error occurs, or the
- * driver does not support batch statements
- */
- int[] executeBatch() throws SQLException;
-
- /**
- * JDBC 2.0
- *
- * Return the Connection that produced the Statement.
- */
- Connection getConnection() throws SQLException;
- }
-