📄 statement.java
字号:
/* * @(#)Statement.java 1.39 03/01/28 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package java.sql;/** * <P>The object used for executing a static SQL statement * and returning the results it produces. * <P> * By default, only one <code>ResultSet</code> object per <code>Statement</code> * object can be open at the same time. Therefore, if the reading of one * <code>ResultSet</code> object is interleaved * with the reading of another, each must have been generated by * different <code>Statement</code> objects. All execution methods in the * <code>Statement</code> interface implicitly close a statment's current * <code>ResultSet</code> object if an open one exists. * * @see Connection#createStatement * @see ResultSet */public interface Statement { /** * Executes the given SQL statement, which returns a single * <code>ResultSet</code> object. * * @param sql an SQL statement to be sent to the database, typically a * static SQL <code>SELECT</code> statement * @return a <code>ResultSet</code> object that contains the data produced * by the given query; never <code>null</code> * @exception SQLException if a database access error occurs or the given * SQL statement produces anything other than a single * <code>ResultSet</code> object */ ResultSet executeQuery(String sql) throws SQLException; /** * Executes the given SQL statement, which may be an <code>INSERT</code>, * <code>UPDATE</code>, or <code>DELETE</code> statement or an * SQL statement that returns nothing, such as an SQL DDL statement. * * @param sql an SQL <code>INSERT</code>, <code>UPDATE</code> or * <code>DELETE</code> statement or an SQL statement that returns nothing * @return either the row count for <code>INSERT</code>, <code>UPDATE</code> * or <code>DELETE</code> statements, or <code>0</code> for SQL statements * that return nothing * @exception SQLException if a database access error occurs or the given * SQL statement produces a <code>ResultSet</code> object */ int executeUpdate(String sql) throws SQLException; /** * Releases this <code>Statement</code> object's database * and JDBC resources immediately instead of waiting for * this to happen when it is automatically closed. * It is generally good practice to release resources as soon as * you are finished with them to avoid tying up database * resources. * <P> * Calling the method <code>close</code> on a <code>Statement</code> * object that is already closed has no effect. * <P> * <B>Note:</B> A <code>Statement</code> object is automatically closed * when it is garbage collected. When a <code>Statement</code> object is * closed, its current <code>ResultSet</code> object, if one exists, is * also closed. * * @exception SQLException if a database access error occurs */ void close() throws SQLException; //---------------------------------------------------------------------- /** * Retrieves the maximum number of bytes that can be * returned for character and binary column values in a <code>ResultSet</code> * object produced by this <code>Statement</code> object. * This limit applies only to <code>BINARY</code>, * <code>VARBINARY</code>, <code>LONGVARBINARY</code>, <code>CHAR</code>, * <code>VARCHAR</code>, and <code>LONGVARCHAR</code> * columns. If the limit is exceeded, the excess data is silently * discarded. * * @return the current column size limit for columns storing character and * binary values; zero means there is no limit * @exception SQLException if a database access error occurs * @see #setMaxFieldSize */ int getMaxFieldSize() throws SQLException; /** * Sets the limit for the maximum number of bytes in a <code>ResultSet</code> * column storing character or binary values to * the given number of bytes. This limit applies * only to <code>BINARY</code>, <code>VARBINARY</code>, * <code>LONGVARBINARY</code>, <code>CHAR</code>, <code>VARCHAR</code>, and * <code>LONGVARCHAR</code> fields. If the limit is exceeded, the excess data * is silently discarded. For maximum portability, use values * greater than 256. * * @param max the new column size limit in bytes; zero means there is no limit * @exception SQLException if a database access error occurs * or the condition max >= 0 is not satisfied * @see #getMaxFieldSize */ void setMaxFieldSize(int max) throws SQLException; /** * Retrieves the maximum number of rows that a * <code>ResultSet</code> object produced by this * <code>Statement</code> object can contain. If this limit is exceeded, * the excess rows are silently dropped. * * @return the current maximum number of rows for a <code>ResultSet</code> * object produced by this <code>Statement</code> object; * zero means there is no limit * @exception SQLException if a database access error occurs * @see #setMaxRows */ int getMaxRows() throws SQLException; /** * Sets the limit for the maximum number of rows that any * <code>ResultSet</code> object can contain to the given number. * If the limit is exceeded, the excess * rows are silently dropped. * * @param max the new max rows limit; zero means there is no limit * @exception SQLException if a database access error occurs * or the condition max >= 0 is not satisfied * @see #getMaxRows */ void setMaxRows(int max) throws SQLException; /** * Sets escape processing on or off. * If escape scanning is on (the default), the driver will do * escape substitution before sending the SQL statement to the database. * * Note: Since prepared statements have usually been parsed prior * to making this call, disabling escape processing for * <code>PreparedStatements</code> objects will have no effect. * * @param enable <code>true</code> to enable escape processing; * <code>false</code> to disable it * @exception SQLException if a database access error occurs */ void setEscapeProcessing(boolean enable) throws SQLException; /** * Retrieves the number of seconds the driver will * wait for a <code>Statement</code> object to execute. If the limit is exceeded, a * <code>SQLException</code> is thrown. * * @return the current query timeout limit in seconds; zero means there is * no limit * @exception SQLException if a database access error occurs * @see #setQueryTimeout */ int getQueryTimeout() throws SQLException; /** * Sets the number of seconds the driver will wait for a * <code>Statement</code> object to execute to the given number of seconds. * If the limit is exceeded, an <code>SQLException</code> is thrown. * * @param seconds the new query timeout limit in seconds; zero means * there is no limit * @exception SQLException if a database access error occurs * or the condition seconds >= 0 is not satisfied * @see #getQueryTimeout */ void setQueryTimeout(int seconds) throws SQLException; /** * Cancels this <code>Statement</code> object if both the DBMS and * driver support aborting an SQL statement. * This method 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; /** * Retrieves the first warning reported by calls on this <code>Statement</code> object. * Subsequent <code>Statement</code> object warnings will be chained to this * <code>SQLWarning</code> object. * * <p>The warning chain is automatically cleared each time * a statement is (re)executed. This method may not be called on a closed * <code>Statement</code> object; doing so will cause an <code>SQLException</code> * to be thrown. * * <P><B>Note:</B> If you are processing a <code>ResultSet</code> object, any * warnings associated with reads on that <code>ResultSet</code> object * will be chained on it rather than on the <code>Statement</code> * object that produced it. * * @return the first <code>SQLWarning</code> object or <code>null</code> * if there are no warnings * @exception SQLException if a database access error occurs or this * method is called on a closed statement */ SQLWarning getWarnings() throws SQLException; /** * Clears all the warnings reported on this <code>Statement</code> * object. After a call to this method, * the method <code>getWarnings</code> will return * <code>null</code> until a new warning is reported for this * <code>Statement</code> object. * * @exception SQLException if a database access error occurs */ void clearWarnings() throws SQLException; /** * Sets the SQL cursor name to the given <code>String</code>, which * will be used by subsequent <code>Statement</code> object * <code>execute</code> methods. This name can then be * used in SQL positioned update or delete statements to identify the * current row in the <code>ResultSet</code> object generated by this * statement. If the database does not support positioned update/delete, * this method is a noop. To insure that a cursor has the proper isolation * level to support updates, the cursor's <code>SELECT</code> statement * should have the form <code>SELECT FOR UPDATE</code>. If * <code>FOR UPDATE</code> is not present, positioned updates may fail. * * <P><B>Note:</B> By definition, the execution of positioned updates and * deletes must be done by a different <code>Statement</code> object than * the one that generated the <code>ResultSet</code> object being used for * positioning. Also, cursor names must be unique within a connection. * * @param name the new cursor name, which must be unique within * a connection * @exception SQLException if a database access error occurs */ void setCursorName(String name) throws SQLException; //----------------------- Multiple Results -------------------------- /** * Executes the given SQL statement, which may return multiple results. * In some (uncommon) situations, a single SQL statement may return * multiple result sets and/or update counts. Normally you can ignore * this unless you are (1) executing a stored procedure that you know may * return multiple results or (2) you are dynamically executing an * unknown SQL string. * <P> * The <code>execute</code> method executes an SQL statement and indicates the * form of the first result. You must then use the methods * <code>getResultSet</code> or <code>getUpdateCount</code> * to retrieve the result, and <code>getMoreResults</code> to * move to any subsequent result(s). * * @param sql any SQL statement * @return <code>true</code> if the first result is a <code>ResultSet</code> * object; <code>false</code> if it is an update count or there are * no results * @exception SQLException if a database access error occurs * @see #getResultSet * @see #getUpdateCount * @see #getMoreResults
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -