Frames | No Frames |
1: /* Statement.java -- Interface for executing SQL statements. 2: Copyright (C) 1999, 2000, 2002, 2006 Free Software Foundation, Inc. 3: 4: This file is part of GNU Classpath. 5: 6: GNU Classpath is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU Classpath is distributed in the hope that it will be useful, but 12: WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14: General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU Classpath; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 USA. 20: 21: Linking this library statically or dynamically with other modules is 22: making a combined work based on this library. Thus, the terms and 23: conditions of the GNU General Public License cover the whole 24: combination. 25: 26: As a special exception, the copyright holders of this library give you 27: permission to link this library with independent modules to produce an 28: executable, regardless of the license terms of these independent 29: modules, and to copy and distribute the resulting executable under 30: terms of your choice, provided that you also meet, for each linked 31: independent module, the terms and conditions of the license of that 32: module. An independent module is a module which is not derived from 33: or based on this library. If you modify this library, you may extend 34: this exception to your version of the library, but you are not 35: obligated to do so. If you do not wish to do so, delete this 36: exception statement from your version. */ 37: 38: 39: package java.sql; 40: 41: /** 42: * This interface provides a mechanism for executing SQL statements. 43: * 44: * @author Aaron M. Renn (arenn@urbanophile.com) 45: */ 46: public interface Statement 47: extends AutoCloseable 48: { 49: int CLOSE_CURRENT_RESULT = 1; 50: int KEEP_CURRENT_RESULT = 2; 51: int CLOSE_ALL_RESULTS = 3; 52: int SUCCESS_NO_INFO = -2; 53: int EXECUTE_FAILED = -3; 54: int RETURN_GENERATED_KEYS = 1; 55: int NO_GENERATED_KEYS = 2; 56: 57: /** 58: * This method executes the specified SQL SELECT statement and returns a 59: * (possibly empty) <code>ResultSet</code> with the results of the query. 60: * 61: * @param sql The SQL statement to execute. 62: * @return The result set of the SQL statement. 63: * @exception SQLException If an error occurs. 64: */ 65: ResultSet executeQuery(String sql) throws SQLException; 66: 67: /** 68: * This method executes the specified SQL INSERT, UPDATE, or DELETE statement 69: * and returns the number of rows affected, which may be 0. 70: * 71: * @param sql The SQL statement to execute. 72: * @return The number of rows affected by the SQL statement. 73: * @exception SQLException If an error occurs. 74: */ 75: int executeUpdate(String sql) throws SQLException; 76: 77: /** 78: * This method closes the statement and frees any associated resources. 79: * 80: * @exception SQLException If an error occurs. 81: */ 82: void close() throws SQLException; 83: 84: /** 85: * This method returns the maximum length of any column value in bytes. 86: * 87: * @return The maximum length of any column value in bytes. 88: * @exception SQLException If an error occurs. 89: */ 90: int getMaxFieldSize() throws SQLException; 91: 92: /** 93: * This method sets the limit for the maximum length of any column in bytes. 94: * 95: * @param maxSize The new maximum length of any column in bytes. 96: * @exception SQLException If an error occurs. 97: */ 98: void setMaxFieldSize(int maxSize) throws SQLException; 99: 100: /** 101: * This method returns the maximum possible number of rows in a result set. 102: * 103: * @return The maximum possible number of rows in a result set. 104: * @exception SQLException If an error occurs. 105: */ 106: int getMaxRows() throws SQLException; 107: 108: /** 109: * This method sets the maximum number of rows that can be present in a 110: * result set. 111: * 112: * @param maxRows The maximum possible number of rows in a result set. 113: * @exception SQLException If an error occurs. 114: */ 115: void setMaxRows(int maxRows) throws SQLException; 116: 117: /** 118: * This method sets the local escape processing mode on or off. The 119: * default value is on. 120: * 121: * @param escape <code>true</code> to enable local escape processing, 122: * <code>false</code> to disable it. 123: * @exception SQLException If an error occurs. 124: */ 125: void setEscapeProcessing(boolean escape) throws SQLException; 126: 127: /** 128: * The method returns the number of seconds a statement may be in process 129: * before timing out. A value of 0 means there is no timeout. 130: * 131: * @return The SQL statement timeout in seconds. 132: * @exception SQLException If an error occurs. 133: */ 134: int getQueryTimeout() throws SQLException; 135: 136: /** 137: * This method sets the number of seconds a statement may be in process 138: * before timing out. A value of 0 means there is no timeout. 139: * 140: * @param seconds The new SQL statement timeout value. 141: * @exception SQLException If an error occurs. 142: */ 143: void setQueryTimeout(int seconds) throws SQLException; 144: 145: /** 146: * This method cancels an outstanding statement, if the database supports 147: * that operation. 148: * 149: * @exception SQLException If an error occurs. 150: */ 151: void cancel() throws SQLException; 152: 153: /** 154: * This method returns the first SQL warning attached to this statement. 155: * Subsequent warnings will be chained to this one. 156: * 157: * @return The first SQL warning for this statement. 158: * @exception SQLException If an error occurs. 159: */ 160: SQLWarning getWarnings() throws SQLException; 161: 162: /** 163: * This method clears any SQL warnings that have been attached to this 164: * statement. 165: * 166: * @exception SQLException If an error occurs. 167: */ 168: void clearWarnings() throws SQLException; 169: 170: /** 171: * This method sets the cursor name that will be used by the result set. 172: * 173: * @param name The cursor name to use for this statement. 174: * @exception SQLException If an error occurs. 175: */ 176: void setCursorName(String name) throws SQLException; 177: 178: /** 179: * This method executes an arbitrary SQL statement of any time. The 180: * methods <code>getResultSet</code>, <code>getMoreResults</code> and 181: * <code>getUpdateCount</code> retrieve the results. 182: * 183: * @return <code>true</code> if a result set was returned, <code>false</code> 184: * if an update count was returned. 185: * @exception SQLException If an error occurs. 186: */ 187: boolean execute(String sql) throws SQLException; 188: 189: /** 190: * This method returns the result set of the SQL statement that was 191: * executed. This should be called only once per result set returned. 192: * 193: * @return The result set of the query, or <code>null</code> if there was 194: * no result set (for example, if the statement was an UPDATE). 195: * @exception SQLException If an error occurs. 196: * @see #execute(String) 197: * @see #execute(String, int) 198: * @see #execute(String, int[]) 199: * @see #execute(String, String[]) 200: */ 201: ResultSet getResultSet() throws SQLException; 202: 203: /** 204: * This method returns the update count of the SQL statement that was 205: * executed. This should be called only once per executed SQL statement. 206: * 207: * @return The update count of the query, or -1 if there was no update 208: * count (for example, if the statement was a SELECT). 209: * @exception SQLException If an error occurs. 210: * @see #execute(String) 211: * @see #execute(String, int) 212: * @see #execute(String, int[]) 213: * @see #execute(String, String[]) 214: */ 215: int getUpdateCount() throws SQLException; 216: 217: /** 218: * This method advances the result set pointer to the next result set, 219: * which can then be retrieved using <code>getResultSet</code> 220: * 221: * @return <code>true</code> if there is another result set, 222: * <code>false</code> otherwise (for example, the next result is an 223: * update count). 224: * @exception SQLException If an error occurs. 225: * @see #execute(String) 226: * @see #execute(String, int) 227: * @see #execute(String, int[]) 228: * @see #execute(String, String[]) 229: */ 230: boolean getMoreResults() throws SQLException; 231: 232: /** 233: * This method informs the driver which direction the result set will 234: * be accessed in. 235: * 236: * @param direction The direction the result set will be accessed in (?????) 237: * @exception SQLException If an error occurs. 238: */ 239: void setFetchDirection(int direction) throws SQLException; 240: 241: /** 242: * This method returns the current direction that the driver thinks the 243: * result set will be accessed int. 244: * 245: * @return The direction the result set will be accessed in (????) 246: * @exception SQLException If an error occurs. 247: */ 248: int getFetchDirection() throws SQLException; 249: 250: /** 251: * This method informs the driver how many rows it should fetch from the 252: * database at a time. 253: * 254: * @param numRows The number of rows the driver should fetch at a time 255: * to populate the result set. 256: * @exception SQLException If an error occurs. 257: */ 258: void setFetchSize(int numRows) throws SQLException; 259: 260: /** 261: * This method returns the number of rows the driver believes should be 262: * fetched from the database at a time. 263: * 264: * @return The number of rows that will be fetched from the database at a time. 265: * @exception SQLException If an error occurs. 266: */ 267: int getFetchSize() throws SQLException; 268: 269: /** 270: * This method returns the concurrency type of the result set for this 271: * statement. This will be one of the concurrency types defined in 272: * <code>ResultSet</code>. 273: * 274: * @return The concurrency type of the result set for this statement. 275: * @exception SQLException If an error occurs. 276: * @see ResultSet 277: */ 278: int getResultSetConcurrency() throws SQLException; 279: 280: /** 281: * This method returns the result set type for this statement. This will 282: * be one of the result set types defined in <code>ResultSet</code>. 283: * 284: * @return The result set type for this statement. 285: * @exception SQLException If an error occurs. 286: * @see ResultSet 287: */ 288: int getResultSetType() throws SQLException; 289: 290: /** 291: * This method adds a SQL statement to a SQL batch. A driver is not 292: * required to implement this method. 293: * 294: * @param sql The sql statement to add to the batch. 295: * @exception SQLException If an error occurs. 296: */ 297: void addBatch(String sql) throws SQLException; 298: 299: /** 300: * This method clears out any SQL statements that have been populated in 301: * the current batch. A driver is not required to implement this method. 302: * 303: * @exception SQLException If an error occurs. 304: */ 305: void clearBatch() throws SQLException; 306: 307: /** 308: * This method executes the SQL batch and returns an array of update 309: * counts - one for each SQL statement in the batch - ordered in the same 310: * order the statements were added to the batch. A driver is not required 311: * to implement this method. 312: * 313: * @return An array of update counts for this batch. 314: * @exception SQLException If an error occurs. 315: */ 316: int[] executeBatch() throws SQLException; 317: 318: /** 319: * This method returns the <code>Connection</code> instance that was 320: * used to create this object. 321: * 322: * @return The connection used to create this object. 323: * @exception SQLException If an error occurs. 324: */ 325: Connection getConnection() throws SQLException; 326: 327: /** 328: * @since 1.4 329: */ 330: boolean getMoreResults(int current) throws SQLException; 331: 332: /** 333: * @since 1.4 334: */ 335: ResultSet getGeneratedKeys() throws SQLException; 336: 337: /** 338: * @since 1.4 339: */ 340: int executeUpdate(String sql, int autoGeneratedKeys) 341: throws SQLException; 342: 343: /** 344: * @since 1.4 345: */ 346: int executeUpdate(String sql, int[] columnIndexes) 347: throws SQLException; 348: 349: /** 350: * @since 1.4 351: */ 352: int executeUpdate(String sql, String[] columnNames) 353: throws SQLException; 354: 355: /** 356: * @since 1.4 357: */ 358: boolean execute(String sql, int autoGeneratedKeys) 359: throws SQLException; 360: 361: /** 362: * @since 1.4 363: */ 364: boolean execute(String sql, int[] columnIndexes) throws SQLException; 365: 366: /** 367: * @since 1.4 368: */ 369: boolean execute(String sql, String[] columnNames) 370: throws SQLException; 371: 372: /** 373: * @since 1.4 374: */ 375: int getResultSetHoldability() throws SQLException; 376: }