1 /* 2 * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package java.sql; 27 28 import java.math.BigDecimal; 29 import java.util.Calendar; 30 import java.io.Reader; 31 import java.io.InputStream; 32 33 /** 34 * A table of data representing a database result set, which 35 * is usually generated by executing a statement that queries the database. 36 * 37 * <P>A <code>ResultSet</code> object maintains a cursor pointing 38 * to its current row of data. Initially the cursor is positioned 39 * before the first row. The <code>next</code> method moves the 40 * cursor to the next row, and because it returns <code>false</code> 41 * when there are no more rows in the <code>ResultSet</code> object, 42 * it can be used in a <code>while</code> loop to iterate through 43 * the result set. 44 * <P> 45 * A default <code>ResultSet</code> object is not updatable and 46 * has a cursor that moves forward only. Thus, you can 47 * iterate through it only once and only from the first row to the 48 * last row. It is possible to 49 * produce <code>ResultSet</code> objects that are scrollable and/or 50 * updatable. The following code fragment, in which <code>con</code> 51 * is a valid <code>Connection</code> object, illustrates how to make 52 * a result set that is scrollable and insensitive to updates by others, and 53 * that is updatable. See <code>ResultSet</code> fields for other 54 * options. 55 * <PRE> 56 * 57 * Statement stmt = con.createStatement( 58 * ResultSet.TYPE_SCROLL_INSENSITIVE, 59 * ResultSet.CONCUR_UPDATABLE); 60 * ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2"); 61 * // rs will be scrollable, will not show changes made by others, 62 * // and will be updatable 63 * 64 * </PRE> 65 * The <code>ResultSet</code> interface provides 66 * <i>getter</i> methods (<code>getBoolean</code>, <code>getLong</code>, and so on) 67 * for retrieving column values from the current row. 68 * Values can be retrieved using either the index number of the 69 * column or the name of the column. In general, using the 70 * column index will be more efficient. Columns are numbered from 1. 71 * For maximum portability, result set columns within each row should be 72 * read in left-to-right order, and each column should be read only once. 73 * 74 * <P>For the getter methods, a JDBC driver attempts 75 * to convert the underlying data to the Java type specified in the 76 * getter method and returns a suitable Java value. The JDBC specification 77 * has a table showing the allowable mappings from SQL types to Java types 78 * that can be used by the <code>ResultSet</code> getter methods. 79 * 80 * <P>Column names used as input to getter methods are case 81 * insensitive. When a getter method is called with 82 * a column name and several columns have the same name, 83 * the value of the first matching column will be returned. 84 * The column name option is 85 * designed to be used when column names are used in the SQL 86 * query that generated the result set. 87 * For columns that are NOT explicitly named in the query, it 88 * is best to use column numbers. If column names are used, the 89 * programmer should take care to guarantee that they uniquely refer to 90 * the intended columns, which can be assured with the SQL <i>AS</i> clause. 91 * <P> 92 * A set of updater methods were added to this interface 93 * in the JDBC 2.0 API (Java™ 2 SDK, 94 * Standard Edition, version 1.2). The comments regarding parameters 95 * to the getter methods also apply to parameters to the 96 * updater methods. 97 *<P> 98 * The updater methods may be used in two ways: 99 * <ol> 100 * <LI>to update a column value in the current row. In a scrollable 101 * <code>ResultSet</code> object, the cursor can be moved backwards 102 * and forwards, to an absolute position, or to a position 103 * relative to the current row. 104 * The following code fragment updates the <code>NAME</code> column 105 * in the fifth row of the <code>ResultSet</code> object 106 * <code>rs</code> and then uses the method <code>updateRow</code> 107 * to update the data source table from which <code>rs</code> was derived. 108 * <PRE> 109 * 110 * rs.absolute(5); // moves the cursor to the fifth row of rs 111 * rs.updateString("NAME", "AINSWORTH"); // updates the 112 * // <code>NAME</code> column of row 5 to be <code>AINSWORTH</code> 113 * rs.updateRow(); // updates the row in the data source 114 * 115 * </PRE> 116 * <LI>to insert column values into the insert row. An updatable 117 * <code>ResultSet</code> object has a special row associated with 118 * it that serves as a staging area for building a row to be inserted. 119 * The following code fragment moves the cursor to the insert row, builds 120 * a three-column row, and inserts it into <code>rs</code> and into 121 * the data source table using the method <code>insertRow</code>. 122 * <PRE> 123 * 124 * rs.moveToInsertRow(); // moves cursor to the insert row 125 * rs.updateString(1, "AINSWORTH"); // updates the 126 * // first column of the insert row to be <code>AINSWORTH</code> 127 * rs.updateInt(2,35); // updates the second column to be <code>35</code> 128 * rs.updateBoolean(3, true); // updates the third column to <code>true</code> 129 * rs.insertRow(); 130 * rs.moveToCurrentRow(); 131 * 132 * </PRE> 133 * </ol> 134 * <P>A <code>ResultSet</code> object is automatically closed when the 135 * <code>Statement</code> object that 136 * generated it is closed, re-executed, or used 137 * to retrieve the next result from a sequence of multiple results. 138 * 139 * <P>The number, types and properties of a <code>ResultSet</code> 140 * object's columns are provided by the <code>ResultSetMetaData</code> 141 * object returned by the <code>ResultSet.getMetaData</code> method. 142 * 143 * @see Statement#executeQuery 144 * @see Statement#getResultSet 145 * @see ResultSetMetaData 146 * @since 1.1 147 */ 148 149 public interface ResultSet extends Wrapper, AutoCloseable { 150 151 /** 152 * Moves the cursor forward one row from its current position. 153 * A <code>ResultSet</code> cursor is initially positioned 154 * before the first row; the first call to the method 155 * <code>next</code> makes the first row the current row; the 156 * second call makes the second row the current row, and so on. 157 * <p> 158 * When a call to the <code>next</code> method returns <code>false</code>, 159 * the cursor is positioned after the last row. Any 160 * invocation of a <code>ResultSet</code> method which requires a 161 * current row will result in a <code>SQLException</code> being thrown. 162 * If the result set type is <code>TYPE_FORWARD_ONLY</code>, it is vendor specified 163 * whether their JDBC driver implementation will return <code>false</code> or 164 * throw an <code>SQLException</code> on a 165 * subsequent call to <code>next</code>. 166 * 167 * <P>If an input stream is open for the current row, a call 168 * to the method <code>next</code> will 169 * implicitly close it. A <code>ResultSet</code> object's 170 * warning chain is cleared when a new row is read. 171 * 172 * @return <code>true</code> if the new current row is valid; 173 * <code>false</code> if there are no more rows 174 * @exception SQLException if a database access error occurs or this method is 175 * called on a closed result set 176 */ next()177 boolean next() throws SQLException; 178 179 180 /** 181 * Releases this <code>ResultSet</code> object's database and 182 * JDBC resources immediately instead of waiting for 183 * this to happen when it is automatically closed. 184 * 185 * <P>The closing of a <code>ResultSet</code> object does <strong>not</strong> close the <code>Blob</code>, 186 * <code>Clob</code> or <code>NClob</code> objects created by the <code>ResultSet</code>. <code>Blob</code>, 187 * <code>Clob</code> or <code>NClob</code> objects remain valid for at least the duration of the 188 * transaction in which they are created, unless their <code>free</code> method is invoked. 189 *<p> 190 * When a <code>ResultSet</code> is closed, any <code>ResultSetMetaData</code> 191 * instances that were created by calling the <code>getMetaData</code> 192 * method remain accessible. 193 * 194 * <P><B>Note:</B> A <code>ResultSet</code> object 195 * is automatically closed by the 196 * <code>Statement</code> object that generated it when 197 * that <code>Statement</code> object is closed, 198 * re-executed, or is used to retrieve the next result from a 199 * sequence of multiple results. 200 *<p> 201 * Calling the method <code>close</code> on a <code>ResultSet</code> 202 * object that is already closed is a no-op. 203 * 204 * 205 * @exception SQLException if a database access error occurs 206 */ close()207 void close() throws SQLException; 208 209 /** 210 * Reports whether 211 * the last column read had a value of SQL <code>NULL</code>. 212 * Note that you must first call one of the getter methods 213 * on a column to try to read its value and then call 214 * the method <code>wasNull</code> to see if the value read was 215 * SQL <code>NULL</code>. 216 * 217 * @return <code>true</code> if the last column value read was SQL 218 * <code>NULL</code> and <code>false</code> otherwise 219 * @exception SQLException if a database access error occurs or this method is 220 * called on a closed result set 221 */ wasNull()222 boolean wasNull() throws SQLException; 223 224 // Methods for accessing results by column index 225 226 /** 227 * Retrieves the value of the designated column in the current row 228 * of this <code>ResultSet</code> object as 229 * a <code>String</code> in the Java programming language. 230 * 231 * @param columnIndex the first column is 1, the second is 2, ... 232 * @return the column value; if the value is SQL <code>NULL</code>, the 233 * value returned is <code>null</code> 234 * @exception SQLException if the columnIndex is not valid; 235 * if a database access error occurs or this method is 236 * called on a closed result set 237 */ getString(int columnIndex)238 String getString(int columnIndex) throws SQLException; 239 240 /** 241 * Retrieves the value of the designated column in the current row 242 * of this <code>ResultSet</code> object as 243 * a <code>boolean</code> in the Java programming language. 244 * 245 * <P>If the designated column has a datatype of CHAR or VARCHAR 246 * and contains a "0" or has a datatype of BIT, TINYINT, SMALLINT, INTEGER or BIGINT 247 * and contains a 0, a value of <code>false</code> is returned. If the designated column has a datatype 248 * of CHAR or VARCHAR 249 * and contains a "1" or has a datatype of BIT, TINYINT, SMALLINT, INTEGER or BIGINT 250 * and contains a 1, a value of <code>true</code> is returned. 251 * 252 * @param columnIndex the first column is 1, the second is 2, ... 253 * @return the column value; if the value is SQL <code>NULL</code>, the 254 * value returned is <code>false</code> 255 * @exception SQLException if the columnIndex is not valid; 256 * if a database access error occurs or this method is 257 * called on a closed result set 258 */ getBoolean(int columnIndex)259 boolean getBoolean(int columnIndex) throws SQLException; 260 261 /** 262 * Retrieves the value of the designated column in the current row 263 * of this <code>ResultSet</code> object as 264 * a <code>byte</code> in the Java programming language. 265 * 266 * @param columnIndex the first column is 1, the second is 2, ... 267 * @return the column value; if the value is SQL <code>NULL</code>, the 268 * value returned is <code>0</code> 269 * @exception SQLException if the columnIndex is not valid; 270 * if a database access error occurs or this method is 271 * called on a closed result set 272 */ getByte(int columnIndex)273 byte getByte(int columnIndex) throws SQLException; 274 275 /** 276 * Retrieves the value of the designated column in the current row 277 * of this <code>ResultSet</code> object as 278 * a <code>short</code> in the Java programming language. 279 * 280 * @param columnIndex the first column is 1, the second is 2, ... 281 * @return the column value; if the value is SQL <code>NULL</code>, the 282 * value returned is <code>0</code> 283 * @exception SQLException if the columnIndex is not valid; 284 * if a database access error occurs or this method is 285 * called on a closed result set 286 */ getShort(int columnIndex)287 short getShort(int columnIndex) throws SQLException; 288 289 /** 290 * Retrieves the value of the designated column in the current row 291 * of this <code>ResultSet</code> object as 292 * an <code>int</code> in the Java programming language. 293 * 294 * @param columnIndex the first column is 1, the second is 2, ... 295 * @return the column value; if the value is SQL <code>NULL</code>, the 296 * value returned is <code>0</code> 297 * @exception SQLException if the columnIndex is not valid; 298 * if a database access error occurs or this method is 299 * called on a closed result set 300 */ getInt(int columnIndex)301 int getInt(int columnIndex) throws SQLException; 302 303 /** 304 * Retrieves the value of the designated column in the current row 305 * of this <code>ResultSet</code> object as 306 * a <code>long</code> in the Java programming language. 307 * 308 * @param columnIndex the first column is 1, the second is 2, ... 309 * @return the column value; if the value is SQL <code>NULL</code>, the 310 * value returned is <code>0</code> 311 * @exception SQLException if the columnIndex is not valid; 312 * if a database access error occurs or this method is 313 * called on a closed result set 314 */ getLong(int columnIndex)315 long getLong(int columnIndex) throws SQLException; 316 317 /** 318 * Retrieves the value of the designated column in the current row 319 * of this <code>ResultSet</code> object as 320 * a <code>float</code> in the Java programming language. 321 * 322 * @param columnIndex the first column is 1, the second is 2, ... 323 * @return the column value; if the value is SQL <code>NULL</code>, the 324 * value returned is <code>0</code> 325 * @exception SQLException if the columnIndex is not valid; 326 * if a database access error occurs or this method is 327 * called on a closed result set 328 */ getFloat(int columnIndex)329 float getFloat(int columnIndex) throws SQLException; 330 331 /** 332 * Retrieves the value of the designated column in the current row 333 * of this <code>ResultSet</code> object as 334 * a <code>double</code> in the Java programming language. 335 * 336 * @param columnIndex the first column is 1, the second is 2, ... 337 * @return the column value; if the value is SQL <code>NULL</code>, the 338 * value returned is <code>0</code> 339 * @exception SQLException if the columnIndex is not valid; 340 * if a database access error occurs or this method is 341 * called on a closed result set 342 */ getDouble(int columnIndex)343 double getDouble(int columnIndex) throws SQLException; 344 345 /** 346 * Retrieves the value of the designated column in the current row 347 * of this <code>ResultSet</code> object as 348 * a <code>java.sql.BigDecimal</code> in the Java programming language. 349 * 350 * @param columnIndex the first column is 1, the second is 2, ... 351 * @param scale the number of digits to the right of the decimal point 352 * @return the column value; if the value is SQL <code>NULL</code>, the 353 * value returned is <code>null</code> 354 * @exception SQLException if the columnIndex is not valid; 355 * if a database access error occurs or this method is 356 * called on a closed result set 357 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 358 * this method 359 * @deprecated Use {@code getBigDecimal(int columnIndex)} 360 * or {@code getBigDecimal(String columnLabel)} 361 */ 362 @Deprecated(since="1.2") getBigDecimal(int columnIndex, int scale)363 BigDecimal getBigDecimal(int columnIndex, int scale) throws SQLException; 364 365 /** 366 * Retrieves the value of the designated column in the current row 367 * of this <code>ResultSet</code> object as 368 * a <code>byte</code> array in the Java programming language. 369 * The bytes represent the raw values returned by the driver. 370 * 371 * @param columnIndex the first column is 1, the second is 2, ... 372 * @return the column value; if the value is SQL <code>NULL</code>, the 373 * value returned is <code>null</code> 374 * @exception SQLException if the columnIndex is not valid; 375 * if a database access error occurs or this method is 376 * called on a closed result set 377 */ getBytes(int columnIndex)378 byte[] getBytes(int columnIndex) throws SQLException; 379 380 /** 381 * Retrieves the value of the designated column in the current row 382 * of this <code>ResultSet</code> object as 383 * a <code>java.sql.Date</code> object in the Java programming language. 384 * 385 * @param columnIndex the first column is 1, the second is 2, ... 386 * @return the column value; if the value is SQL <code>NULL</code>, the 387 * value returned is <code>null</code> 388 * @exception SQLException if the columnIndex is not valid; 389 * if a database access error occurs or this method is 390 * called on a closed result set 391 */ getDate(int columnIndex)392 java.sql.Date getDate(int columnIndex) throws SQLException; 393 394 /** 395 * Retrieves the value of the designated column in the current row 396 * of this <code>ResultSet</code> object as 397 * a <code>java.sql.Time</code> object in the Java programming language. 398 * 399 * @param columnIndex the first column is 1, the second is 2, ... 400 * @return the column value; if the value is SQL <code>NULL</code>, the 401 * value returned is <code>null</code> 402 * @exception SQLException if the columnIndex is not valid; 403 * if a database access error occurs or this method is 404 * called on a closed result set 405 */ getTime(int columnIndex)406 java.sql.Time getTime(int columnIndex) throws SQLException; 407 408 /** 409 * Retrieves the value of the designated column in the current row 410 * of this <code>ResultSet</code> object as 411 * a <code>java.sql.Timestamp</code> object in the Java programming language. 412 * 413 * @param columnIndex the first column is 1, the second is 2, ... 414 * @return the column value; if the value is SQL <code>NULL</code>, the 415 * value returned is <code>null</code> 416 * @exception SQLException if the columnIndex is not valid; 417 * if a database access error occurs or this method is 418 * called on a closed result set 419 */ getTimestamp(int columnIndex)420 java.sql.Timestamp getTimestamp(int columnIndex) throws SQLException; 421 422 /** 423 * Retrieves the value of the designated column in the current row 424 * of this <code>ResultSet</code> object as 425 * a stream of ASCII characters. The value can then be read in chunks from the 426 * stream. This method is particularly 427 * suitable for retrieving large <code>LONGVARCHAR</code> values. 428 * The JDBC driver will 429 * do any necessary conversion from the database format into ASCII. 430 * 431 * <P><B>Note:</B> All the data in the returned stream must be 432 * read prior to getting the value of any other column. The next 433 * call to a getter method implicitly closes the stream. Also, a 434 * stream may return <code>0</code> when the method 435 * <code>InputStream.available</code> 436 * is called whether there is data available or not. 437 * 438 * @param columnIndex the first column is 1, the second is 2, ... 439 * @return a Java input stream that delivers the database column value 440 * as a stream of one-byte ASCII characters; 441 * if the value is SQL <code>NULL</code>, the 442 * value returned is <code>null</code> 443 * @exception SQLException if the columnIndex is not valid; 444 * if a database access error occurs or this method is 445 * called on a closed result set 446 */ getAsciiStream(int columnIndex)447 java.io.InputStream getAsciiStream(int columnIndex) throws SQLException; 448 449 /** 450 * Retrieves the value of the designated column in the current row 451 * of this <code>ResultSet</code> object as 452 * as a stream of two-byte 3 characters. The first byte is 453 * the high byte; the second byte is the low byte. 454 * 455 * The value can then be read in chunks from the 456 * stream. This method is particularly 457 * suitable for retrieving large <code>LONGVARCHAR</code>values. The 458 * JDBC driver will do any necessary conversion from the database 459 * format into Unicode. 460 * 461 * <P><B>Note:</B> All the data in the returned stream must be 462 * read prior to getting the value of any other column. The next 463 * call to a getter method implicitly closes the stream. 464 * Also, a stream may return <code>0</code> when the method 465 * <code>InputStream.available</code> 466 * is called, whether there is data available or not. 467 * 468 * @param columnIndex the first column is 1, the second is 2, ... 469 * @return a Java input stream that delivers the database column value 470 * as a stream of two-byte Unicode characters; 471 * if the value is SQL <code>NULL</code>, the value returned is 472 * <code>null</code> 473 * 474 * @exception SQLException if the columnIndex is not valid; 475 * if a database access error occurs or this method is 476 * called on a closed result set 477 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 478 * this method 479 * @deprecated use <code>getCharacterStream</code> in place of 480 * <code>getUnicodeStream</code> 481 */ 482 @Deprecated(since="1.2") getUnicodeStream(int columnIndex)483 java.io.InputStream getUnicodeStream(int columnIndex) throws SQLException; 484 485 /** 486 * Retrieves the value of the designated column in the current row 487 * of this <code>ResultSet</code> object as a stream of 488 * uninterpreted bytes. The value can then be read in chunks from the 489 * stream. This method is particularly 490 * suitable for retrieving large <code>LONGVARBINARY</code> values. 491 * 492 * <P><B>Note:</B> All the data in the returned stream must be 493 * read prior to getting the value of any other column. The next 494 * call to a getter method implicitly closes the stream. Also, a 495 * stream may return <code>0</code> when the method 496 * <code>InputStream.available</code> 497 * is called whether there is data available or not. 498 * 499 * @param columnIndex the first column is 1, the second is 2, ... 500 * @return a Java input stream that delivers the database column value 501 * as a stream of uninterpreted bytes; 502 * if the value is SQL <code>NULL</code>, the value returned is 503 * <code>null</code> 504 * @exception SQLException if the columnIndex is not valid; 505 * if a database access error occurs or this method is 506 * called on a closed result set 507 */ getBinaryStream(int columnIndex)508 java.io.InputStream getBinaryStream(int columnIndex) 509 throws SQLException; 510 511 512 // Methods for accessing results by column label 513 514 /** 515 * Retrieves the value of the designated column in the current row 516 * of this <code>ResultSet</code> object as 517 * a <code>String</code> in the Java programming language. 518 * 519 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 520 * @return the column value; if the value is SQL <code>NULL</code>, the 521 * value returned is <code>null</code> 522 * @exception SQLException if the columnLabel is not valid; 523 * if a database access error occurs or this method is 524 * called on a closed result set 525 */ getString(String columnLabel)526 String getString(String columnLabel) throws SQLException; 527 528 /** 529 * Retrieves the value of the designated column in the current row 530 * of this <code>ResultSet</code> object as 531 * a <code>boolean</code> in the Java programming language. 532 * 533 * <P>If the designated column has a datatype of CHAR or VARCHAR 534 * and contains a "0" or has a datatype of BIT, TINYINT, SMALLINT, INTEGER or BIGINT 535 * and contains a 0, a value of <code>false</code> is returned. If the designated column has a datatype 536 * of CHAR or VARCHAR 537 * and contains a "1" or has a datatype of BIT, TINYINT, SMALLINT, INTEGER or BIGINT 538 * and contains a 1, a value of <code>true</code> is returned. 539 * 540 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 541 * @return the column value; if the value is SQL <code>NULL</code>, the 542 * value returned is <code>false</code> 543 * @exception SQLException if the columnLabel is not valid; 544 * if a database access error occurs or this method is 545 * called on a closed result set 546 */ getBoolean(String columnLabel)547 boolean getBoolean(String columnLabel) throws SQLException; 548 549 /** 550 * Retrieves the value of the designated column in the current row 551 * of this <code>ResultSet</code> object as 552 * a <code>byte</code> in the Java programming language. 553 * 554 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 555 * @return the column value; if the value is SQL <code>NULL</code>, the 556 * value returned is <code>0</code> 557 * @exception SQLException if the columnLabel is not valid; 558 * if a database access error occurs or this method is 559 * called on a closed result set 560 */ getByte(String columnLabel)561 byte getByte(String columnLabel) throws SQLException; 562 563 /** 564 * Retrieves the value of the designated column in the current row 565 * of this <code>ResultSet</code> object as 566 * a <code>short</code> in the Java programming language. 567 * 568 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 569 * @return the column value; if the value is SQL <code>NULL</code>, the 570 * value returned is <code>0</code> 571 * @exception SQLException if the columnLabel is not valid; 572 * if a database access error occurs or this method is 573 * called on a closed result set 574 */ getShort(String columnLabel)575 short getShort(String columnLabel) throws SQLException; 576 577 /** 578 * Retrieves the value of the designated column in the current row 579 * of this <code>ResultSet</code> object as 580 * an <code>int</code> in the Java programming language. 581 * 582 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 583 * @return the column value; if the value is SQL <code>NULL</code>, the 584 * value returned is <code>0</code> 585 * @exception SQLException if the columnLabel is not valid; 586 * if a database access error occurs or this method is 587 * called on a closed result set 588 */ getInt(String columnLabel)589 int getInt(String columnLabel) throws SQLException; 590 591 /** 592 * Retrieves the value of the designated column in the current row 593 * of this <code>ResultSet</code> object as 594 * a <code>long</code> in the Java programming language. 595 * 596 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 597 * @return the column value; if the value is SQL <code>NULL</code>, the 598 * value returned is <code>0</code> 599 * @exception SQLException if the columnLabel is not valid; 600 * if a database access error occurs or this method is 601 * called on a closed result set 602 */ getLong(String columnLabel)603 long getLong(String columnLabel) throws SQLException; 604 605 /** 606 * Retrieves the value of the designated column in the current row 607 * of this <code>ResultSet</code> object as 608 * a <code>float</code> in the Java programming language. 609 * 610 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 611 * @return the column value; if the value is SQL <code>NULL</code>, the 612 * value returned is <code>0</code> 613 * @exception SQLException if the columnLabel is not valid; 614 * if a database access error occurs or this method is 615 * called on a closed result set 616 */ getFloat(String columnLabel)617 float getFloat(String columnLabel) throws SQLException; 618 619 /** 620 * Retrieves the value of the designated column in the current row 621 * of this <code>ResultSet</code> object as 622 * a <code>double</code> in the Java programming language. 623 * 624 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 625 * @return the column value; if the value is SQL <code>NULL</code>, the 626 * value returned is <code>0</code> 627 * @exception SQLException if the columnLabel is not valid; 628 * if a database access error occurs or this method is 629 * called on a closed result set 630 */ getDouble(String columnLabel)631 double getDouble(String columnLabel) throws SQLException; 632 633 /** 634 * Retrieves the value of the designated column in the current row 635 * of this <code>ResultSet</code> object as 636 * a <code>java.math.BigDecimal</code> in the Java programming language. 637 * 638 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 639 * @param scale the number of digits to the right of the decimal point 640 * @return the column value; if the value is SQL <code>NULL</code>, the 641 * value returned is <code>null</code> 642 * @exception SQLException if the columnLabel is not valid; 643 * if a database access error occurs or this method is 644 * called on a closed result set 645 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 646 * this method 647 * @deprecated Use {@code getBigDecimal(int columnIndex)} 648 * or {@code getBigDecimal(String columnLabel)} 649 */ 650 @Deprecated(since="1.2") getBigDecimal(String columnLabel, int scale)651 BigDecimal getBigDecimal(String columnLabel, int scale) throws SQLException; 652 653 /** 654 * Retrieves the value of the designated column in the current row 655 * of this <code>ResultSet</code> object as 656 * a <code>byte</code> array in the Java programming language. 657 * The bytes represent the raw values returned by the driver. 658 * 659 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 660 * @return the column value; if the value is SQL <code>NULL</code>, the 661 * value returned is <code>null</code> 662 * @exception SQLException if the columnLabel is not valid; 663 * if a database access error occurs or this method is 664 * called on a closed result set 665 */ getBytes(String columnLabel)666 byte[] getBytes(String columnLabel) throws SQLException; 667 668 /** 669 * Retrieves the value of the designated column in the current row 670 * of this <code>ResultSet</code> object as 671 * a <code>java.sql.Date</code> object in the Java programming language. 672 * 673 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 674 * @return the column value; if the value is SQL <code>NULL</code>, the 675 * value returned is <code>null</code> 676 * @exception SQLException if the columnLabel is not valid; 677 * if a database access error occurs or this method is 678 * called on a closed result set 679 */ getDate(String columnLabel)680 java.sql.Date getDate(String columnLabel) throws SQLException; 681 682 /** 683 * Retrieves the value of the designated column in the current row 684 * of this <code>ResultSet</code> object as 685 * a <code>java.sql.Time</code> object in the Java programming language. 686 * 687 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 688 * @return the column value; 689 * if the value is SQL <code>NULL</code>, 690 * the value returned is <code>null</code> 691 * @exception SQLException if the columnLabel is not valid; 692 * if a database access error occurs or this method is 693 * called on a closed result set 694 */ getTime(String columnLabel)695 java.sql.Time getTime(String columnLabel) throws SQLException; 696 697 /** 698 * Retrieves the value of the designated column in the current row 699 * of this <code>ResultSet</code> object as 700 * a <code>java.sql.Timestamp</code> object in the Java programming language. 701 * 702 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 703 * @return the column value; if the value is SQL <code>NULL</code>, the 704 * value returned is <code>null</code> 705 * @exception SQLException if the columnLabel is not valid; 706 * if a database access error occurs or this method is 707 * called on a closed result set 708 */ getTimestamp(String columnLabel)709 java.sql.Timestamp getTimestamp(String columnLabel) throws SQLException; 710 711 /** 712 * Retrieves the value of the designated column in the current row 713 * of this <code>ResultSet</code> object as a stream of 714 * ASCII characters. The value can then be read in chunks from the 715 * stream. This method is particularly 716 * suitable for retrieving large <code>LONGVARCHAR</code> values. 717 * The JDBC driver will 718 * do any necessary conversion from the database format into ASCII. 719 * 720 * <P><B>Note:</B> All the data in the returned stream must be 721 * read prior to getting the value of any other column. The next 722 * call to a getter method implicitly closes the stream. Also, a 723 * stream may return <code>0</code> when the method <code>available</code> 724 * is called whether there is data available or not. 725 * 726 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 727 * @return a Java input stream that delivers the database column value 728 * as a stream of one-byte ASCII characters. 729 * If the value is SQL <code>NULL</code>, 730 * the value returned is <code>null</code>. 731 * @exception SQLException if the columnLabel is not valid; 732 * if a database access error occurs or this method is 733 * called on a closed result set 734 */ getAsciiStream(String columnLabel)735 java.io.InputStream getAsciiStream(String columnLabel) throws SQLException; 736 737 /** 738 * Retrieves the value of the designated column in the current row 739 * of this <code>ResultSet</code> object as a stream of two-byte 740 * Unicode characters. The first byte is the high byte; the second 741 * byte is the low byte. 742 * 743 * The value can then be read in chunks from the 744 * stream. This method is particularly 745 * suitable for retrieving large <code>LONGVARCHAR</code> values. 746 * The JDBC technology-enabled driver will 747 * do any necessary conversion from the database format into Unicode. 748 * 749 * <P><B>Note:</B> All the data in the returned stream must be 750 * read prior to getting the value of any other column. The next 751 * call to a getter method implicitly closes the stream. 752 * Also, a stream may return <code>0</code> when the method 753 * <code>InputStream.available</code> is called, whether there 754 * is data available or not. 755 * 756 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 757 * @return a Java input stream that delivers the database column value 758 * as a stream of two-byte Unicode characters. 759 * If the value is SQL <code>NULL</code>, the value returned 760 * is <code>null</code>. 761 * @exception SQLException if the columnLabel is not valid; 762 * if a database access error occurs or this method is 763 * called on a closed result set 764 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 765 * this method 766 * @deprecated use <code>getCharacterStream</code> instead 767 */ 768 @Deprecated(since="1.2") getUnicodeStream(String columnLabel)769 java.io.InputStream getUnicodeStream(String columnLabel) throws SQLException; 770 771 /** 772 * Retrieves the value of the designated column in the current row 773 * of this <code>ResultSet</code> object as a stream of uninterpreted 774 * <code>byte</code>s. 775 * The value can then be read in chunks from the 776 * stream. This method is particularly 777 * suitable for retrieving large <code>LONGVARBINARY</code> 778 * values. 779 * 780 * <P><B>Note:</B> All the data in the returned stream must be 781 * read prior to getting the value of any other column. The next 782 * call to a getter method implicitly closes the stream. Also, a 783 * stream may return <code>0</code> when the method <code>available</code> 784 * is called whether there is data available or not. 785 * 786 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 787 * @return a Java input stream that delivers the database column value 788 * as a stream of uninterpreted bytes; 789 * if the value is SQL <code>NULL</code>, the result is <code>null</code> 790 * @exception SQLException if the columnLabel is not valid; 791 * if a database access error occurs or this method is 792 * called on a closed result set 793 */ getBinaryStream(String columnLabel)794 java.io.InputStream getBinaryStream(String columnLabel) 795 throws SQLException; 796 797 798 // Advanced features: 799 800 /** 801 * Retrieves the first warning reported by calls on this 802 * <code>ResultSet</code> object. 803 * Subsequent warnings on this <code>ResultSet</code> object 804 * will be chained to the <code>SQLWarning</code> object that 805 * this method returns. 806 * 807 * <P>The warning chain is automatically cleared each time a new 808 * row is read. This method may not be called on a <code>ResultSet</code> 809 * object that has been closed; doing so will cause an 810 * <code>SQLException</code> to be thrown. 811 * <P> 812 * <B>Note:</B> This warning chain only covers warnings caused 813 * by <code>ResultSet</code> methods. Any warning caused by 814 * <code>Statement</code> methods 815 * (such as reading OUT parameters) will be chained on the 816 * <code>Statement</code> object. 817 * 818 * @return the first <code>SQLWarning</code> object reported or 819 * <code>null</code> if there are none 820 * @exception SQLException if a database access error occurs or this method is 821 * called on a closed result set 822 */ getWarnings()823 SQLWarning getWarnings() throws SQLException; 824 825 /** 826 * Clears all warnings reported on this <code>ResultSet</code> object. 827 * After this method is called, the method <code>getWarnings</code> 828 * returns <code>null</code> until a new warning is 829 * reported for this <code>ResultSet</code> object. 830 * 831 * @exception SQLException if a database access error occurs or this method is 832 * called on a closed result set 833 */ clearWarnings()834 void clearWarnings() throws SQLException; 835 836 /** 837 * Retrieves the name of the SQL cursor used by this <code>ResultSet</code> 838 * object. 839 * 840 * <P>In SQL, a result table is retrieved through a cursor that is 841 * named. The current row of a result set can be updated or deleted 842 * using a positioned update/delete statement that references the 843 * cursor name. To insure that the cursor has the proper isolation 844 * level to support update, the cursor's <code>SELECT</code> statement 845 * should be of the form <code>SELECT FOR UPDATE</code>. If 846 * <code>FOR UPDATE</code> is omitted, the positioned updates may fail. 847 * 848 * <P>The JDBC API supports this SQL feature by providing the name of the 849 * SQL cursor used by a <code>ResultSet</code> object. 850 * The current row of a <code>ResultSet</code> object 851 * is also the current row of this SQL cursor. 852 * 853 * @return the SQL name for this <code>ResultSet</code> object's cursor 854 * @exception SQLException if a database access error occurs or this method is called on a closed result set 855 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 856 * this method 857 */ getCursorName()858 String getCursorName() throws SQLException; 859 860 /** 861 * Retrieves the number, types and properties of 862 * this <code>ResultSet</code> object's columns. 863 * 864 * @return the description of this <code>ResultSet</code> object's columns 865 * @exception SQLException if a database access error occurs or this method is 866 * called on a closed result set 867 */ getMetaData()868 ResultSetMetaData getMetaData() throws SQLException; 869 870 /** 871 * <p>Gets the value of the designated column in the current row 872 * of this <code>ResultSet</code> object as 873 * an <code>Object</code> in the Java programming language. 874 * 875 * <p>This method will return the value of the given column as a 876 * Java object. The type of the Java object will be the default 877 * Java object type corresponding to the column's SQL type, 878 * following the mapping for built-in types specified in the JDBC 879 * specification. If the value is an SQL <code>NULL</code>, 880 * the driver returns a Java <code>null</code>. 881 * 882 * <p>This method may also be used to read database-specific 883 * abstract data types. 884 * 885 * In the JDBC 2.0 API, the behavior of method 886 * <code>getObject</code> is extended to materialize 887 * data of SQL user-defined types. 888 * <p> 889 * If <code>Connection.getTypeMap</code> does not throw a 890 * <code>SQLFeatureNotSupportedException</code>, 891 * then when a column contains a structured or distinct value, 892 * the behavior of this method is as 893 * if it were a call to: <code>getObject(columnIndex, 894 * this.getStatement().getConnection().getTypeMap())</code>. 895 * 896 * If <code>Connection.getTypeMap</code> does throw a 897 * <code>SQLFeatureNotSupportedException</code>, 898 * then structured values are not supported, and distinct values 899 * are mapped to the default Java class as determined by the 900 * underlying SQL type of the DISTINCT type. 901 * 902 * @param columnIndex the first column is 1, the second is 2, ... 903 * @return a <code>java.lang.Object</code> holding the column value 904 * @exception SQLException if the columnIndex is not valid; 905 * if a database access error occurs or this method is 906 * called on a closed result set 907 */ getObject(int columnIndex)908 Object getObject(int columnIndex) throws SQLException; 909 910 /** 911 * <p>Gets the value of the designated column in the current row 912 * of this <code>ResultSet</code> object as 913 * an <code>Object</code> in the Java programming language. 914 * 915 * <p>This method will return the value of the given column as a 916 * Java object. The type of the Java object will be the default 917 * Java object type corresponding to the column's SQL type, 918 * following the mapping for built-in types specified in the JDBC 919 * specification. If the value is an SQL <code>NULL</code>, 920 * the driver returns a Java <code>null</code>. 921 * <P> 922 * This method may also be used to read database-specific 923 * abstract data types. 924 * <P> 925 * In the JDBC 2.0 API, the behavior of the method 926 * <code>getObject</code> is extended to materialize 927 * data of SQL user-defined types. When a column contains 928 * a structured or distinct value, the behavior of this method is as 929 * if it were a call to: <code>getObject(columnIndex, 930 * this.getStatement().getConnection().getTypeMap())</code>. 931 * 932 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 933 * @return a <code>java.lang.Object</code> holding the column value 934 * @exception SQLException if the columnLabel is not valid; 935 * if a database access error occurs or this method is 936 * called on a closed result set 937 */ getObject(String columnLabel)938 Object getObject(String columnLabel) throws SQLException; 939 940 //---------------------------------------------------------------- 941 942 /** 943 * Maps the given <code>ResultSet</code> column label to its 944 * <code>ResultSet</code> column index. 945 * 946 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 947 * @return the column index of the given column name 948 * @exception SQLException if the <code>ResultSet</code> object 949 * does not contain a column labeled <code>columnLabel</code>, a database access error occurs 950 * or this method is called on a closed result set 951 */ findColumn(String columnLabel)952 int findColumn(String columnLabel) throws SQLException; 953 954 955 //--------------------------JDBC 2.0----------------------------------- 956 957 //--------------------------------------------------------------------- 958 // Getters and Setters 959 //--------------------------------------------------------------------- 960 961 /** 962 * Retrieves the value of the designated column in the current row 963 * of this <code>ResultSet</code> object as a 964 * <code>java.io.Reader</code> object. 965 * @return a <code>java.io.Reader</code> object that contains the column 966 * value; if the value is SQL <code>NULL</code>, the value returned is 967 * <code>null</code> in the Java programming language. 968 * @param columnIndex the first column is 1, the second is 2, ... 969 * @exception SQLException if the columnIndex is not valid; 970 * if a database access error occurs or this method is 971 * called on a closed result set 972 * @since 1.2 973 */ getCharacterStream(int columnIndex)974 java.io.Reader getCharacterStream(int columnIndex) throws SQLException; 975 976 /** 977 * Retrieves the value of the designated column in the current row 978 * of this <code>ResultSet</code> object as a 979 * <code>java.io.Reader</code> object. 980 * 981 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 982 * @return a <code>java.io.Reader</code> object that contains the column 983 * value; if the value is SQL <code>NULL</code>, the value returned is 984 * <code>null</code> in the Java programming language 985 * @exception SQLException if the columnLabel is not valid; 986 * if a database access error occurs or this method is 987 * called on a closed result set 988 * @since 1.2 989 */ getCharacterStream(String columnLabel)990 java.io.Reader getCharacterStream(String columnLabel) throws SQLException; 991 992 /** 993 * Retrieves the value of the designated column in the current row 994 * of this <code>ResultSet</code> object as a 995 * <code>java.math.BigDecimal</code> with full precision. 996 * 997 * @param columnIndex the first column is 1, the second is 2, ... 998 * @return the column value (full precision); 999 * if the value is SQL <code>NULL</code>, the value returned is 1000 * <code>null</code> in the Java programming language. 1001 * @exception SQLException if the columnIndex is not valid; 1002 * if a database access error occurs or this method is 1003 * called on a closed result set 1004 * @since 1.2 1005 */ getBigDecimal(int columnIndex)1006 BigDecimal getBigDecimal(int columnIndex) throws SQLException; 1007 1008 /** 1009 * Retrieves the value of the designated column in the current row 1010 * of this <code>ResultSet</code> object as a 1011 * <code>java.math.BigDecimal</code> with full precision. 1012 * 1013 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 1014 * @return the column value (full precision); 1015 * if the value is SQL <code>NULL</code>, the value returned is 1016 * <code>null</code> in the Java programming language. 1017 * @exception SQLException if the columnLabel is not valid; 1018 * if a database access error occurs or this method is 1019 * called on a closed result set 1020 * @since 1.2 1021 * 1022 */ getBigDecimal(String columnLabel)1023 BigDecimal getBigDecimal(String columnLabel) throws SQLException; 1024 1025 //--------------------------------------------------------------------- 1026 // Traversal/Positioning 1027 //--------------------------------------------------------------------- 1028 1029 /** 1030 * Retrieves whether the cursor is before the first row in 1031 * this <code>ResultSet</code> object. 1032 * <p> 1033 * <strong>Note:</strong>Support for the <code>isBeforeFirst</code> method 1034 * is optional for <code>ResultSet</code>s with a result 1035 * set type of <code>TYPE_FORWARD_ONLY</code> 1036 * 1037 * @return <code>true</code> if the cursor is before the first row; 1038 * <code>false</code> if the cursor is at any other position or the 1039 * result set contains no rows 1040 * @exception SQLException if a database access error occurs or this method is 1041 * called on a closed result set 1042 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1043 * this method 1044 * @since 1.2 1045 */ isBeforeFirst()1046 boolean isBeforeFirst() throws SQLException; 1047 1048 /** 1049 * Retrieves whether the cursor is after the last row in 1050 * this <code>ResultSet</code> object. 1051 * <p> 1052 * <strong>Note:</strong>Support for the <code>isAfterLast</code> method 1053 * is optional for <code>ResultSet</code>s with a result 1054 * set type of <code>TYPE_FORWARD_ONLY</code> 1055 * 1056 * @return <code>true</code> if the cursor is after the last row; 1057 * <code>false</code> if the cursor is at any other position or the 1058 * result set contains no rows 1059 * @exception SQLException if a database access error occurs or this method is 1060 * called on a closed result set 1061 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1062 * this method 1063 * @since 1.2 1064 */ isAfterLast()1065 boolean isAfterLast() throws SQLException; 1066 1067 /** 1068 * Retrieves whether the cursor is on the first row of 1069 * this <code>ResultSet</code> object. 1070 * <p> 1071 * <strong>Note:</strong>Support for the <code>isFirst</code> method 1072 * is optional for <code>ResultSet</code>s with a result 1073 * set type of <code>TYPE_FORWARD_ONLY</code> 1074 * 1075 * @return <code>true</code> if the cursor is on the first row; 1076 * <code>false</code> otherwise 1077 * @exception SQLException if a database access error occurs or this method is 1078 * called on a closed result set 1079 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1080 * this method 1081 * @since 1.2 1082 */ isFirst()1083 boolean isFirst() throws SQLException; 1084 1085 /** 1086 * Retrieves whether the cursor is on the last row of 1087 * this <code>ResultSet</code> object. 1088 * <strong>Note:</strong> Calling the method <code>isLast</code> may be expensive 1089 * because the JDBC driver 1090 * might need to fetch ahead one row in order to determine 1091 * whether the current row is the last row in the result set. 1092 * <p> 1093 * <strong>Note:</strong> Support for the <code>isLast</code> method 1094 * is optional for <code>ResultSet</code>s with a result 1095 * set type of <code>TYPE_FORWARD_ONLY</code> 1096 * @return <code>true</code> if the cursor is on the last row; 1097 * <code>false</code> otherwise 1098 * @exception SQLException if a database access error occurs or this method is 1099 * called on a closed result set 1100 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1101 * this method 1102 * @since 1.2 1103 */ isLast()1104 boolean isLast() throws SQLException; 1105 1106 /** 1107 * Moves the cursor to the front of 1108 * this <code>ResultSet</code> object, just before the 1109 * first row. This method has no effect if the result set contains no rows. 1110 * 1111 * @exception SQLException if a database access error 1112 * occurs; this method is called on a closed result set or the 1113 * result set type is <code>TYPE_FORWARD_ONLY</code> 1114 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1115 * this method 1116 * @since 1.2 1117 */ beforeFirst()1118 void beforeFirst() throws SQLException; 1119 1120 /** 1121 * Moves the cursor to the end of 1122 * this <code>ResultSet</code> object, just after the 1123 * last row. This method has no effect if the result set contains no rows. 1124 * @exception SQLException if a database access error 1125 * occurs; this method is called on a closed result set 1126 * or the result set type is <code>TYPE_FORWARD_ONLY</code> 1127 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1128 * this method 1129 * @since 1.2 1130 */ afterLast()1131 void afterLast() throws SQLException; 1132 1133 /** 1134 * Moves the cursor to the first row in 1135 * this <code>ResultSet</code> object. 1136 * 1137 * @return <code>true</code> if the cursor is on a valid row; 1138 * <code>false</code> if there are no rows in the result set 1139 * @exception SQLException if a database access error 1140 * occurs; this method is called on a closed result set 1141 * or the result set type is <code>TYPE_FORWARD_ONLY</code> 1142 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1143 * this method 1144 * @since 1.2 1145 */ first()1146 boolean first() throws SQLException; 1147 1148 /** 1149 * Moves the cursor to the last row in 1150 * this <code>ResultSet</code> object. 1151 * 1152 * @return <code>true</code> if the cursor is on a valid row; 1153 * <code>false</code> if there are no rows in the result set 1154 * @exception SQLException if a database access error 1155 * occurs; this method is called on a closed result set 1156 * or the result set type is <code>TYPE_FORWARD_ONLY</code> 1157 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1158 * this method 1159 * @since 1.2 1160 */ last()1161 boolean last() throws SQLException; 1162 1163 /** 1164 * Retrieves the current row number. The first row is number 1, the 1165 * second number 2, and so on. 1166 * <p> 1167 * <strong>Note:</strong>Support for the <code>getRow</code> method 1168 * is optional for <code>ResultSet</code>s with a result 1169 * set type of <code>TYPE_FORWARD_ONLY</code> 1170 * 1171 * @return the current row number; <code>0</code> if there is no current row 1172 * @exception SQLException if a database access error occurs 1173 * or this method is called on a closed result set 1174 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1175 * this method 1176 * @since 1.2 1177 */ getRow()1178 int getRow() throws SQLException; 1179 1180 /** 1181 * Moves the cursor to the given row number in 1182 * this <code>ResultSet</code> object. 1183 * 1184 * <p>If the row number is positive, the cursor moves to 1185 * the given row number with respect to the 1186 * beginning of the result set. The first row is row 1, the second 1187 * is row 2, and so on. 1188 * 1189 * <p>If the given row number is negative, the cursor moves to 1190 * an absolute row position with respect to 1191 * the end of the result set. For example, calling the method 1192 * <code>absolute(-1)</code> positions the 1193 * cursor on the last row; calling the method <code>absolute(-2)</code> 1194 * moves the cursor to the next-to-last row, and so on. 1195 * 1196 * <p>If the row number specified is zero, the cursor is moved to 1197 * before the first row. 1198 * 1199 * <p>An attempt to position the cursor beyond the first/last row in 1200 * the result set leaves the cursor before the first row or after 1201 * the last row. 1202 * 1203 * <p><B>Note:</B> Calling <code>absolute(1)</code> is the same 1204 * as calling <code>first()</code>. Calling <code>absolute(-1)</code> 1205 * is the same as calling <code>last()</code>. 1206 * 1207 * @param row the number of the row to which the cursor should move. 1208 * A value of zero indicates that the cursor will be positioned 1209 * before the first row; a positive number indicates the row number 1210 * counting from the beginning of the result set; a negative number 1211 * indicates the row number counting from the end of the result set 1212 * @return <code>true</code> if the cursor is moved to a position in this 1213 * <code>ResultSet</code> object; 1214 * <code>false</code> if the cursor is before the first row or after the 1215 * last row 1216 * @exception SQLException if a database access error 1217 * occurs; this method is called on a closed result set 1218 * or the result set type is <code>TYPE_FORWARD_ONLY</code> 1219 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1220 * this method 1221 * @since 1.2 1222 */ absolute( int row )1223 boolean absolute( int row ) throws SQLException; 1224 1225 /** 1226 * Moves the cursor a relative number of rows, either positive or negative. 1227 * Attempting to move beyond the first/last row in the 1228 * result set positions the cursor before/after the 1229 * the first/last row. Calling <code>relative(0)</code> is valid, but does 1230 * not change the cursor position. 1231 * 1232 * <p>Note: Calling the method <code>relative(1)</code> 1233 * is identical to calling the method <code>next()</code> and 1234 * calling the method <code>relative(-1)</code> is identical 1235 * to calling the method <code>previous()</code>. 1236 * 1237 * @param rows an <code>int</code> specifying the number of rows to 1238 * move from the current row; a positive number moves the cursor 1239 * forward; a negative number moves the cursor backward 1240 * @return <code>true</code> if the cursor is on a row; 1241 * <code>false</code> otherwise 1242 * @exception SQLException if a database access error occurs; this method 1243 * is called on a closed result set or the result set type is 1244 * <code>TYPE_FORWARD_ONLY</code> 1245 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1246 * this method 1247 * @since 1.2 1248 */ relative( int rows )1249 boolean relative( int rows ) throws SQLException; 1250 1251 /** 1252 * Moves the cursor to the previous row in this 1253 * <code>ResultSet</code> object. 1254 *<p> 1255 * When a call to the <code>previous</code> method returns <code>false</code>, 1256 * the cursor is positioned before the first row. Any invocation of a 1257 * <code>ResultSet</code> method which requires a current row will result in a 1258 * <code>SQLException</code> being thrown. 1259 *<p> 1260 * If an input stream is open for the current row, a call to the method 1261 * <code>previous</code> will implicitly close it. A <code>ResultSet</code> 1262 * object's warning change is cleared when a new row is read. 1263 * 1264 * @return <code>true</code> if the cursor is now positioned on a valid row; 1265 * <code>false</code> if the cursor is positioned before the first row 1266 * @exception SQLException if a database access error 1267 * occurs; this method is called on a closed result set 1268 * or the result set type is <code>TYPE_FORWARD_ONLY</code> 1269 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1270 * this method 1271 * @since 1.2 1272 */ previous()1273 boolean previous() throws SQLException; 1274 1275 //--------------------------------------------------------------------- 1276 // Properties 1277 //--------------------------------------------------------------------- 1278 1279 /** 1280 * The constant indicating that the rows in a result set will be 1281 * processed in a forward direction; first-to-last. 1282 * This constant is used by the method <code>setFetchDirection</code> 1283 * as a hint to the driver, which the driver may ignore. 1284 * @since 1.2 1285 */ 1286 int FETCH_FORWARD = 1000; 1287 1288 /** 1289 * The constant indicating that the rows in a result set will be 1290 * processed in a reverse direction; last-to-first. 1291 * This constant is used by the method <code>setFetchDirection</code> 1292 * as a hint to the driver, which the driver may ignore. 1293 * @since 1.2 1294 */ 1295 int FETCH_REVERSE = 1001; 1296 1297 /** 1298 * The constant indicating that the order in which rows in a 1299 * result set will be processed is unknown. 1300 * This constant is used by the method <code>setFetchDirection</code> 1301 * as a hint to the driver, which the driver may ignore. 1302 */ 1303 int FETCH_UNKNOWN = 1002; 1304 1305 /** 1306 * Gives a hint as to the direction in which the rows in this 1307 * <code>ResultSet</code> object will be processed. 1308 * The initial value is determined by the 1309 * <code>Statement</code> object 1310 * that produced this <code>ResultSet</code> object. 1311 * The fetch direction may be changed at any time. 1312 * 1313 * @param direction an <code>int</code> specifying the suggested 1314 * fetch direction; one of <code>ResultSet.FETCH_FORWARD</code>, 1315 * <code>ResultSet.FETCH_REVERSE</code>, or 1316 * <code>ResultSet.FETCH_UNKNOWN</code> 1317 * @exception SQLException if a database access error occurs; this 1318 * method is called on a closed result set or 1319 * the result set type is <code>TYPE_FORWARD_ONLY</code> and the fetch 1320 * direction is not <code>FETCH_FORWARD</code> 1321 * @since 1.2 1322 * @see Statement#setFetchDirection 1323 * @see #getFetchDirection 1324 */ setFetchDirection(int direction)1325 void setFetchDirection(int direction) throws SQLException; 1326 1327 /** 1328 * Retrieves the fetch direction for this 1329 * <code>ResultSet</code> object. 1330 * 1331 * @return the current fetch direction for this <code>ResultSet</code> object 1332 * @exception SQLException if a database access error occurs 1333 * or this method is called on a closed result set 1334 * @since 1.2 1335 * @see #setFetchDirection 1336 */ getFetchDirection()1337 int getFetchDirection() throws SQLException; 1338 1339 /** 1340 * Gives the JDBC driver a hint as to the number of rows that should 1341 * be fetched from the database when more rows are needed for this 1342 * <code>ResultSet</code> object. 1343 * If the fetch size specified is zero, the JDBC driver 1344 * ignores the value and is free to make its own best guess as to what 1345 * the fetch size should be. The default value is set by the 1346 * <code>Statement</code> object 1347 * that created the result set. The fetch size may be changed at any time. 1348 * 1349 * @param rows the number of rows to fetch 1350 * @exception SQLException if a database access error occurs; this method 1351 * is called on a closed result set or the 1352 * condition {@code rows >= 0} is not satisfied 1353 * @since 1.2 1354 * @see #getFetchSize 1355 */ setFetchSize(int rows)1356 void setFetchSize(int rows) throws SQLException; 1357 1358 /** 1359 * Retrieves the fetch size for this 1360 * <code>ResultSet</code> object. 1361 * 1362 * @return the current fetch size for this <code>ResultSet</code> object 1363 * @exception SQLException if a database access error occurs 1364 * or this method is called on a closed result set 1365 * @since 1.2 1366 * @see #setFetchSize 1367 */ getFetchSize()1368 int getFetchSize() throws SQLException; 1369 1370 /** 1371 * The constant indicating the type for a <code>ResultSet</code> object 1372 * whose cursor may move only forward. 1373 * @since 1.2 1374 */ 1375 int TYPE_FORWARD_ONLY = 1003; 1376 1377 /** 1378 * The constant indicating the type for a <code>ResultSet</code> object 1379 * that is scrollable but generally not sensitive to changes to the data 1380 * that underlies the <code>ResultSet</code>. 1381 * @since 1.2 1382 */ 1383 int TYPE_SCROLL_INSENSITIVE = 1004; 1384 1385 /** 1386 * The constant indicating the type for a <code>ResultSet</code> object 1387 * that is scrollable and generally sensitive to changes to the data 1388 * that underlies the <code>ResultSet</code>. 1389 * @since 1.2 1390 */ 1391 int TYPE_SCROLL_SENSITIVE = 1005; 1392 1393 /** 1394 * Retrieves the type of this <code>ResultSet</code> object. 1395 * The type is determined by the <code>Statement</code> object 1396 * that created the result set. 1397 * 1398 * @return <code>ResultSet.TYPE_FORWARD_ONLY</code>, 1399 * <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, 1400 * or <code>ResultSet.TYPE_SCROLL_SENSITIVE</code> 1401 * @exception SQLException if a database access error occurs 1402 * or this method is called on a closed result set 1403 * @since 1.2 1404 */ getType()1405 int getType() throws SQLException; 1406 1407 /** 1408 * The constant indicating the concurrency mode for a 1409 * <code>ResultSet</code> object that may NOT be updated. 1410 * @since 1.2 1411 */ 1412 int CONCUR_READ_ONLY = 1007; 1413 1414 /** 1415 * The constant indicating the concurrency mode for a 1416 * <code>ResultSet</code> object that may be updated. 1417 * @since 1.2 1418 */ 1419 int CONCUR_UPDATABLE = 1008; 1420 1421 /** 1422 * Retrieves the concurrency mode of this <code>ResultSet</code> object. 1423 * The concurrency used is determined by the 1424 * <code>Statement</code> object that created the result set. 1425 * 1426 * @return the concurrency type, either 1427 * <code>ResultSet.CONCUR_READ_ONLY</code> 1428 * or <code>ResultSet.CONCUR_UPDATABLE</code> 1429 * @exception SQLException if a database access error occurs 1430 * or this method is called on a closed result set 1431 * @since 1.2 1432 */ getConcurrency()1433 int getConcurrency() throws SQLException; 1434 1435 //--------------------------------------------------------------------- 1436 // Updates 1437 //--------------------------------------------------------------------- 1438 1439 /** 1440 * Retrieves whether the current row has been updated. The value returned 1441 * depends on whether or not the result set can detect updates. 1442 * <p> 1443 * <strong>Note:</strong> Support for the <code>rowUpdated</code> method is optional with a result set 1444 * concurrency of <code>CONCUR_READ_ONLY</code> 1445 * @return <code>true</code> if the current row is detected to 1446 * have been visibly updated by the owner or another; <code>false</code> otherwise 1447 * @exception SQLException if a database access error occurs 1448 * or this method is called on a closed result set 1449 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1450 * this method 1451 * @see DatabaseMetaData#updatesAreDetected 1452 * @since 1.2 1453 */ rowUpdated()1454 boolean rowUpdated() throws SQLException; 1455 1456 /** 1457 * Retrieves whether the current row has had an insertion. 1458 * The value returned depends on whether or not this 1459 * <code>ResultSet</code> object can detect visible inserts. 1460 * <p> 1461 * <strong>Note:</strong> Support for the <code>rowInserted</code> method is optional with a result set 1462 * concurrency of <code>CONCUR_READ_ONLY</code> 1463 * @return <code>true</code> if the current row is detected to 1464 * have been inserted; <code>false</code> otherwise 1465 * @exception SQLException if a database access error occurs 1466 * or this method is called on a closed result set 1467 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1468 * this method 1469 * 1470 * @see DatabaseMetaData#insertsAreDetected 1471 * @since 1.2 1472 */ rowInserted()1473 boolean rowInserted() throws SQLException; 1474 1475 /** 1476 * Retrieves whether a row has been deleted. A deleted row may leave 1477 * a visible "hole" in a result set. This method can be used to 1478 * detect holes in a result set. The value returned depends on whether 1479 * or not this <code>ResultSet</code> object can detect deletions. 1480 * <p> 1481 * <strong>Note:</strong> Support for the <code>rowDeleted</code> method is optional with a result set 1482 * concurrency of <code>CONCUR_READ_ONLY</code> 1483 * @return <code>true</code> if the current row is detected to 1484 * have been deleted by the owner or another; <code>false</code> otherwise 1485 * @exception SQLException if a database access error occurs 1486 * or this method is called on a closed result set 1487 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1488 * this method 1489 * 1490 * @see DatabaseMetaData#deletesAreDetected 1491 * @since 1.2 1492 */ rowDeleted()1493 boolean rowDeleted() throws SQLException; 1494 1495 /** 1496 * Updates the designated column with a <code>null</code> value. 1497 * 1498 * The updater methods are used to update column values in the 1499 * current row or the insert row. The updater methods do not 1500 * update the underlying database; instead the <code>updateRow</code> 1501 * or <code>insertRow</code> methods are called to update the database. 1502 * 1503 * @param columnIndex the first column is 1, the second is 2, ... 1504 * @exception SQLException if the columnIndex is not valid; 1505 * if a database access error occurs; 1506 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1507 * or this method is called on a closed result set 1508 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1509 * this method 1510 * @since 1.2 1511 */ updateNull(int columnIndex)1512 void updateNull(int columnIndex) throws SQLException; 1513 1514 /** 1515 * Updates the designated column with a <code>boolean</code> value. 1516 * The updater methods are used to update column values in the 1517 * current row or the insert row. The updater methods do not 1518 * update the underlying database; instead the <code>updateRow</code> or 1519 * <code>insertRow</code> methods are called to update the database. 1520 * 1521 * @param columnIndex the first column is 1, the second is 2, ... 1522 * @param x the new column value 1523 * @exception SQLException if the columnIndex is not valid; 1524 * if a database access error occurs; 1525 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1526 * or this method is called on a closed result set 1527 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1528 * this method 1529 * @since 1.2 1530 */ updateBoolean(int columnIndex, boolean x)1531 void updateBoolean(int columnIndex, boolean x) throws SQLException; 1532 1533 /** 1534 * Updates the designated column with a <code>byte</code> value. 1535 * The updater methods are used to update column values in the 1536 * current row or the insert row. The updater methods do not 1537 * update the underlying database; instead the <code>updateRow</code> or 1538 * <code>insertRow</code> methods are called to update the database. 1539 * 1540 * 1541 * @param columnIndex the first column is 1, the second is 2, ... 1542 * @param x the new column value 1543 * @exception SQLException if the columnIndex is not valid; 1544 * if a database access error occurs; 1545 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1546 * or this method is called on a closed result set 1547 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1548 * this method 1549 * @since 1.2 1550 */ updateByte(int columnIndex, byte x)1551 void updateByte(int columnIndex, byte x) throws SQLException; 1552 1553 /** 1554 * Updates the designated column with a <code>short</code> value. 1555 * The updater methods are used to update column values in the 1556 * current row or the insert row. The updater methods do not 1557 * update the underlying database; instead the <code>updateRow</code> or 1558 * <code>insertRow</code> methods are called to update the database. 1559 * 1560 * @param columnIndex the first column is 1, the second is 2, ... 1561 * @param x the new column value 1562 * @exception SQLException if the columnIndex is not valid; 1563 * if a database access error occurs; 1564 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1565 * or this method is called on a closed result set 1566 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1567 * this method 1568 * @since 1.2 1569 */ updateShort(int columnIndex, short x)1570 void updateShort(int columnIndex, short x) throws SQLException; 1571 1572 /** 1573 * Updates the designated column with an <code>int</code> value. 1574 * The updater methods are used to update column values in the 1575 * current row or the insert row. The updater methods do not 1576 * update the underlying database; instead the <code>updateRow</code> or 1577 * <code>insertRow</code> methods are called to update the database. 1578 * 1579 * @param columnIndex the first column is 1, the second is 2, ... 1580 * @param x the new column value 1581 * @exception SQLException if the columnIndex is not valid; 1582 * if a database access error occurs; 1583 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1584 * or this method is called on a closed result set 1585 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1586 * this method 1587 * @since 1.2 1588 */ updateInt(int columnIndex, int x)1589 void updateInt(int columnIndex, int x) throws SQLException; 1590 1591 /** 1592 * Updates the designated column with a <code>long</code> value. 1593 * The updater methods are used to update column values in the 1594 * current row or the insert row. The updater methods do not 1595 * update the underlying database; instead the <code>updateRow</code> or 1596 * <code>insertRow</code> methods are called to update the database. 1597 * 1598 * @param columnIndex the first column is 1, the second is 2, ... 1599 * @param x the new column value 1600 * @exception SQLException if the columnIndex is not valid; 1601 * if a database access error occurs; 1602 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1603 * or this method is called on a closed result set 1604 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1605 * this method 1606 * @since 1.2 1607 */ updateLong(int columnIndex, long x)1608 void updateLong(int columnIndex, long x) throws SQLException; 1609 1610 /** 1611 * Updates the designated column with a <code>float</code> value. 1612 * The updater methods are used to update column values in the 1613 * current row or the insert row. The updater methods do not 1614 * update the underlying database; instead the <code>updateRow</code> or 1615 * <code>insertRow</code> methods are called to update the database. 1616 * 1617 * @param columnIndex the first column is 1, the second is 2, ... 1618 * @param x the new column value 1619 * @exception SQLException if the columnIndex is not valid; 1620 * if a database access error occurs; 1621 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1622 * or this method is called on a closed result set 1623 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1624 * this method 1625 * @since 1.2 1626 */ updateFloat(int columnIndex, float x)1627 void updateFloat(int columnIndex, float x) throws SQLException; 1628 1629 /** 1630 * Updates the designated column with a <code>double</code> value. 1631 * The updater methods are used to update column values in the 1632 * current row or the insert row. The updater methods do not 1633 * update the underlying database; instead the <code>updateRow</code> or 1634 * <code>insertRow</code> methods are called to update the database. 1635 * 1636 * @param columnIndex the first column is 1, the second is 2, ... 1637 * @param x the new column value 1638 * @exception SQLException if the columnIndex is not valid; 1639 * if a database access error occurs; 1640 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1641 * or this method is called on a closed result set 1642 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1643 * this method 1644 * @since 1.2 1645 */ updateDouble(int columnIndex, double x)1646 void updateDouble(int columnIndex, double x) throws SQLException; 1647 1648 /** 1649 * Updates the designated column with a <code>java.math.BigDecimal</code> 1650 * value. 1651 * The updater methods are used to update column values in the 1652 * current row or the insert row. The updater methods do not 1653 * update the underlying database; instead the <code>updateRow</code> or 1654 * <code>insertRow</code> methods are called to update the database. 1655 * 1656 * @param columnIndex the first column is 1, the second is 2, ... 1657 * @param x the new column value 1658 * @exception SQLException if the columnIndex is not valid; 1659 * if a database access error occurs; 1660 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1661 * or this method is called on a closed result set 1662 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1663 * this method 1664 * @since 1.2 1665 */ updateBigDecimal(int columnIndex, BigDecimal x)1666 void updateBigDecimal(int columnIndex, BigDecimal x) throws SQLException; 1667 1668 /** 1669 * Updates the designated column with a <code>String</code> value. 1670 * The updater methods are used to update column values in the 1671 * current row or the insert row. The updater methods do not 1672 * update the underlying database; instead the <code>updateRow</code> or 1673 * <code>insertRow</code> methods are called to update the database. 1674 * 1675 * @param columnIndex the first column is 1, the second is 2, ... 1676 * @param x the new column value 1677 * @exception SQLException if the columnIndex is not valid; 1678 * if a database access error occurs; 1679 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1680 * or this method is called on a closed result set 1681 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1682 * this method 1683 * @since 1.2 1684 */ updateString(int columnIndex, String x)1685 void updateString(int columnIndex, String x) throws SQLException; 1686 1687 /** 1688 * Updates the designated column with a <code>byte</code> array value. 1689 * The updater methods are used to update column values in the 1690 * current row or the insert row. The updater methods do not 1691 * update the underlying database; instead the <code>updateRow</code> or 1692 * <code>insertRow</code> methods are called to update the database. 1693 * 1694 * @param columnIndex the first column is 1, the second is 2, ... 1695 * @param x the new column value 1696 * @exception SQLException if the columnIndex is not valid; 1697 * if a database access error occurs; 1698 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1699 * or this method is called on a closed result set 1700 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1701 * this method 1702 * @since 1.2 1703 */ updateBytes(int columnIndex, byte x[])1704 void updateBytes(int columnIndex, byte x[]) throws SQLException; 1705 1706 /** 1707 * Updates the designated column with a <code>java.sql.Date</code> value. 1708 * The updater methods are used to update column values in the 1709 * current row or the insert row. The updater methods do not 1710 * update the underlying database; instead the <code>updateRow</code> or 1711 * <code>insertRow</code> methods are called to update the database. 1712 * 1713 * @param columnIndex the first column is 1, the second is 2, ... 1714 * @param x the new column value 1715 * @exception SQLException if the columnIndex is not valid; 1716 * if a database access error occurs; 1717 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1718 * or this method is called on a closed result set 1719 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1720 * this method 1721 * @since 1.2 1722 */ updateDate(int columnIndex, java.sql.Date x)1723 void updateDate(int columnIndex, java.sql.Date x) throws SQLException; 1724 1725 /** 1726 * Updates the designated column with a <code>java.sql.Time</code> value. 1727 * The updater methods are used to update column values in the 1728 * current row or the insert row. The updater methods do not 1729 * update the underlying database; instead the <code>updateRow</code> or 1730 * <code>insertRow</code> methods are called to update the database. 1731 * 1732 * @param columnIndex the first column is 1, the second is 2, ... 1733 * @param x the new column value 1734 * @exception SQLException if the columnIndex is not valid; 1735 * if a database access error occurs; 1736 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1737 * or this method is called on a closed result set 1738 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1739 * this method 1740 * @since 1.2 1741 */ updateTime(int columnIndex, java.sql.Time x)1742 void updateTime(int columnIndex, java.sql.Time x) throws SQLException; 1743 1744 /** 1745 * Updates the designated column with a <code>java.sql.Timestamp</code> 1746 * value. 1747 * The updater methods are used to update column values in the 1748 * current row or the insert row. The updater methods do not 1749 * update the underlying database; instead the <code>updateRow</code> or 1750 * <code>insertRow</code> methods are called to update the database. 1751 * 1752 * @param columnIndex the first column is 1, the second is 2, ... 1753 * @param x the new column value 1754 * @exception SQLException if the columnIndex is not valid; 1755 * if a database access error occurs; 1756 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1757 * or this method is called on a closed result set 1758 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1759 * this method 1760 * @since 1.2 1761 */ updateTimestamp(int columnIndex, java.sql.Timestamp x)1762 void updateTimestamp(int columnIndex, java.sql.Timestamp x) 1763 throws SQLException; 1764 1765 /** 1766 * Updates the designated column with an ascii stream value, which will have 1767 * the specified number of bytes. 1768 * The updater methods are used to update column values in the 1769 * current row or the insert row. The updater methods do not 1770 * update the underlying database; instead the <code>updateRow</code> or 1771 * <code>insertRow</code> methods are called to update the database. 1772 * 1773 * @param columnIndex the first column is 1, the second is 2, ... 1774 * @param x the new column value 1775 * @param length the length of the stream 1776 * @exception SQLException if the columnIndex is not valid; 1777 * if a database access error occurs; 1778 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1779 * or this method is called on a closed result set 1780 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1781 * this method 1782 * @since 1.2 1783 */ updateAsciiStream(int columnIndex, java.io.InputStream x, int length)1784 void updateAsciiStream(int columnIndex, 1785 java.io.InputStream x, 1786 int length) throws SQLException; 1787 1788 /** 1789 * Updates the designated column with a binary stream value, which will have 1790 * the specified number of bytes. 1791 * The updater methods are used to update column values in the 1792 * current row or the insert row. The updater methods do not 1793 * update the underlying database; instead the <code>updateRow</code> or 1794 * <code>insertRow</code> methods are called to update the database. 1795 * 1796 * @param columnIndex the first column is 1, the second is 2, ... 1797 * @param x the new column value 1798 * @param length the length of the stream 1799 * @exception SQLException if the columnIndex is not valid; 1800 * if a database access error occurs; 1801 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1802 * or this method is called on a closed result set 1803 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1804 * this method 1805 * @since 1.2 1806 */ updateBinaryStream(int columnIndex, java.io.InputStream x, int length)1807 void updateBinaryStream(int columnIndex, 1808 java.io.InputStream x, 1809 int length) throws SQLException; 1810 1811 /** 1812 * Updates the designated column with a character stream value, which will have 1813 * the specified number of bytes. 1814 * The updater methods are used to update column values in the 1815 * current row or the insert row. The updater methods do not 1816 * update the underlying database; instead the <code>updateRow</code> or 1817 * <code>insertRow</code> methods are called to update the database. 1818 * 1819 * @param columnIndex the first column is 1, the second is 2, ... 1820 * @param x the new column value 1821 * @param length the length of the stream 1822 * @exception SQLException if the columnIndex is not valid; 1823 * if a database access error occurs; 1824 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1825 * or this method is called on a closed result set 1826 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1827 * this method 1828 * @since 1.2 1829 */ updateCharacterStream(int columnIndex, java.io.Reader x, int length)1830 void updateCharacterStream(int columnIndex, 1831 java.io.Reader x, 1832 int length) throws SQLException; 1833 1834 /** 1835 * Updates the designated column with an <code>Object</code> value. 1836 * 1837 * The updater methods are used to update column values in the 1838 * current row or the insert row. The updater methods do not 1839 * update the underlying database; instead the <code>updateRow</code> or 1840 * <code>insertRow</code> methods are called to update the database. 1841 *<p> 1842 * If the second argument is an <code>InputStream</code> then the stream must contain 1843 * the number of bytes specified by scaleOrLength. If the second argument is a 1844 * <code>Reader</code> then the reader must contain the number of characters specified 1845 * by scaleOrLength. If these conditions are not true the driver will generate a 1846 * <code>SQLException</code> when the statement is executed. 1847 * 1848 * @param columnIndex the first column is 1, the second is 2, ... 1849 * @param x the new column value 1850 * @param scaleOrLength for an object of <code>java.math.BigDecimal</code> , 1851 * this is the number of digits after the decimal point. For 1852 * Java Object types <code>InputStream</code> and <code>Reader</code>, 1853 * this is the length 1854 * of the data in the stream or reader. For all other types, 1855 * this value will be ignored. 1856 * @exception SQLException if the columnIndex is not valid; 1857 * if a database access error occurs; 1858 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1859 * or this method is called on a closed result set 1860 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1861 * this method 1862 * @since 1.2 1863 */ updateObject(int columnIndex, Object x, int scaleOrLength)1864 void updateObject(int columnIndex, Object x, int scaleOrLength) 1865 throws SQLException; 1866 1867 /** 1868 * Updates the designated column with an <code>Object</code> value. 1869 * 1870 * The updater methods are used to update column values in the 1871 * current row or the insert row. The updater methods do not 1872 * update the underlying database; instead the <code>updateRow</code> or 1873 * <code>insertRow</code> methods are called to update the database. 1874 * 1875 * @param columnIndex the first column is 1, the second is 2, ... 1876 * @param x the new column value 1877 * @exception SQLException if the columnIndex is not valid; 1878 * if a database access error occurs; 1879 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1880 * or this method is called on a closed result set 1881 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1882 * this method 1883 * @since 1.2 1884 */ updateObject(int columnIndex, Object x)1885 void updateObject(int columnIndex, Object x) throws SQLException; 1886 1887 /** 1888 * Updates the designated column with a <code>null</code> value. 1889 * The updater methods are used to update column values in the 1890 * current row or the insert row. The updater methods do not 1891 * update the underlying database; instead the <code>updateRow</code> or 1892 * <code>insertRow</code> methods are called to update the database. 1893 * 1894 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 1895 * @exception SQLException if the columnLabel is not valid; 1896 * if a database access error occurs; 1897 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1898 * or this method is called on a closed result set 1899 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1900 * this method 1901 * @since 1.2 1902 */ updateNull(String columnLabel)1903 void updateNull(String columnLabel) throws SQLException; 1904 1905 /** 1906 * Updates the designated column with a <code>boolean</code> value. 1907 * The updater methods are used to update column values in the 1908 * current row or the insert row. The updater methods do not 1909 * update the underlying database; instead the <code>updateRow</code> or 1910 * <code>insertRow</code> methods are called to update the database. 1911 * 1912 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 1913 * @param x the new column value 1914 * @exception SQLException if the columnLabel is not valid; 1915 * if a database access error occurs; 1916 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1917 * or this method is called on a closed result set 1918 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1919 * this method 1920 * @since 1.2 1921 */ updateBoolean(String columnLabel, boolean x)1922 void updateBoolean(String columnLabel, boolean x) throws SQLException; 1923 1924 /** 1925 * Updates the designated column with a <code>byte</code> value. 1926 * The updater methods are used to update column values in the 1927 * current row or the insert row. The updater methods do not 1928 * update the underlying database; instead the <code>updateRow</code> or 1929 * <code>insertRow</code> methods are called to update the database. 1930 * 1931 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 1932 * @param x the new column value 1933 * @exception SQLException if the columnLabel is not valid; 1934 * if a database access error occurs; 1935 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1936 * or this method is called on a closed result set 1937 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1938 * this method 1939 * @since 1.2 1940 */ updateByte(String columnLabel, byte x)1941 void updateByte(String columnLabel, byte x) throws SQLException; 1942 1943 /** 1944 * Updates the designated column with a <code>short</code> value. 1945 * The updater methods are used to update column values in the 1946 * current row or the insert row. The updater methods do not 1947 * update the underlying database; instead the <code>updateRow</code> or 1948 * <code>insertRow</code> methods are called to update the database. 1949 * 1950 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 1951 * @param x the new column value 1952 * @exception SQLException if the columnLabel is not valid; 1953 * if a database access error occurs; 1954 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1955 * or this method is called on a closed result set 1956 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1957 * this method 1958 * @since 1.2 1959 */ updateShort(String columnLabel, short x)1960 void updateShort(String columnLabel, short x) throws SQLException; 1961 1962 /** 1963 * Updates the designated column with an <code>int</code> value. 1964 * The updater methods are used to update column values in the 1965 * current row or the insert row. The updater methods do not 1966 * update the underlying database; instead the <code>updateRow</code> or 1967 * <code>insertRow</code> methods are called to update the database. 1968 * 1969 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 1970 * @param x the new column value 1971 * @exception SQLException if the columnLabel is not valid; 1972 * if a database access error occurs; 1973 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1974 * or this method is called on a closed result set 1975 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1976 * this method 1977 * @since 1.2 1978 */ updateInt(String columnLabel, int x)1979 void updateInt(String columnLabel, int x) throws SQLException; 1980 1981 /** 1982 * Updates the designated column with a <code>long</code> value. 1983 * The updater methods are used to update column values in the 1984 * current row or the insert row. The updater methods do not 1985 * update the underlying database; instead the <code>updateRow</code> or 1986 * <code>insertRow</code> methods are called to update the database. 1987 * 1988 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 1989 * @param x the new column value 1990 * @exception SQLException if the columnLabel is not valid; 1991 * if a database access error occurs; 1992 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 1993 * or this method is called on a closed result set 1994 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 1995 * this method 1996 * @since 1.2 1997 */ updateLong(String columnLabel, long x)1998 void updateLong(String columnLabel, long x) throws SQLException; 1999 2000 /** 2001 * Updates the designated column with a <code>float </code> value. 2002 * The updater methods are used to update column values in the 2003 * current row or the insert row. The updater methods do not 2004 * update the underlying database; instead the <code>updateRow</code> or 2005 * <code>insertRow</code> methods are called to update the database. 2006 * 2007 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2008 * @param x the new column value 2009 * @exception SQLException if the columnLabel is not valid; 2010 * if a database access error occurs; 2011 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2012 * or this method is called on a closed result set 2013 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2014 * this method 2015 * @since 1.2 2016 */ updateFloat(String columnLabel, float x)2017 void updateFloat(String columnLabel, float x) throws SQLException; 2018 2019 /** 2020 * Updates the designated column with a <code>double</code> value. 2021 * The updater methods are used to update column values in the 2022 * current row or the insert row. The updater methods do not 2023 * update the underlying database; instead the <code>updateRow</code> or 2024 * <code>insertRow</code> methods are called to update the database. 2025 * 2026 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2027 * @param x the new column value 2028 * @exception SQLException if the columnLabel is not valid; 2029 * if a database access error occurs; 2030 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2031 * or this method is called on a closed result set 2032 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2033 * this method 2034 * @since 1.2 2035 */ updateDouble(String columnLabel, double x)2036 void updateDouble(String columnLabel, double x) throws SQLException; 2037 2038 /** 2039 * Updates the designated column with a <code>java.sql.BigDecimal</code> 2040 * value. 2041 * The updater methods are used to update column values in the 2042 * current row or the insert row. The updater methods do not 2043 * update the underlying database; instead the <code>updateRow</code> or 2044 * <code>insertRow</code> methods are called to update the database. 2045 * 2046 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2047 * @param x the new column value 2048 * @exception SQLException if the columnLabel is not valid; 2049 * if a database access error occurs; 2050 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2051 * or this method is called on a closed result set 2052 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2053 * this method 2054 * @since 1.2 2055 */ updateBigDecimal(String columnLabel, BigDecimal x)2056 void updateBigDecimal(String columnLabel, BigDecimal x) throws SQLException; 2057 2058 /** 2059 * Updates the designated column with a <code>String</code> value. 2060 * The updater methods are used to update column values in the 2061 * current row or the insert row. The updater methods do not 2062 * update the underlying database; instead the <code>updateRow</code> or 2063 * <code>insertRow</code> methods are called to update the database. 2064 * 2065 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2066 * @param x the new column value 2067 * @exception SQLException if the columnLabel is not valid; 2068 * if a database access error occurs; 2069 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2070 * or this method is called on a closed result set 2071 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2072 * this method 2073 * @since 1.2 2074 */ updateString(String columnLabel, String x)2075 void updateString(String columnLabel, String x) throws SQLException; 2076 2077 /** 2078 * Updates the designated column with a byte array value. 2079 * 2080 * The updater methods are used to update column values in the 2081 * current row or the insert row. The updater methods do not 2082 * update the underlying database; instead the <code>updateRow</code> 2083 * or <code>insertRow</code> methods are called to update the database. 2084 * 2085 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2086 * @param x the new column value 2087 * @exception SQLException if the columnLabel is not valid; 2088 * if a database access error occurs; 2089 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2090 * or this method is called on a closed result set 2091 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2092 * this method 2093 * @since 1.2 2094 */ updateBytes(String columnLabel, byte x[])2095 void updateBytes(String columnLabel, byte x[]) throws SQLException; 2096 2097 /** 2098 * Updates the designated column with a <code>java.sql.Date</code> value. 2099 * The updater methods are used to update column values in the 2100 * current row or the insert row. The updater methods do not 2101 * update the underlying database; instead the <code>updateRow</code> or 2102 * <code>insertRow</code> methods are called to update the database. 2103 * 2104 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2105 * @param x the new column value 2106 * @exception SQLException if the columnLabel is not valid; 2107 * if a database access error occurs; 2108 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2109 * or this method is called on a closed result set 2110 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2111 * this method 2112 * @since 1.2 2113 */ updateDate(String columnLabel, java.sql.Date x)2114 void updateDate(String columnLabel, java.sql.Date x) throws SQLException; 2115 2116 /** 2117 * Updates the designated column with a <code>java.sql.Time</code> value. 2118 * The updater methods are used to update column values in the 2119 * current row or the insert row. The updater methods do not 2120 * update the underlying database; instead the <code>updateRow</code> or 2121 * <code>insertRow</code> methods are called to update the database. 2122 * 2123 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2124 * @param x the new column value 2125 * @exception SQLException if the columnLabel is not valid; 2126 * if a database access error occurs; 2127 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2128 * or this method is called on a closed result set 2129 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2130 * this method 2131 * @since 1.2 2132 */ updateTime(String columnLabel, java.sql.Time x)2133 void updateTime(String columnLabel, java.sql.Time x) throws SQLException; 2134 2135 /** 2136 * Updates the designated column with a <code>java.sql.Timestamp</code> 2137 * value. 2138 * The updater methods are used to update column values in the 2139 * current row or the insert row. The updater methods do not 2140 * update the underlying database; instead the <code>updateRow</code> or 2141 * <code>insertRow</code> methods are called to update the database. 2142 * 2143 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2144 * @param x the new column value 2145 * @exception SQLException if the columnLabel is not valid; 2146 * if a database access error occurs; 2147 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2148 * or this method is called on a closed result set 2149 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2150 * this method 2151 * @since 1.2 2152 */ updateTimestamp(String columnLabel, java.sql.Timestamp x)2153 void updateTimestamp(String columnLabel, java.sql.Timestamp x) 2154 throws SQLException; 2155 2156 /** 2157 * Updates the designated column with an ascii stream value, which will have 2158 * the specified number of bytes. 2159 * The updater methods are used to update column values in the 2160 * current row or the insert row. The updater methods do not 2161 * update the underlying database; instead the <code>updateRow</code> or 2162 * <code>insertRow</code> methods are called to update the database. 2163 * 2164 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2165 * @param x the new column value 2166 * @param length the length of the stream 2167 * @exception SQLException if the columnLabel is not valid; 2168 * if a database access error occurs; 2169 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2170 * or this method is called on a closed result set 2171 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2172 * this method 2173 * @since 1.2 2174 */ updateAsciiStream(String columnLabel, java.io.InputStream x, int length)2175 void updateAsciiStream(String columnLabel, 2176 java.io.InputStream x, 2177 int length) throws SQLException; 2178 2179 /** 2180 * Updates the designated column with a binary stream value, which will have 2181 * the specified number of bytes. 2182 * The updater methods are used to update column values in the 2183 * current row or the insert row. The updater methods do not 2184 * update the underlying database; instead the <code>updateRow</code> or 2185 * <code>insertRow</code> methods are called to update the database. 2186 * 2187 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2188 * @param x the new column value 2189 * @param length the length of the stream 2190 * @exception SQLException if the columnLabel is not valid; 2191 * if a database access error occurs; 2192 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2193 * or this method is called on a closed result set 2194 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2195 * this method 2196 * @since 1.2 2197 */ updateBinaryStream(String columnLabel, java.io.InputStream x, int length)2198 void updateBinaryStream(String columnLabel, 2199 java.io.InputStream x, 2200 int length) throws SQLException; 2201 2202 /** 2203 * Updates the designated column with a character stream value, which will have 2204 * the specified number of bytes. 2205 * The updater methods are used to update column values in the 2206 * current row or the insert row. The updater methods do not 2207 * update the underlying database; instead the <code>updateRow</code> or 2208 * <code>insertRow</code> methods are called to update the database. 2209 * 2210 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2211 * @param reader the <code>java.io.Reader</code> object containing 2212 * the new column value 2213 * @param length the length of the stream 2214 * @exception SQLException if the columnLabel is not valid; 2215 * if a database access error occurs; 2216 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2217 * or this method is called on a closed result set 2218 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2219 * this method 2220 * @since 1.2 2221 */ updateCharacterStream(String columnLabel, java.io.Reader reader, int length)2222 void updateCharacterStream(String columnLabel, 2223 java.io.Reader reader, 2224 int length) throws SQLException; 2225 2226 /** 2227 * Updates the designated column with an <code>Object</code> value. 2228 * 2229 * The updater methods are used to update column values in the 2230 * current row or the insert row. The updater methods do not 2231 * update the underlying database; instead the <code>updateRow</code> or 2232 * <code>insertRow</code> methods are called to update the database. 2233 *<p> 2234 * If the second argument is an <code>InputStream</code> then the stream must contain 2235 * the number of bytes specified by scaleOrLength. If the second argument is a 2236 * <code>Reader</code> then the reader must contain the number of characters specified 2237 * by scaleOrLength. If these conditions are not true the driver will generate a 2238 * <code>SQLException</code> when the statement is executed. 2239 * 2240 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2241 * @param x the new column value 2242 * @param scaleOrLength for an object of <code>java.math.BigDecimal</code> , 2243 * this is the number of digits after the decimal point. For 2244 * Java Object types <code>InputStream</code> and <code>Reader</code>, 2245 * this is the length 2246 * of the data in the stream or reader. For all other types, 2247 * this value will be ignored. 2248 * @exception SQLException if the columnLabel is not valid; 2249 * if a database access error occurs; 2250 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2251 * or this method is called on a closed result set 2252 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2253 * this method 2254 * @since 1.2 2255 */ updateObject(String columnLabel, Object x, int scaleOrLength)2256 void updateObject(String columnLabel, Object x, int scaleOrLength) 2257 throws SQLException; 2258 2259 /** 2260 * Updates the designated column with an <code>Object</code> value. 2261 * 2262 * The updater methods are used to update column values in the 2263 * current row or the insert row. The updater methods do not 2264 * update the underlying database; instead the <code>updateRow</code> or 2265 * <code>insertRow</code> methods are called to update the database. 2266 * 2267 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2268 * @param x the new column value 2269 * @exception SQLException if the columnLabel is not valid; 2270 * if a database access error occurs; 2271 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2272 * or this method is called on a closed result set 2273 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2274 * this method 2275 * @since 1.2 2276 */ updateObject(String columnLabel, Object x)2277 void updateObject(String columnLabel, Object x) throws SQLException; 2278 2279 /** 2280 * Inserts the contents of the insert row into this 2281 * <code>ResultSet</code> object and into the database. 2282 * The cursor must be on the insert row when this method is called. 2283 * 2284 * @exception SQLException if a database access error occurs; 2285 * the result set concurrency is <code>CONCUR_READ_ONLY</code>, 2286 * this method is called on a closed result set, 2287 * if this method is called when the cursor is not on the insert row, 2288 * or if not all of non-nullable columns in 2289 * the insert row have been given a non-null value 2290 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2291 * this method 2292 * @since 1.2 2293 */ insertRow()2294 void insertRow() throws SQLException; 2295 2296 /** 2297 * Updates the underlying database with the new contents of the 2298 * current row of this <code>ResultSet</code> object. 2299 * This method cannot be called when the cursor is on the insert row. 2300 * 2301 * @exception SQLException if a database access error occurs; 2302 * the result set concurrency is <code>CONCUR_READ_ONLY</code>; 2303 * this method is called on a closed result set or 2304 * if this method is called when the cursor is on the insert row 2305 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2306 * this method 2307 * @since 1.2 2308 */ updateRow()2309 void updateRow() throws SQLException; 2310 2311 /** 2312 * Deletes the current row from this <code>ResultSet</code> object 2313 * and from the underlying database. This method cannot be called when 2314 * the cursor is on the insert row. 2315 * 2316 * @exception SQLException if a database access error occurs; 2317 * the result set concurrency is <code>CONCUR_READ_ONLY</code>; 2318 * this method is called on a closed result set 2319 * or if this method is called when the cursor is on the insert row 2320 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2321 * this method 2322 * @since 1.2 2323 */ deleteRow()2324 void deleteRow() throws SQLException; 2325 2326 /** 2327 * Refreshes the current row with its most recent value in 2328 * the database. This method cannot be called when 2329 * the cursor is on the insert row. 2330 * 2331 * <P>The <code>refreshRow</code> method provides a way for an 2332 * application to 2333 * explicitly tell the JDBC driver to refetch a row(s) from the 2334 * database. An application may want to call <code>refreshRow</code> when 2335 * caching or prefetching is being done by the JDBC driver to 2336 * fetch the latest value of a row from the database. The JDBC driver 2337 * may actually refresh multiple rows at once if the fetch size is 2338 * greater than one. 2339 * 2340 * <P> All values are refetched subject to the transaction isolation 2341 * level and cursor sensitivity. If <code>refreshRow</code> is called after 2342 * calling an updater method, but before calling 2343 * the method <code>updateRow</code>, then the 2344 * updates made to the row are lost. Calling the method 2345 * <code>refreshRow</code> frequently will likely slow performance. 2346 * 2347 * @exception SQLException if a database access error 2348 * occurs; this method is called on a closed result set; 2349 * the result set type is <code>TYPE_FORWARD_ONLY</code> or if this 2350 * method is called when the cursor is on the insert row 2351 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2352 * this method or this method is not supported for the specified result 2353 * set type and result set concurrency. 2354 * @since 1.2 2355 */ refreshRow()2356 void refreshRow() throws SQLException; 2357 2358 /** 2359 * Cancels the updates made to the current row in this 2360 * <code>ResultSet</code> object. 2361 * This method may be called after calling an 2362 * updater method(s) and before calling 2363 * the method <code>updateRow</code> to roll back 2364 * the updates made to a row. If no updates have been made or 2365 * <code>updateRow</code> has already been called, this method has no 2366 * effect. 2367 * 2368 * @exception SQLException if a database access error 2369 * occurs; this method is called on a closed result set; 2370 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2371 * or if this method is called when the cursor is 2372 * on the insert row 2373 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2374 * this method 2375 * @since 1.2 2376 */ cancelRowUpdates()2377 void cancelRowUpdates() throws SQLException; 2378 2379 /** 2380 * Moves the cursor to the insert row. The current cursor position is 2381 * remembered while the cursor is positioned on the insert row. 2382 * 2383 * The insert row is a special row associated with an updatable 2384 * result set. It is essentially a buffer where a new row may 2385 * be constructed by calling the updater methods prior to 2386 * inserting the row into the result set. 2387 * 2388 * Only the updater, getter, 2389 * and <code>insertRow</code> methods may be 2390 * called when the cursor is on the insert row. All of the columns in 2391 * a result set must be given a value each time this method is 2392 * called before calling <code>insertRow</code>. 2393 * An updater method must be called before a 2394 * getter method can be called on a column value. 2395 * 2396 * @exception SQLException if a database access error occurs; this 2397 * method is called on a closed result set 2398 * or the result set concurrency is <code>CONCUR_READ_ONLY</code> 2399 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2400 * this method 2401 * @since 1.2 2402 */ moveToInsertRow()2403 void moveToInsertRow() throws SQLException; 2404 2405 /** 2406 * Moves the cursor to the remembered cursor position, usually the 2407 * current row. This method has no effect if the cursor is not on 2408 * the insert row. 2409 * 2410 * @exception SQLException if a database access error occurs; this 2411 * method is called on a closed result set 2412 * or the result set concurrency is <code>CONCUR_READ_ONLY</code> 2413 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2414 * this method 2415 * @since 1.2 2416 */ moveToCurrentRow()2417 void moveToCurrentRow() throws SQLException; 2418 2419 /** 2420 * Retrieves the <code>Statement</code> object that produced this 2421 * <code>ResultSet</code> object. 2422 * If the result set was generated some other way, such as by a 2423 * <code>DatabaseMetaData</code> method, this method may return 2424 * <code>null</code>. 2425 * 2426 * @return the <code>Statement</code> object that produced 2427 * this <code>ResultSet</code> object or <code>null</code> 2428 * if the result set was produced some other way 2429 * @exception SQLException if a database access error occurs 2430 * or this method is called on a closed result set 2431 * @since 1.2 2432 */ getStatement()2433 Statement getStatement() throws SQLException; 2434 2435 /** 2436 * Retrieves the value of the designated column in the current row 2437 * of this <code>ResultSet</code> object as an <code>Object</code> 2438 * in the Java programming language. 2439 * If the value is an SQL <code>NULL</code>, 2440 * the driver returns a Java <code>null</code>. 2441 * This method uses the given <code>Map</code> object 2442 * for the custom mapping of the 2443 * SQL structured or distinct type that is being retrieved. 2444 * 2445 * @param columnIndex the first column is 1, the second is 2, ... 2446 * @param map a <code>java.util.Map</code> object that contains the mapping 2447 * from SQL type names to classes in the Java programming language 2448 * @return an <code>Object</code> in the Java programming language 2449 * representing the SQL value 2450 * @exception SQLException if the columnIndex is not valid; 2451 * if a database access error occurs 2452 * or this method is called on a closed result set 2453 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2454 * this method 2455 * @since 1.2 2456 */ getObject(int columnIndex, java.util.Map<String,Class<?>> map)2457 Object getObject(int columnIndex, java.util.Map<String,Class<?>> map) 2458 throws SQLException; 2459 2460 /** 2461 * Retrieves the value of the designated column in the current row 2462 * of this <code>ResultSet</code> object as a <code>Ref</code> object 2463 * in the Java programming language. 2464 * 2465 * @param columnIndex the first column is 1, the second is 2, ... 2466 * @return a <code>Ref</code> object representing an SQL <code>REF</code> 2467 * value 2468 * @exception SQLException if the columnIndex is not valid; 2469 * if a database access error occurs 2470 * or this method is called on a closed result set 2471 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2472 * this method 2473 * @since 1.2 2474 */ getRef(int columnIndex)2475 Ref getRef(int columnIndex) throws SQLException; 2476 2477 /** 2478 * Retrieves the value of the designated column in the current row 2479 * of this <code>ResultSet</code> object as a <code>Blob</code> object 2480 * in the Java programming language. 2481 * 2482 * @param columnIndex the first column is 1, the second is 2, ... 2483 * @return a <code>Blob</code> object representing the SQL 2484 * <code>BLOB</code> value in the specified column 2485 * @exception SQLException if the columnIndex is not valid; 2486 * if a database access error occurs 2487 * or this method is called on a closed result set 2488 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2489 * this method 2490 * @since 1.2 2491 */ getBlob(int columnIndex)2492 Blob getBlob(int columnIndex) throws SQLException; 2493 2494 /** 2495 * Retrieves the value of the designated column in the current row 2496 * of this <code>ResultSet</code> object as a <code>Clob</code> object 2497 * in the Java programming language. 2498 * 2499 * @param columnIndex the first column is 1, the second is 2, ... 2500 * @return a <code>Clob</code> object representing the SQL 2501 * <code>CLOB</code> value in the specified column 2502 * @exception SQLException if the columnIndex is not valid; 2503 * if a database access error occurs 2504 * or this method is called on a closed result set 2505 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2506 * this method 2507 * @since 1.2 2508 */ getClob(int columnIndex)2509 Clob getClob(int columnIndex) throws SQLException; 2510 2511 /** 2512 * Retrieves the value of the designated column in the current row 2513 * of this <code>ResultSet</code> object as an <code>Array</code> object 2514 * in the Java programming language. 2515 * 2516 * @param columnIndex the first column is 1, the second is 2, ... 2517 * @return an <code>Array</code> object representing the SQL 2518 * <code>ARRAY</code> value in the specified column 2519 * @exception SQLException if the columnIndex is not valid; 2520 * if a database access error occurs 2521 * or this method is called on a closed result set 2522 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2523 * this method 2524 * @since 1.2 2525 */ getArray(int columnIndex)2526 Array getArray(int columnIndex) throws SQLException; 2527 2528 /** 2529 * Retrieves the value of the designated column in the current row 2530 * of this <code>ResultSet</code> object as an <code>Object</code> 2531 * in the Java programming language. 2532 * If the value is an SQL <code>NULL</code>, 2533 * the driver returns a Java <code>null</code>. 2534 * This method uses the specified <code>Map</code> object for 2535 * custom mapping if appropriate. 2536 * 2537 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2538 * @param map a <code>java.util.Map</code> object that contains the mapping 2539 * from SQL type names to classes in the Java programming language 2540 * @return an <code>Object</code> representing the SQL value in the 2541 * specified column 2542 * @exception SQLException if the columnLabel is not valid; 2543 * if a database access error occurs 2544 * or this method is called on a closed result set 2545 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2546 * this method 2547 * @since 1.2 2548 */ getObject(String columnLabel, java.util.Map<String,Class<?>> map)2549 Object getObject(String columnLabel, java.util.Map<String,Class<?>> map) 2550 throws SQLException; 2551 2552 /** 2553 * Retrieves the value of the designated column in the current row 2554 * of this <code>ResultSet</code> object as a <code>Ref</code> object 2555 * in the Java programming language. 2556 * 2557 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2558 * @return a <code>Ref</code> object representing the SQL <code>REF</code> 2559 * value in the specified column 2560 * @exception SQLException if the columnLabel is not valid; 2561 * if a database access error occurs 2562 * or this method is called on a closed result set 2563 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2564 * this method 2565 * @since 1.2 2566 */ getRef(String columnLabel)2567 Ref getRef(String columnLabel) throws SQLException; 2568 2569 /** 2570 * Retrieves the value of the designated column in the current row 2571 * of this <code>ResultSet</code> object as a <code>Blob</code> object 2572 * in the Java programming language. 2573 * 2574 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2575 * @return a <code>Blob</code> object representing the SQL <code>BLOB</code> 2576 * value in the specified column 2577 * @exception SQLException if the columnLabel is not valid; 2578 * if a database access error occurs 2579 * or this method is called on a closed result set 2580 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2581 * this method 2582 * @since 1.2 2583 */ getBlob(String columnLabel)2584 Blob getBlob(String columnLabel) throws SQLException; 2585 2586 /** 2587 * Retrieves the value of the designated column in the current row 2588 * of this <code>ResultSet</code> object as a <code>Clob</code> object 2589 * in the Java programming language. 2590 * 2591 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2592 * @return a <code>Clob</code> object representing the SQL <code>CLOB</code> 2593 * value in the specified column 2594 * @exception SQLException if the columnLabel is not valid; 2595 * if a database access error occurs 2596 * or this method is called on a closed result set 2597 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2598 * this method 2599 * @since 1.2 2600 */ getClob(String columnLabel)2601 Clob getClob(String columnLabel) throws SQLException; 2602 2603 /** 2604 * Retrieves the value of the designated column in the current row 2605 * of this <code>ResultSet</code> object as an <code>Array</code> object 2606 * in the Java programming language. 2607 * 2608 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2609 * @return an <code>Array</code> object representing the SQL <code>ARRAY</code> value in 2610 * the specified column 2611 * @exception SQLException if the columnLabel is not valid; 2612 * if a database access error occurs 2613 * or this method is called on a closed result set 2614 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2615 * this method 2616 * @since 1.2 2617 */ getArray(String columnLabel)2618 Array getArray(String columnLabel) throws SQLException; 2619 2620 /** 2621 * Retrieves the value of the designated column in the current row 2622 * of this <code>ResultSet</code> object as a <code>java.sql.Date</code> object 2623 * in the Java programming language. 2624 * This method uses the given calendar to construct an appropriate millisecond 2625 * value for the date if the underlying database does not store 2626 * timezone information. 2627 * 2628 * @param columnIndex the first column is 1, the second is 2, ... 2629 * @param cal the <code>java.util.Calendar</code> object 2630 * to use in constructing the date 2631 * @return the column value as a <code>java.sql.Date</code> object; 2632 * if the value is SQL <code>NULL</code>, 2633 * the value returned is <code>null</code> in the Java programming language 2634 * @exception SQLException if the columnIndex is not valid; 2635 * if a database access error occurs 2636 * or this method is called on a closed result set 2637 * @since 1.2 2638 */ getDate(int columnIndex, Calendar cal)2639 java.sql.Date getDate(int columnIndex, Calendar cal) throws SQLException; 2640 2641 /** 2642 * Retrieves the value of the designated column in the current row 2643 * of this <code>ResultSet</code> object as a <code>java.sql.Date</code> object 2644 * in the Java programming language. 2645 * This method uses the given calendar to construct an appropriate millisecond 2646 * value for the date if the underlying database does not store 2647 * timezone information. 2648 * 2649 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2650 * @param cal the <code>java.util.Calendar</code> object 2651 * to use in constructing the date 2652 * @return the column value as a <code>java.sql.Date</code> object; 2653 * if the value is SQL <code>NULL</code>, 2654 * the value returned is <code>null</code> in the Java programming language 2655 * @exception SQLException if the columnLabel is not valid; 2656 * if a database access error occurs 2657 * or this method is called on a closed result set 2658 * @since 1.2 2659 */ getDate(String columnLabel, Calendar cal)2660 java.sql.Date getDate(String columnLabel, Calendar cal) throws SQLException; 2661 2662 /** 2663 * Retrieves the value of the designated column in the current row 2664 * of this <code>ResultSet</code> object as a <code>java.sql.Time</code> object 2665 * in the Java programming language. 2666 * This method uses the given calendar to construct an appropriate millisecond 2667 * value for the time if the underlying database does not store 2668 * timezone information. 2669 * 2670 * @param columnIndex the first column is 1, the second is 2, ... 2671 * @param cal the <code>java.util.Calendar</code> object 2672 * to use in constructing the time 2673 * @return the column value as a <code>java.sql.Time</code> object; 2674 * if the value is SQL <code>NULL</code>, 2675 * the value returned is <code>null</code> in the Java programming language 2676 * @exception SQLException if the columnIndex is not valid; 2677 * if a database access error occurs 2678 * or this method is called on a closed result set 2679 * @since 1.2 2680 */ getTime(int columnIndex, Calendar cal)2681 java.sql.Time getTime(int columnIndex, Calendar cal) throws SQLException; 2682 2683 /** 2684 * Retrieves the value of the designated column in the current row 2685 * of this <code>ResultSet</code> object as a <code>java.sql.Time</code> object 2686 * in the Java programming language. 2687 * This method uses the given calendar to construct an appropriate millisecond 2688 * value for the time if the underlying database does not store 2689 * timezone information. 2690 * 2691 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2692 * @param cal the <code>java.util.Calendar</code> object 2693 * to use in constructing the time 2694 * @return the column value as a <code>java.sql.Time</code> object; 2695 * if the value is SQL <code>NULL</code>, 2696 * the value returned is <code>null</code> in the Java programming language 2697 * @exception SQLException if the columnLabel is not valid; 2698 * if a database access error occurs 2699 * or this method is called on a closed result set 2700 * @since 1.2 2701 */ getTime(String columnLabel, Calendar cal)2702 java.sql.Time getTime(String columnLabel, Calendar cal) throws SQLException; 2703 2704 /** 2705 * Retrieves the value of the designated column in the current row 2706 * of this <code>ResultSet</code> object as a <code>java.sql.Timestamp</code> object 2707 * in the Java programming language. 2708 * This method uses the given calendar to construct an appropriate millisecond 2709 * value for the timestamp if the underlying database does not store 2710 * timezone information. 2711 * 2712 * @param columnIndex the first column is 1, the second is 2, ... 2713 * @param cal the <code>java.util.Calendar</code> object 2714 * to use in constructing the timestamp 2715 * @return the column value as a <code>java.sql.Timestamp</code> object; 2716 * if the value is SQL <code>NULL</code>, 2717 * the value returned is <code>null</code> in the Java programming language 2718 * @exception SQLException if the columnIndex is not valid; 2719 * if a database access error occurs 2720 * or this method is called on a closed result set 2721 * @since 1.2 2722 */ getTimestamp(int columnIndex, Calendar cal)2723 java.sql.Timestamp getTimestamp(int columnIndex, Calendar cal) 2724 throws SQLException; 2725 2726 /** 2727 * Retrieves the value of the designated column in the current row 2728 * of this <code>ResultSet</code> object as a <code>java.sql.Timestamp</code> object 2729 * in the Java programming language. 2730 * This method uses the given calendar to construct an appropriate millisecond 2731 * value for the timestamp if the underlying database does not store 2732 * timezone information. 2733 * 2734 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2735 * @param cal the <code>java.util.Calendar</code> object 2736 * to use in constructing the date 2737 * @return the column value as a <code>java.sql.Timestamp</code> object; 2738 * if the value is SQL <code>NULL</code>, 2739 * the value returned is <code>null</code> in the Java programming language 2740 * @exception SQLException if the columnLabel is not valid or 2741 * if a database access error occurs 2742 * or this method is called on a closed result set 2743 * @since 1.2 2744 */ getTimestamp(String columnLabel, Calendar cal)2745 java.sql.Timestamp getTimestamp(String columnLabel, Calendar cal) 2746 throws SQLException; 2747 2748 //-------------------------- JDBC 3.0 ---------------------------------------- 2749 2750 /** 2751 * The constant indicating that open <code>ResultSet</code> objects with this 2752 * holdability will remain open when the current transaction is committed. 2753 * 2754 * @since 1.4 2755 */ 2756 int HOLD_CURSORS_OVER_COMMIT = 1; 2757 2758 /** 2759 * The constant indicating that open <code>ResultSet</code> objects with this 2760 * holdability will be closed when the current transaction is committed. 2761 * 2762 * @since 1.4 2763 */ 2764 int CLOSE_CURSORS_AT_COMMIT = 2; 2765 2766 /** 2767 * Retrieves the value of the designated column in the current row 2768 * of this <code>ResultSet</code> object as a <code>java.net.URL</code> 2769 * object in the Java programming language. 2770 * 2771 * @param columnIndex the index of the column 1 is the first, 2 is the second,... 2772 * @return the column value as a <code>java.net.URL</code> object; 2773 * if the value is SQL <code>NULL</code>, 2774 * the value returned is <code>null</code> in the Java programming language 2775 * @exception SQLException if the columnIndex is not valid; 2776 * if a database access error occurs; this method 2777 * is called on a closed result set or if a URL is malformed 2778 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2779 * this method 2780 * @since 1.4 2781 */ getURL(int columnIndex)2782 java.net.URL getURL(int columnIndex) throws SQLException; 2783 2784 /** 2785 * Retrieves the value of the designated column in the current row 2786 * of this <code>ResultSet</code> object as a <code>java.net.URL</code> 2787 * object in the Java programming language. 2788 * 2789 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2790 * @return the column value as a <code>java.net.URL</code> object; 2791 * if the value is SQL <code>NULL</code>, 2792 * the value returned is <code>null</code> in the Java programming language 2793 * @exception SQLException if the columnLabel is not valid; 2794 * if a database access error occurs; this method 2795 * is called on a closed result set or if a URL is malformed 2796 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2797 * this method 2798 * @since 1.4 2799 */ getURL(String columnLabel)2800 java.net.URL getURL(String columnLabel) throws SQLException; 2801 2802 /** 2803 * Updates the designated column with a <code>java.sql.Ref</code> value. 2804 * The updater methods are used to update column values in the 2805 * current row or the insert row. The updater methods do not 2806 * update the underlying database; instead the <code>updateRow</code> or 2807 * <code>insertRow</code> methods are called to update the database. 2808 * 2809 * @param columnIndex the first column is 1, the second is 2, ... 2810 * @param x the new column value 2811 * @exception SQLException if the columnIndex is not valid; 2812 * if a database access error occurs; 2813 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2814 * or this method is called on a closed result set 2815 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2816 * this method 2817 * @since 1.4 2818 */ updateRef(int columnIndex, java.sql.Ref x)2819 void updateRef(int columnIndex, java.sql.Ref x) throws SQLException; 2820 2821 /** 2822 * Updates the designated column with a <code>java.sql.Ref</code> value. 2823 * The updater methods are used to update column values in the 2824 * current row or the insert row. The updater methods do not 2825 * update the underlying database; instead the <code>updateRow</code> or 2826 * <code>insertRow</code> methods are called to update the database. 2827 * 2828 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2829 * @param x the new column value 2830 * @exception SQLException if the columnLabel is not valid; 2831 * if a database access error occurs; 2832 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2833 * or this method is called on a closed result set 2834 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2835 * this method 2836 * @since 1.4 2837 */ updateRef(String columnLabel, java.sql.Ref x)2838 void updateRef(String columnLabel, java.sql.Ref x) throws SQLException; 2839 2840 /** 2841 * Updates the designated column with a <code>java.sql.Blob</code> value. 2842 * The updater methods are used to update column values in the 2843 * current row or the insert row. The updater methods do not 2844 * update the underlying database; instead the <code>updateRow</code> or 2845 * <code>insertRow</code> methods are called to update the database. 2846 * 2847 * @param columnIndex the first column is 1, the second is 2, ... 2848 * @param x the new column value 2849 * @exception SQLException if the columnIndex is not valid; 2850 * if a database access error occurs; 2851 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2852 * or this method is called on a closed result set 2853 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2854 * this method 2855 * @since 1.4 2856 */ updateBlob(int columnIndex, java.sql.Blob x)2857 void updateBlob(int columnIndex, java.sql.Blob x) throws SQLException; 2858 2859 /** 2860 * Updates the designated column with a <code>java.sql.Blob</code> value. 2861 * The updater methods are used to update column values in the 2862 * current row or the insert row. The updater methods do not 2863 * update the underlying database; instead the <code>updateRow</code> or 2864 * <code>insertRow</code> methods are called to update the database. 2865 * 2866 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2867 * @param x the new column value 2868 * @exception SQLException if the columnLabel is not valid; 2869 * if a database access error occurs; 2870 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2871 * or this method is called on a closed result set 2872 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2873 * this method 2874 * @since 1.4 2875 */ updateBlob(String columnLabel, java.sql.Blob x)2876 void updateBlob(String columnLabel, java.sql.Blob x) throws SQLException; 2877 2878 /** 2879 * Updates the designated column with a <code>java.sql.Clob</code> value. 2880 * The updater methods are used to update column values in the 2881 * current row or the insert row. The updater methods do not 2882 * update the underlying database; instead the <code>updateRow</code> or 2883 * <code>insertRow</code> methods are called to update the database. 2884 * 2885 * @param columnIndex the first column is 1, the second is 2, ... 2886 * @param x the new column value 2887 * @exception SQLException if the columnIndex is not valid; 2888 * if a database access error occurs; 2889 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2890 * or this method is called on a closed result set 2891 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2892 * this method 2893 * @since 1.4 2894 */ updateClob(int columnIndex, java.sql.Clob x)2895 void updateClob(int columnIndex, java.sql.Clob x) throws SQLException; 2896 2897 /** 2898 * Updates the designated column with a <code>java.sql.Clob</code> value. 2899 * The updater methods are used to update column values in the 2900 * current row or the insert row. The updater methods do not 2901 * update the underlying database; instead the <code>updateRow</code> or 2902 * <code>insertRow</code> methods are called to update the database. 2903 * 2904 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2905 * @param x the new column value 2906 * @exception SQLException if the columnLabel is not valid; 2907 * if a database access error occurs; 2908 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2909 * or this method is called on a closed result set 2910 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2911 * this method 2912 * @since 1.4 2913 */ updateClob(String columnLabel, java.sql.Clob x)2914 void updateClob(String columnLabel, java.sql.Clob x) throws SQLException; 2915 2916 /** 2917 * Updates the designated column with a <code>java.sql.Array</code> value. 2918 * The updater methods are used to update column values in the 2919 * current row or the insert row. The updater methods do not 2920 * update the underlying database; instead the <code>updateRow</code> or 2921 * <code>insertRow</code> methods are called to update the database. 2922 * 2923 * @param columnIndex the first column is 1, the second is 2, ... 2924 * @param x the new column value 2925 * @exception SQLException if the columnIndex is not valid; 2926 * if a database access error occurs; 2927 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2928 * or this method is called on a closed result set 2929 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2930 * this method 2931 * @since 1.4 2932 */ updateArray(int columnIndex, java.sql.Array x)2933 void updateArray(int columnIndex, java.sql.Array x) throws SQLException; 2934 2935 /** 2936 * Updates the designated column with a <code>java.sql.Array</code> value. 2937 * The updater methods are used to update column values in the 2938 * current row or the insert row. The updater methods do not 2939 * update the underlying database; instead the <code>updateRow</code> or 2940 * <code>insertRow</code> methods are called to update the database. 2941 * 2942 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2943 * @param x the new column value 2944 * @exception SQLException if the columnLabel is not valid; 2945 * if a database access error occurs; 2946 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 2947 * or this method is called on a closed result set 2948 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2949 * this method 2950 * @since 1.4 2951 */ updateArray(String columnLabel, java.sql.Array x)2952 void updateArray(String columnLabel, java.sql.Array x) throws SQLException; 2953 2954 //------------------------- JDBC 4.0 ----------------------------------- 2955 2956 /** 2957 * Retrieves the value of the designated column in the current row of this 2958 * <code>ResultSet</code> object as a <code>java.sql.RowId</code> object in the Java 2959 * programming language. 2960 * 2961 * @param columnIndex the first column is 1, the second 2, ... 2962 * @return the column value; if the value is a SQL <code>NULL</code> the 2963 * value returned is <code>null</code> 2964 * @throws SQLException if the columnIndex is not valid; 2965 * if a database access error occurs 2966 * or this method is called on a closed result set 2967 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2968 * this method 2969 * @since 1.6 2970 */ getRowId(int columnIndex)2971 RowId getRowId(int columnIndex) throws SQLException; 2972 2973 /** 2974 * Retrieves the value of the designated column in the current row of this 2975 * <code>ResultSet</code> object as a <code>java.sql.RowId</code> object in the Java 2976 * programming language. 2977 * 2978 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 2979 * @return the column value ; if the value is a SQL <code>NULL</code> the 2980 * value returned is <code>null</code> 2981 * @throws SQLException if the columnLabel is not valid; 2982 * if a database access error occurs 2983 * or this method is called on a closed result set 2984 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 2985 * this method 2986 * @since 1.6 2987 */ getRowId(String columnLabel)2988 RowId getRowId(String columnLabel) throws SQLException; 2989 2990 /** 2991 * Updates the designated column with a <code>RowId</code> value. The updater 2992 * methods are used to update column values in the current row or the insert 2993 * row. The updater methods do not update the underlying database; instead 2994 * the <code>updateRow</code> or <code>insertRow</code> methods are called 2995 * to update the database. 2996 * 2997 * @param columnIndex the first column is 1, the second 2, ... 2998 * @param x the column value 2999 * @exception SQLException if the columnIndex is not valid; 3000 * if a database access error occurs; 3001 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3002 * or this method is called on a closed result set 3003 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3004 * this method 3005 * @since 1.6 3006 */ updateRowId(int columnIndex, RowId x)3007 void updateRowId(int columnIndex, RowId x) throws SQLException; 3008 3009 /** 3010 * Updates the designated column with a <code>RowId</code> value. The updater 3011 * methods are used to update column values in the current row or the insert 3012 * row. The updater methods do not update the underlying database; instead 3013 * the <code>updateRow</code> or <code>insertRow</code> methods are called 3014 * to update the database. 3015 * 3016 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3017 * @param x the column value 3018 * @exception SQLException if the columnLabel is not valid; 3019 * if a database access error occurs; 3020 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3021 * or this method is called on a closed result set 3022 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3023 * this method 3024 * @since 1.6 3025 */ updateRowId(String columnLabel, RowId x)3026 void updateRowId(String columnLabel, RowId x) throws SQLException; 3027 3028 /** 3029 * Retrieves the holdability of this <code>ResultSet</code> object 3030 * @return either <code>ResultSet.HOLD_CURSORS_OVER_COMMIT</code> or <code>ResultSet.CLOSE_CURSORS_AT_COMMIT</code> 3031 * @throws SQLException if a database access error occurs 3032 * or this method is called on a closed result set 3033 * @since 1.6 3034 */ getHoldability()3035 int getHoldability() throws SQLException; 3036 3037 /** 3038 * Retrieves whether this <code>ResultSet</code> object has been closed. A <code>ResultSet</code> is closed if the 3039 * method close has been called on it, or if it is automatically closed. 3040 * 3041 * @return true if this <code>ResultSet</code> object is closed; false if it is still open 3042 * @throws SQLException if a database access error occurs 3043 * @since 1.6 3044 */ isClosed()3045 boolean isClosed() throws SQLException; 3046 3047 /** 3048 * Updates the designated column with a <code>String</code> value. 3049 * It is intended for use when updating <code>NCHAR</code>,<code>NVARCHAR</code> 3050 * and <code>LONGNVARCHAR</code> columns. 3051 * The updater methods are used to update column values in the 3052 * current row or the insert row. The updater methods do not 3053 * update the underlying database; instead the <code>updateRow</code> or 3054 * <code>insertRow</code> methods are called to update the database. 3055 * 3056 * @param columnIndex the first column is 1, the second 2, ... 3057 * @param nString the value for the column to be updated 3058 * @throws SQLException if the columnIndex is not valid; 3059 * if the driver does not support national 3060 * character sets; if the driver can detect that a data conversion 3061 * error could occur; this method is called on a closed result set; 3062 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3063 * or if a database access error occurs 3064 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3065 * this method 3066 * @since 1.6 3067 */ updateNString(int columnIndex, String nString)3068 void updateNString(int columnIndex, String nString) throws SQLException; 3069 3070 /** 3071 * Updates the designated column with a <code>String</code> value. 3072 * It is intended for use when updating <code>NCHAR</code>,<code>NVARCHAR</code> 3073 * and <code>LONGNVARCHAR</code> columns. 3074 * The updater methods are used to update column values in the 3075 * current row or the insert row. The updater methods do not 3076 * update the underlying database; instead the <code>updateRow</code> or 3077 * <code>insertRow</code> methods are called to update the database. 3078 * 3079 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3080 * @param nString the value for the column to be updated 3081 * @throws SQLException if the columnLabel is not valid; 3082 * if the driver does not support national 3083 * character sets; if the driver can detect that a data conversion 3084 * error could occur; this method is called on a closed result set; 3085 * the result set concurrency is <CODE>CONCUR_READ_ONLY</code> 3086 * or if a database access error occurs 3087 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3088 * this method 3089 * @since 1.6 3090 */ updateNString(String columnLabel, String nString)3091 void updateNString(String columnLabel, String nString) throws SQLException; 3092 3093 /** 3094 * Updates the designated column with a <code>java.sql.NClob</code> value. 3095 * The updater methods are used to update column values in the 3096 * current row or the insert row. The updater methods do not 3097 * update the underlying database; instead the <code>updateRow</code> or 3098 * <code>insertRow</code> methods are called to update the database. 3099 * 3100 * @param columnIndex the first column is 1, the second 2, ... 3101 * @param nClob the value for the column to be updated 3102 * @throws SQLException if the columnIndex is not valid; 3103 * if the driver does not support national 3104 * character sets; if the driver can detect that a data conversion 3105 * error could occur; this method is called on a closed result set; 3106 * if a database access error occurs or 3107 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3108 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3109 * this method 3110 * @since 1.6 3111 */ updateNClob(int columnIndex, NClob nClob)3112 void updateNClob(int columnIndex, NClob nClob) throws SQLException; 3113 3114 /** 3115 * Updates the designated column with a <code>java.sql.NClob</code> value. 3116 * The updater methods are used to update column values in the 3117 * current row or the insert row. The updater methods do not 3118 * update the underlying database; instead the <code>updateRow</code> or 3119 * <code>insertRow</code> methods are called to update the database. 3120 * 3121 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3122 * @param nClob the value for the column to be updated 3123 * @throws SQLException if the columnLabel is not valid; 3124 * if the driver does not support national 3125 * character sets; if the driver can detect that a data conversion 3126 * error could occur; this method is called on a closed result set; 3127 * if a database access error occurs or 3128 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3129 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3130 * this method 3131 * @since 1.6 3132 */ updateNClob(String columnLabel, NClob nClob)3133 void updateNClob(String columnLabel, NClob nClob) throws SQLException; 3134 3135 /** 3136 * Retrieves the value of the designated column in the current row 3137 * of this <code>ResultSet</code> object as a <code>NClob</code> object 3138 * in the Java programming language. 3139 * 3140 * @param columnIndex the first column is 1, the second is 2, ... 3141 * @return a <code>NClob</code> object representing the SQL 3142 * <code>NCLOB</code> value in the specified column 3143 * @exception SQLException if the columnIndex is not valid; 3144 * if the driver does not support national 3145 * character sets; if the driver can detect that a data conversion 3146 * error could occur; this method is called on a closed result set 3147 * or if a database access error occurs 3148 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3149 * this method 3150 * @since 1.6 3151 */ getNClob(int columnIndex)3152 NClob getNClob(int columnIndex) throws SQLException; 3153 3154 /** 3155 * Retrieves the value of the designated column in the current row 3156 * of this <code>ResultSet</code> object as a <code>NClob</code> object 3157 * in the Java programming language. 3158 * 3159 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3160 * @return a <code>NClob</code> object representing the SQL <code>NCLOB</code> 3161 * value in the specified column 3162 * @exception SQLException if the columnLabel is not valid; 3163 * if the driver does not support national 3164 * character sets; if the driver can detect that a data conversion 3165 * error could occur; this method is called on a closed result set 3166 * or if a database access error occurs 3167 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3168 * this method 3169 * @since 1.6 3170 */ getNClob(String columnLabel)3171 NClob getNClob(String columnLabel) throws SQLException; 3172 3173 /** 3174 * Retrieves the value of the designated column in the current row of 3175 * this <code>ResultSet</code> as a 3176 * <code>java.sql.SQLXML</code> object in the Java programming language. 3177 * @param columnIndex the first column is 1, the second is 2, ... 3178 * @return a <code>SQLXML</code> object that maps an <code>SQL XML</code> value 3179 * @throws SQLException if the columnIndex is not valid; 3180 * if a database access error occurs 3181 * or this method is called on a closed result set 3182 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3183 * this method 3184 * @since 1.6 3185 */ getSQLXML(int columnIndex)3186 SQLXML getSQLXML(int columnIndex) throws SQLException; 3187 3188 /** 3189 * Retrieves the value of the designated column in the current row of 3190 * this <code>ResultSet</code> as a 3191 * <code>java.sql.SQLXML</code> object in the Java programming language. 3192 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3193 * @return a <code>SQLXML</code> object that maps an <code>SQL XML</code> value 3194 * @throws SQLException if the columnLabel is not valid; 3195 * if a database access error occurs 3196 * or this method is called on a closed result set 3197 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3198 * this method 3199 * @since 1.6 3200 */ getSQLXML(String columnLabel)3201 SQLXML getSQLXML(String columnLabel) throws SQLException; 3202 /** 3203 * Updates the designated column with a <code>java.sql.SQLXML</code> value. 3204 * The updater 3205 * methods are used to update column values in the current row or the insert 3206 * row. The updater methods do not update the underlying database; instead 3207 * the <code>updateRow</code> or <code>insertRow</code> methods are called 3208 * to update the database. 3209 * 3210 * @param columnIndex the first column is 1, the second 2, ... 3211 * @param xmlObject the value for the column to be updated 3212 * @throws SQLException if the columnIndex is not valid; 3213 * if a database access error occurs; this method 3214 * is called on a closed result set; 3215 * the <code>java.xml.transform.Result</code>, 3216 * <code>Writer</code> or <code>OutputStream</code> has not been closed 3217 * for the <code>SQLXML</code> object; 3218 * if there is an error processing the XML value or 3219 * the result set concurrency is <code>CONCUR_READ_ONLY</code>. The <code>getCause</code> method 3220 * of the exception may provide a more detailed exception, for example, if the 3221 * stream does not contain valid XML. 3222 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3223 * this method 3224 * @since 1.6 3225 */ updateSQLXML(int columnIndex, SQLXML xmlObject)3226 void updateSQLXML(int columnIndex, SQLXML xmlObject) throws SQLException; 3227 /** 3228 * Updates the designated column with a <code>java.sql.SQLXML</code> value. 3229 * The updater 3230 * methods are used to update column values in the current row or the insert 3231 * row. The updater methods do not update the underlying database; instead 3232 * the <code>updateRow</code> or <code>insertRow</code> methods are called 3233 * to update the database. 3234 * 3235 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3236 * @param xmlObject the column value 3237 * @throws SQLException if the columnLabel is not valid; 3238 * if a database access error occurs; this method 3239 * is called on a closed result set; 3240 * the <code>java.xml.transform.Result</code>, 3241 * <code>Writer</code> or <code>OutputStream</code> has not been closed 3242 * for the <code>SQLXML</code> object; 3243 * if there is an error processing the XML value or 3244 * the result set concurrency is <code>CONCUR_READ_ONLY</code>. The <code>getCause</code> method 3245 * of the exception may provide a more detailed exception, for example, if the 3246 * stream does not contain valid XML. 3247 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3248 * this method 3249 * @since 1.6 3250 */ updateSQLXML(String columnLabel, SQLXML xmlObject)3251 void updateSQLXML(String columnLabel, SQLXML xmlObject) throws SQLException; 3252 3253 /** 3254 * Retrieves the value of the designated column in the current row 3255 * of this <code>ResultSet</code> object as 3256 * a <code>String</code> in the Java programming language. 3257 * It is intended for use when 3258 * accessing <code>NCHAR</code>,<code>NVARCHAR</code> 3259 * and <code>LONGNVARCHAR</code> columns. 3260 * 3261 * @param columnIndex the first column is 1, the second is 2, ... 3262 * @return the column value; if the value is SQL <code>NULL</code>, the 3263 * value returned is <code>null</code> 3264 * @exception SQLException if the columnIndex is not valid; 3265 * if a database access error occurs 3266 * or this method is called on a closed result set 3267 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3268 * this method 3269 * @since 1.6 3270 */ getNString(int columnIndex)3271 String getNString(int columnIndex) throws SQLException; 3272 3273 3274 /** 3275 * Retrieves the value of the designated column in the current row 3276 * of this <code>ResultSet</code> object as 3277 * a <code>String</code> in the Java programming language. 3278 * It is intended for use when 3279 * accessing <code>NCHAR</code>,<code>NVARCHAR</code> 3280 * and <code>LONGNVARCHAR</code> columns. 3281 * 3282 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3283 * @return the column value; if the value is SQL <code>NULL</code>, the 3284 * value returned is <code>null</code> 3285 * @exception SQLException if the columnLabel is not valid; 3286 * if a database access error occurs 3287 * or this method is called on a closed result set 3288 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3289 * this method 3290 * @since 1.6 3291 */ getNString(String columnLabel)3292 String getNString(String columnLabel) throws SQLException; 3293 3294 3295 /** 3296 * Retrieves the value of the designated column in the current row 3297 * of this <code>ResultSet</code> object as a 3298 * <code>java.io.Reader</code> object. 3299 * It is intended for use when 3300 * accessing <code>NCHAR</code>,<code>NVARCHAR</code> 3301 * and <code>LONGNVARCHAR</code> columns. 3302 * 3303 * @return a <code>java.io.Reader</code> object that contains the column 3304 * value; if the value is SQL <code>NULL</code>, the value returned is 3305 * <code>null</code> in the Java programming language. 3306 * @param columnIndex the first column is 1, the second is 2, ... 3307 * @exception SQLException if the columnIndex is not valid; 3308 * if a database access error occurs 3309 * or this method is called on a closed result set 3310 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3311 * this method 3312 * @since 1.6 3313 */ getNCharacterStream(int columnIndex)3314 java.io.Reader getNCharacterStream(int columnIndex) throws SQLException; 3315 3316 /** 3317 * Retrieves the value of the designated column in the current row 3318 * of this <code>ResultSet</code> object as a 3319 * <code>java.io.Reader</code> object. 3320 * It is intended for use when 3321 * accessing <code>NCHAR</code>,<code>NVARCHAR</code> 3322 * and <code>LONGNVARCHAR</code> columns. 3323 * 3324 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3325 * @return a <code>java.io.Reader</code> object that contains the column 3326 * value; if the value is SQL <code>NULL</code>, the value returned is 3327 * <code>null</code> in the Java programming language 3328 * @exception SQLException if the columnLabel is not valid; 3329 * if a database access error occurs 3330 * or this method is called on a closed result set 3331 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3332 * this method 3333 * @since 1.6 3334 */ getNCharacterStream(String columnLabel)3335 java.io.Reader getNCharacterStream(String columnLabel) throws SQLException; 3336 3337 /** 3338 * Updates the designated column with a character stream value, which will have 3339 * the specified number of bytes. The 3340 * driver does the necessary conversion from Java character format to 3341 * the national character set in the database. 3342 * It is intended for use when 3343 * updating <code>NCHAR</code>,<code>NVARCHAR</code> 3344 * and <code>LONGNVARCHAR</code> columns. 3345 * <p> 3346 * The updater methods are used to update column values in the 3347 * current row or the insert row. The updater methods do not 3348 * update the underlying database; instead the <code>updateRow</code> or 3349 * <code>insertRow</code> methods are called to update the database. 3350 * 3351 * @param columnIndex the first column is 1, the second is 2, ... 3352 * @param x the new column value 3353 * @param length the length of the stream 3354 * @exception SQLException if the columnIndex is not valid; 3355 * if a database access error occurs; 3356 * the result set concurrency is <code>CONCUR_READ_ONLY</code> or this method is called on a closed result set 3357 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3358 * this method 3359 * @since 1.6 3360 */ updateNCharacterStream(int columnIndex, java.io.Reader x, long length)3361 void updateNCharacterStream(int columnIndex, 3362 java.io.Reader x, 3363 long length) throws SQLException; 3364 3365 /** 3366 * Updates the designated column with a character stream value, which will have 3367 * the specified number of bytes. The 3368 * driver does the necessary conversion from Java character format to 3369 * the national character set in the database. 3370 * It is intended for use when 3371 * updating <code>NCHAR</code>,<code>NVARCHAR</code> 3372 * and <code>LONGNVARCHAR</code> columns. 3373 * <p> 3374 * The updater methods are used to update column values in the 3375 * current row or the insert row. The updater methods do not 3376 * update the underlying database; instead the <code>updateRow</code> or 3377 * <code>insertRow</code> methods are called to update the database. 3378 * 3379 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3380 * @param reader the <code>java.io.Reader</code> object containing 3381 * the new column value 3382 * @param length the length of the stream 3383 * @exception SQLException if the columnLabel is not valid; 3384 * if a database access error occurs; 3385 * the result set concurrency is <code>CONCUR_READ_ONLY</code> or this method is called on a closed result set 3386 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3387 * this method 3388 * @since 1.6 3389 */ updateNCharacterStream(String columnLabel, java.io.Reader reader, long length)3390 void updateNCharacterStream(String columnLabel, 3391 java.io.Reader reader, 3392 long length) throws SQLException; 3393 /** 3394 * Updates the designated column with an ascii stream value, which will have 3395 * the specified number of bytes. 3396 * <p> 3397 * The updater methods are used to update column values in the 3398 * current row or the insert row. The updater methods do not 3399 * update the underlying database; instead the <code>updateRow</code> or 3400 * <code>insertRow</code> methods are called to update the database. 3401 * 3402 * @param columnIndex the first column is 1, the second is 2, ... 3403 * @param x the new column value 3404 * @param length the length of the stream 3405 * @exception SQLException if the columnIndex is not valid; 3406 * if a database access error occurs; 3407 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3408 * or this method is called on a closed result set 3409 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3410 * this method 3411 * @since 1.6 3412 */ updateAsciiStream(int columnIndex, java.io.InputStream x, long length)3413 void updateAsciiStream(int columnIndex, 3414 java.io.InputStream x, 3415 long length) throws SQLException; 3416 3417 /** 3418 * Updates the designated column with a binary stream value, which will have 3419 * the specified number of bytes. 3420 * <p> 3421 * The updater methods are used to update column values in the 3422 * current row or the insert row. The updater methods do not 3423 * update the underlying database; instead the <code>updateRow</code> or 3424 * <code>insertRow</code> methods are called to update the database. 3425 * 3426 * @param columnIndex the first column is 1, the second is 2, ... 3427 * @param x the new column value 3428 * @param length the length of the stream 3429 * @exception SQLException if the columnIndex is not valid; 3430 * if a database access error occurs; 3431 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3432 * or this method is called on a closed result set 3433 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3434 * this method 3435 * @since 1.6 3436 */ updateBinaryStream(int columnIndex, java.io.InputStream x, long length)3437 void updateBinaryStream(int columnIndex, 3438 java.io.InputStream x, 3439 long length) throws SQLException; 3440 3441 /** 3442 * Updates the designated column with a character stream value, which will have 3443 * the specified number of bytes. 3444 * <p> 3445 * The updater methods are used to update column values in the 3446 * current row or the insert row. The updater methods do not 3447 * update the underlying database; instead the <code>updateRow</code> or 3448 * <code>insertRow</code> methods are called to update the database. 3449 * 3450 * @param columnIndex the first column is 1, the second is 2, ... 3451 * @param x the new column value 3452 * @param length the length of the stream 3453 * @exception SQLException if the columnIndex is not valid; 3454 * if a database access error occurs; 3455 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3456 * or this method is called on a closed result set 3457 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3458 * this method 3459 * @since 1.6 3460 */ updateCharacterStream(int columnIndex, java.io.Reader x, long length)3461 void updateCharacterStream(int columnIndex, 3462 java.io.Reader x, 3463 long length) throws SQLException; 3464 /** 3465 * Updates the designated column with an ascii stream value, which will have 3466 * the specified number of bytes. 3467 * <p> 3468 * The updater methods are used to update column values in the 3469 * current row or the insert row. The updater methods do not 3470 * update the underlying database; instead the <code>updateRow</code> or 3471 * <code>insertRow</code> methods are called to update the database. 3472 * 3473 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3474 * @param x the new column value 3475 * @param length the length of the stream 3476 * @exception SQLException if the columnLabel is not valid; 3477 * if a database access error occurs; 3478 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3479 * or this method is called on a closed result set 3480 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3481 * this method 3482 * @since 1.6 3483 */ updateAsciiStream(String columnLabel, java.io.InputStream x, long length)3484 void updateAsciiStream(String columnLabel, 3485 java.io.InputStream x, 3486 long length) throws SQLException; 3487 3488 /** 3489 * Updates the designated column with a binary stream value, which will have 3490 * the specified number of bytes. 3491 * <p> 3492 * The updater methods are used to update column values in the 3493 * current row or the insert row. The updater methods do not 3494 * update the underlying database; instead the <code>updateRow</code> or 3495 * <code>insertRow</code> methods are called to update the database. 3496 * 3497 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3498 * @param x the new column value 3499 * @param length the length of the stream 3500 * @exception SQLException if the columnLabel is not valid; 3501 * if a database access error occurs; 3502 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3503 * or this method is called on a closed result set 3504 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3505 * this method 3506 * @since 1.6 3507 */ updateBinaryStream(String columnLabel, java.io.InputStream x, long length)3508 void updateBinaryStream(String columnLabel, 3509 java.io.InputStream x, 3510 long length) throws SQLException; 3511 3512 /** 3513 * Updates the designated column with a character stream value, which will have 3514 * the specified number of bytes. 3515 * <p> 3516 * The updater methods are used to update column values in the 3517 * current row or the insert row. The updater methods do not 3518 * update the underlying database; instead the <code>updateRow</code> or 3519 * <code>insertRow</code> methods are called to update the database. 3520 * 3521 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3522 * @param reader the <code>java.io.Reader</code> object containing 3523 * the new column value 3524 * @param length the length of the stream 3525 * @exception SQLException if the columnLabel is not valid; 3526 * if a database access error occurs; 3527 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3528 * or this method is called on a closed result set 3529 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3530 * this method 3531 * @since 1.6 3532 */ updateCharacterStream(String columnLabel, java.io.Reader reader, long length)3533 void updateCharacterStream(String columnLabel, 3534 java.io.Reader reader, 3535 long length) throws SQLException; 3536 /** 3537 * Updates the designated column using the given input stream, which 3538 * will have the specified number of bytes. 3539 * 3540 * <p> 3541 * The updater methods are used to update column values in the 3542 * current row or the insert row. The updater methods do not 3543 * update the underlying database; instead the <code>updateRow</code> or 3544 * <code>insertRow</code> methods are called to update the database. 3545 * 3546 * @param columnIndex the first column is 1, the second is 2, ... 3547 * @param inputStream An object that contains the data to set the parameter 3548 * value to. 3549 * @param length the number of bytes in the parameter data. 3550 * @exception SQLException if the columnIndex is not valid; 3551 * if a database access error occurs; 3552 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3553 * or this method is called on a closed result set 3554 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3555 * this method 3556 * @since 1.6 3557 */ updateBlob(int columnIndex, InputStream inputStream, long length)3558 void updateBlob(int columnIndex, InputStream inputStream, long length) throws SQLException; 3559 3560 /** 3561 * Updates the designated column using the given input stream, which 3562 * will have the specified number of bytes. 3563 * 3564 * <p> 3565 * The updater methods are used to update column values in the 3566 * current row or the insert row. The updater methods do not 3567 * update the underlying database; instead the <code>updateRow</code> or 3568 * <code>insertRow</code> methods are called to update the database. 3569 * 3570 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3571 * @param inputStream An object that contains the data to set the parameter 3572 * value to. 3573 * @param length the number of bytes in the parameter data. 3574 * @exception SQLException if the columnLabel is not valid; 3575 * if a database access error occurs; 3576 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3577 * or this method is called on a closed result set 3578 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3579 * this method 3580 * @since 1.6 3581 */ updateBlob(String columnLabel, InputStream inputStream, long length)3582 void updateBlob(String columnLabel, InputStream inputStream, long length) throws SQLException; 3583 3584 /** 3585 * Updates the designated column using the given <code>Reader</code> 3586 * object, which is the given number of characters long. 3587 * When a very large UNICODE value is input to a <code>LONGVARCHAR</code> 3588 * parameter, it may be more practical to send it via a 3589 * <code>java.io.Reader</code> object. The JDBC driver will 3590 * do any necessary conversion from UNICODE to the database char format. 3591 * 3592 * <p> 3593 * The updater methods are used to update column values in the 3594 * current row or the insert row. The updater methods do not 3595 * update the underlying database; instead the <code>updateRow</code> or 3596 * <code>insertRow</code> methods are called to update the database. 3597 * 3598 * @param columnIndex the first column is 1, the second is 2, ... 3599 * @param reader An object that contains the data to set the parameter value to. 3600 * @param length the number of characters in the parameter data. 3601 * @exception SQLException if the columnIndex is not valid; 3602 * if a database access error occurs; 3603 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3604 * or this method is called on a closed result set 3605 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3606 * this method 3607 * @since 1.6 3608 */ updateClob(int columnIndex, Reader reader, long length)3609 void updateClob(int columnIndex, Reader reader, long length) throws SQLException; 3610 3611 /** 3612 * Updates the designated column using the given <code>Reader</code> 3613 * object, which is the given number of characters long. 3614 * When a very large UNICODE value is input to a <code>LONGVARCHAR</code> 3615 * parameter, it may be more practical to send it via a 3616 * <code>java.io.Reader</code> object. The JDBC driver will 3617 * do any necessary conversion from UNICODE to the database char format. 3618 * 3619 * <p> 3620 * The updater methods are used to update column values in the 3621 * current row or the insert row. The updater methods do not 3622 * update the underlying database; instead the <code>updateRow</code> or 3623 * <code>insertRow</code> methods are called to update the database. 3624 * 3625 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3626 * @param reader An object that contains the data to set the parameter value to. 3627 * @param length the number of characters in the parameter data. 3628 * @exception SQLException if the columnLabel is not valid; 3629 * if a database access error occurs; 3630 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3631 * or this method is called on a closed result set 3632 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3633 * this method 3634 * @since 1.6 3635 */ updateClob(String columnLabel, Reader reader, long length)3636 void updateClob(String columnLabel, Reader reader, long length) throws SQLException; 3637 /** 3638 * Updates the designated column using the given <code>Reader</code> 3639 * object, which is the given number of characters long. 3640 * When a very large UNICODE value is input to a <code>LONGVARCHAR</code> 3641 * parameter, it may be more practical to send it via a 3642 * <code>java.io.Reader</code> object. The JDBC driver will 3643 * do any necessary conversion from UNICODE to the database char format. 3644 * 3645 * <p> 3646 * The updater methods are used to update column values in the 3647 * current row or the insert row. The updater methods do not 3648 * update the underlying database; instead the <code>updateRow</code> or 3649 * <code>insertRow</code> methods are called to update the database. 3650 * 3651 * @param columnIndex the first column is 1, the second 2, ... 3652 * @param reader An object that contains the data to set the parameter value to. 3653 * @param length the number of characters in the parameter data. 3654 * @throws SQLException if the columnIndex is not valid; 3655 * if the driver does not support national 3656 * character sets; if the driver can detect that a data conversion 3657 * error could occur; this method is called on a closed result set, 3658 * if a database access error occurs or 3659 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3660 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3661 * this method 3662 * @since 1.6 3663 */ updateNClob(int columnIndex, Reader reader, long length)3664 void updateNClob(int columnIndex, Reader reader, long length) throws SQLException; 3665 3666 /** 3667 * Updates the designated column using the given <code>Reader</code> 3668 * object, which is the given number of characters long. 3669 * When a very large UNICODE value is input to a <code>LONGVARCHAR</code> 3670 * parameter, it may be more practical to send it via a 3671 * <code>java.io.Reader</code> object. The JDBC driver will 3672 * do any necessary conversion from UNICODE to the database char format. 3673 * 3674 * <p> 3675 * The updater methods are used to update column values in the 3676 * current row or the insert row. The updater methods do not 3677 * update the underlying database; instead the <code>updateRow</code> or 3678 * <code>insertRow</code> methods are called to update the database. 3679 * 3680 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3681 * @param reader An object that contains the data to set the parameter value to. 3682 * @param length the number of characters in the parameter data. 3683 * @throws SQLException if the columnLabel is not valid; 3684 * if the driver does not support national 3685 * character sets; if the driver can detect that a data conversion 3686 * error could occur; this method is called on a closed result set; 3687 * if a database access error occurs or 3688 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3689 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3690 * this method 3691 * @since 1.6 3692 */ updateNClob(String columnLabel, Reader reader, long length)3693 void updateNClob(String columnLabel, Reader reader, long length) throws SQLException; 3694 3695 //--- 3696 3697 /** 3698 * Updates the designated column with a character stream value. 3699 * The data will be read from the stream 3700 * as needed until end-of-stream is reached. The 3701 * driver does the necessary conversion from Java character format to 3702 * the national character set in the database. 3703 * It is intended for use when 3704 * updating <code>NCHAR</code>,<code>NVARCHAR</code> 3705 * and <code>LONGNVARCHAR</code> columns. 3706 * <p> 3707 * The updater methods are used to update column values in the 3708 * current row or the insert row. The updater methods do not 3709 * update the underlying database; instead the <code>updateRow</code> or 3710 * <code>insertRow</code> methods are called to update the database. 3711 * 3712 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if 3713 * it might be more efficient to use a version of 3714 * <code>updateNCharacterStream</code> which takes a length parameter. 3715 * 3716 * @param columnIndex the first column is 1, the second is 2, ... 3717 * @param x the new column value 3718 * @exception SQLException if the columnIndex is not valid; 3719 * if a database access error occurs; 3720 * the result set concurrency is <code>CONCUR_READ_ONLY</code> or this method is called on a closed result set 3721 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3722 * this method 3723 * @since 1.6 3724 */ updateNCharacterStream(int columnIndex, java.io.Reader x)3725 void updateNCharacterStream(int columnIndex, 3726 java.io.Reader x) throws SQLException; 3727 3728 /** 3729 * Updates the designated column with a character stream value. 3730 * The data will be read from the stream 3731 * as needed until end-of-stream is reached. The 3732 * driver does the necessary conversion from Java character format to 3733 * the national character set in the database. 3734 * It is intended for use when 3735 * updating <code>NCHAR</code>,<code>NVARCHAR</code> 3736 * and <code>LONGNVARCHAR</code> columns. 3737 * <p> 3738 * The updater methods are used to update column values in the 3739 * current row or the insert row. The updater methods do not 3740 * update the underlying database; instead the <code>updateRow</code> or 3741 * <code>insertRow</code> methods are called to update the database. 3742 * 3743 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if 3744 * it might be more efficient to use a version of 3745 * <code>updateNCharacterStream</code> which takes a length parameter. 3746 * 3747 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3748 * @param reader the <code>java.io.Reader</code> object containing 3749 * the new column value 3750 * @exception SQLException if the columnLabel is not valid; 3751 * if a database access error occurs; 3752 * the result set concurrency is <code>CONCUR_READ_ONLY</code> or this method is called on a closed result set 3753 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3754 * this method 3755 * @since 1.6 3756 */ updateNCharacterStream(String columnLabel, java.io.Reader reader)3757 void updateNCharacterStream(String columnLabel, 3758 java.io.Reader reader) throws SQLException; 3759 /** 3760 * Updates the designated column with an ascii stream value. 3761 * The data will be read from the stream 3762 * as needed until end-of-stream is reached. 3763 * <p> 3764 * The updater methods are used to update column values in the 3765 * current row or the insert row. The updater methods do not 3766 * update the underlying database; instead the <code>updateRow</code> or 3767 * <code>insertRow</code> methods are called to update the database. 3768 * 3769 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if 3770 * it might be more efficient to use a version of 3771 * <code>updateAsciiStream</code> which takes a length parameter. 3772 * 3773 * @param columnIndex the first column is 1, the second is 2, ... 3774 * @param x the new column value 3775 * @exception SQLException if the columnIndex is not valid; 3776 * if a database access error occurs; 3777 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3778 * or this method is called on a closed result set 3779 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3780 * this method 3781 * @since 1.6 3782 */ updateAsciiStream(int columnIndex, java.io.InputStream x)3783 void updateAsciiStream(int columnIndex, 3784 java.io.InputStream x) throws SQLException; 3785 3786 /** 3787 * Updates the designated column with a binary stream value. 3788 * The data will be read from the stream 3789 * as needed until end-of-stream is reached. 3790 * <p> 3791 * The updater methods are used to update column values in the 3792 * current row or the insert row. The updater methods do not 3793 * update the underlying database; instead the <code>updateRow</code> or 3794 * <code>insertRow</code> methods are called to update the database. 3795 * 3796 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if 3797 * it might be more efficient to use a version of 3798 * <code>updateBinaryStream</code> which takes a length parameter. 3799 * 3800 * @param columnIndex the first column is 1, the second is 2, ... 3801 * @param x the new column value 3802 * @exception SQLException if the columnIndex is not valid; 3803 * if a database access error occurs; 3804 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3805 * or this method is called on a closed result set 3806 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3807 * this method 3808 * @since 1.6 3809 */ updateBinaryStream(int columnIndex, java.io.InputStream x)3810 void updateBinaryStream(int columnIndex, 3811 java.io.InputStream x) throws SQLException; 3812 3813 /** 3814 * Updates the designated column with a character stream value. 3815 * The data will be read from the stream 3816 * as needed until end-of-stream is reached. 3817 * <p> 3818 * The updater methods are used to update column values in the 3819 * current row or the insert row. The updater methods do not 3820 * update the underlying database; instead the <code>updateRow</code> or 3821 * <code>insertRow</code> methods are called to update the database. 3822 * 3823 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if 3824 * it might be more efficient to use a version of 3825 * <code>updateCharacterStream</code> which takes a length parameter. 3826 * 3827 * @param columnIndex the first column is 1, the second is 2, ... 3828 * @param x the new column value 3829 * @exception SQLException if the columnIndex is not valid; 3830 * if a database access error occurs; 3831 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3832 * or this method is called on a closed result set 3833 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3834 * this method 3835 * @since 1.6 3836 */ updateCharacterStream(int columnIndex, java.io.Reader x)3837 void updateCharacterStream(int columnIndex, 3838 java.io.Reader x) throws SQLException; 3839 /** 3840 * Updates the designated column with an ascii stream value. 3841 * The data will be read from the stream 3842 * as needed until end-of-stream is reached. 3843 * <p> 3844 * The updater methods are used to update column values in the 3845 * current row or the insert row. The updater methods do not 3846 * update the underlying database; instead the <code>updateRow</code> or 3847 * <code>insertRow</code> methods are called to update the database. 3848 * 3849 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if 3850 * it might be more efficient to use a version of 3851 * <code>updateAsciiStream</code> which takes a length parameter. 3852 * 3853 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3854 * @param x the new column value 3855 * @exception SQLException if the columnLabel is not valid; 3856 * if a database access error occurs; 3857 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3858 * or this method is called on a closed result set 3859 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3860 * this method 3861 * @since 1.6 3862 */ updateAsciiStream(String columnLabel, java.io.InputStream x)3863 void updateAsciiStream(String columnLabel, 3864 java.io.InputStream x) throws SQLException; 3865 3866 /** 3867 * Updates the designated column with a binary stream value. 3868 * The data will be read from the stream 3869 * as needed until end-of-stream is reached. 3870 * <p> 3871 * The updater methods are used to update column values in the 3872 * current row or the insert row. The updater methods do not 3873 * update the underlying database; instead the <code>updateRow</code> or 3874 * <code>insertRow</code> methods are called to update the database. 3875 * 3876 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if 3877 * it might be more efficient to use a version of 3878 * <code>updateBinaryStream</code> which takes a length parameter. 3879 * 3880 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3881 * @param x the new column value 3882 * @exception SQLException if the columnLabel is not valid; 3883 * if a database access error occurs; 3884 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3885 * or this method is called on a closed result set 3886 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3887 * this method 3888 * @since 1.6 3889 */ updateBinaryStream(String columnLabel, java.io.InputStream x)3890 void updateBinaryStream(String columnLabel, 3891 java.io.InputStream x) throws SQLException; 3892 3893 /** 3894 * Updates the designated column with a character stream value. 3895 * The data will be read from the stream 3896 * as needed until end-of-stream is reached. 3897 * <p> 3898 * The updater methods are used to update column values in the 3899 * current row or the insert row. The updater methods do not 3900 * update the underlying database; instead the <code>updateRow</code> or 3901 * <code>insertRow</code> methods are called to update the database. 3902 * 3903 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if 3904 * it might be more efficient to use a version of 3905 * <code>updateCharacterStream</code> which takes a length parameter. 3906 * 3907 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3908 * @param reader the <code>java.io.Reader</code> object containing 3909 * the new column value 3910 * @exception SQLException if the columnLabel is not valid; if a database access error occurs; 3911 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3912 * or this method is called on a closed result set 3913 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3914 * this method 3915 * @since 1.6 3916 */ updateCharacterStream(String columnLabel, java.io.Reader reader)3917 void updateCharacterStream(String columnLabel, 3918 java.io.Reader reader) throws SQLException; 3919 /** 3920 * Updates the designated column using the given input stream. The data will be read from the stream 3921 * as needed until end-of-stream is reached. 3922 * <p> 3923 * The updater methods are used to update column values in the 3924 * current row or the insert row. The updater methods do not 3925 * update the underlying database; instead the <code>updateRow</code> or 3926 * <code>insertRow</code> methods are called to update the database. 3927 * 3928 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if 3929 * it might be more efficient to use a version of 3930 * <code>updateBlob</code> which takes a length parameter. 3931 * 3932 * @param columnIndex the first column is 1, the second is 2, ... 3933 * @param inputStream An object that contains the data to set the parameter 3934 * value to. 3935 * @exception SQLException if the columnIndex is not valid; if a database access error occurs; 3936 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3937 * or this method is called on a closed result set 3938 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3939 * this method 3940 * @since 1.6 3941 */ updateBlob(int columnIndex, InputStream inputStream)3942 void updateBlob(int columnIndex, InputStream inputStream) throws SQLException; 3943 3944 /** 3945 * Updates the designated column using the given input stream. The data will be read from the stream 3946 * as needed until end-of-stream is reached. 3947 * <p> 3948 * The updater methods are used to update column values in the 3949 * current row or the insert row. The updater methods do not 3950 * update the underlying database; instead the <code>updateRow</code> or 3951 * <code>insertRow</code> methods are called to update the database. 3952 * 3953 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if 3954 * it might be more efficient to use a version of 3955 * <code>updateBlob</code> which takes a length parameter. 3956 * 3957 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 3958 * @param inputStream An object that contains the data to set the parameter 3959 * value to. 3960 * @exception SQLException if the columnLabel is not valid; if a database access error occurs; 3961 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3962 * or this method is called on a closed result set 3963 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3964 * this method 3965 * @since 1.6 3966 */ updateBlob(String columnLabel, InputStream inputStream)3967 void updateBlob(String columnLabel, InputStream inputStream) throws SQLException; 3968 3969 /** 3970 * Updates the designated column using the given <code>Reader</code> 3971 * object. 3972 * The data will be read from the stream 3973 * as needed until end-of-stream is reached. The JDBC driver will 3974 * do any necessary conversion from UNICODE to the database char format. 3975 * 3976 * <p> 3977 * The updater methods are used to update column values in the 3978 * current row or the insert row. The updater methods do not 3979 * update the underlying database; instead the <code>updateRow</code> or 3980 * <code>insertRow</code> methods are called to update the database. 3981 * 3982 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if 3983 * it might be more efficient to use a version of 3984 * <code>updateClob</code> which takes a length parameter. 3985 * 3986 * @param columnIndex the first column is 1, the second is 2, ... 3987 * @param reader An object that contains the data to set the parameter value to. 3988 * @exception SQLException if the columnIndex is not valid; 3989 * if a database access error occurs; 3990 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 3991 * or this method is called on a closed result set 3992 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 3993 * this method 3994 * @since 1.6 3995 */ updateClob(int columnIndex, Reader reader)3996 void updateClob(int columnIndex, Reader reader) throws SQLException; 3997 3998 /** 3999 * Updates the designated column using the given <code>Reader</code> 4000 * object. 4001 * The data will be read from the stream 4002 * as needed until end-of-stream is reached. The JDBC driver will 4003 * do any necessary conversion from UNICODE to the database char format. 4004 * 4005 * <p> 4006 * The updater methods are used to update column values in the 4007 * current row or the insert row. The updater methods do not 4008 * update the underlying database; instead the <code>updateRow</code> or 4009 * <code>insertRow</code> methods are called to update the database. 4010 * 4011 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if 4012 * it might be more efficient to use a version of 4013 * <code>updateClob</code> which takes a length parameter. 4014 * 4015 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 4016 * @param reader An object that contains the data to set the parameter value to. 4017 * @exception SQLException if the columnLabel is not valid; if a database access error occurs; 4018 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 4019 * or this method is called on a closed result set 4020 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 4021 * this method 4022 * @since 1.6 4023 */ updateClob(String columnLabel, Reader reader)4024 void updateClob(String columnLabel, Reader reader) throws SQLException; 4025 /** 4026 * Updates the designated column using the given <code>Reader</code> 4027 * 4028 * The data will be read from the stream 4029 * as needed until end-of-stream is reached. The JDBC driver will 4030 * do any necessary conversion from UNICODE to the database char format. 4031 * 4032 * <p> 4033 * The updater methods are used to update column values in the 4034 * current row or the insert row. The updater methods do not 4035 * update the underlying database; instead the <code>updateRow</code> or 4036 * <code>insertRow</code> methods are called to update the database. 4037 * 4038 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if 4039 * it might be more efficient to use a version of 4040 * <code>updateNClob</code> which takes a length parameter. 4041 * 4042 * @param columnIndex the first column is 1, the second 2, ... 4043 * @param reader An object that contains the data to set the parameter value to. 4044 * @throws SQLException if the columnIndex is not valid; 4045 * if the driver does not support national 4046 * character sets; if the driver can detect that a data conversion 4047 * error could occur; this method is called on a closed result set, 4048 * if a database access error occurs or 4049 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 4050 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 4051 * this method 4052 * @since 1.6 4053 */ updateNClob(int columnIndex, Reader reader)4054 void updateNClob(int columnIndex, Reader reader) throws SQLException; 4055 4056 /** 4057 * Updates the designated column using the given <code>Reader</code> 4058 * object. 4059 * The data will be read from the stream 4060 * as needed until end-of-stream is reached. The JDBC driver will 4061 * do any necessary conversion from UNICODE to the database char format. 4062 * 4063 * <p> 4064 * The updater methods are used to update column values in the 4065 * current row or the insert row. The updater methods do not 4066 * update the underlying database; instead the <code>updateRow</code> or 4067 * <code>insertRow</code> methods are called to update the database. 4068 * 4069 * <P><B>Note:</B> Consult your JDBC driver documentation to determine if 4070 * it might be more efficient to use a version of 4071 * <code>updateNClob</code> which takes a length parameter. 4072 * 4073 * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column 4074 * @param reader An object that contains the data to set the parameter value to. 4075 * @throws SQLException if the columnLabel is not valid; if the driver does not support national 4076 * character sets; if the driver can detect that a data conversion 4077 * error could occur; this method is called on a closed result set; 4078 * if a database access error occurs or 4079 * the result set concurrency is <code>CONCUR_READ_ONLY</code> 4080 * @exception SQLFeatureNotSupportedException if the JDBC driver does not support 4081 * this method 4082 * @since 1.6 4083 */ updateNClob(String columnLabel, Reader reader)4084 void updateNClob(String columnLabel, Reader reader) throws SQLException; 4085 4086 //------------------------- JDBC 4.1 ----------------------------------- 4087 4088 4089 /** 4090 *<p>Retrieves the value of the designated column in the current row 4091 * of this <code>ResultSet</code> object and will convert from the 4092 * SQL type of the column to the requested Java data type, if the 4093 * conversion is supported. If the conversion is not 4094 * supported or null is specified for the type, a 4095 * <code>SQLException</code> is thrown. 4096 *<p> 4097 * At a minimum, an implementation must support the conversions defined in 4098 * Appendix B, Table B-3 and conversion of appropriate user defined SQL 4099 * types to a Java type which implements {@code SQLData}, or {@code Struct}. 4100 * Additional conversions may be supported and are vendor defined. 4101 * @param <T> the type of the class modeled by this Class object 4102 * @param columnIndex the first column is 1, the second is 2, ... 4103 * @param type Class representing the Java data type to convert the designated 4104 * column to. 4105 * @return an instance of {@code type} holding the column value 4106 * @throws SQLException if conversion is not supported, type is null or 4107 * another error occurs. The getCause() method of the 4108 * exception may provide a more detailed exception, for example, if 4109 * a conversion error occurs 4110 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support 4111 * this method 4112 * @since 1.7 4113 */ getObject(int columnIndex, Class<T> type)4114 public <T> T getObject(int columnIndex, Class<T> type) throws SQLException; 4115 4116 4117 /** 4118 *<p>Retrieves the value of the designated column in the current row 4119 * of this <code>ResultSet</code> object and will convert from the 4120 * SQL type of the column to the requested Java data type, if the 4121 * conversion is supported. If the conversion is not 4122 * supported or null is specified for the type, a 4123 * <code>SQLException</code> is thrown. 4124 *<p> 4125 * At a minimum, an implementation must support the conversions defined in 4126 * Appendix B, Table B-3 and conversion of appropriate user defined SQL 4127 * types to a Java type which implements {@code SQLData}, or {@code Struct}. 4128 * Additional conversions may be supported and are vendor defined. 4129 * 4130 * @param columnLabel the label for the column specified with the SQL AS clause. 4131 * If the SQL AS clause was not specified, then the label is the name 4132 * of the column 4133 * @param type Class representing the Java data type to convert the designated 4134 * column to. 4135 * @param <T> the type of the class modeled by this Class object 4136 * @return an instance of {@code type} holding the column value 4137 * @throws SQLException if conversion is not supported, type is null or 4138 * another error occurs. The getCause() method of the 4139 * exception may provide a more detailed exception, for example, if 4140 * a conversion error occurs 4141 * @throws SQLFeatureNotSupportedException if the JDBC driver does not support 4142 * this method 4143 * @since 1.7 4144 */ getObject(String columnLabel, Class<T> type)4145 public <T> T getObject(String columnLabel, Class<T> type) throws SQLException; 4146 4147 //------------------------- JDBC 4.2 ----------------------------------- 4148 4149 /** 4150 * Updates the designated column with an {@code Object} value. 4151 * 4152 * The updater methods are used to update column values in the 4153 * current row or the insert row. The updater methods do not 4154 * update the underlying database; instead the {@code updateRow} or 4155 * {@code insertRow} methods are called to update the database. 4156 *<p> 4157 * If the second argument is an {@code InputStream} then the stream must contain 4158 * the number of bytes specified by scaleOrLength. If the second argument is a 4159 * {@code Reader} then the reader must contain the number of characters specified 4160 * by scaleOrLength. If these conditions are not true the driver will generate a 4161 * {@code SQLException} when the statement is executed. 4162 *<p> 4163 * The default implementation will throw {@code SQLFeatureNotSupportedException} 4164 * 4165 * @param columnIndex the first column is 1, the second is 2, ... 4166 * @param x the new column value 4167 * @param targetSqlType the SQL type to be sent to the database 4168 * @param scaleOrLength for an object of {@code java.math.BigDecimal} , 4169 * this is the number of digits after the decimal point. For 4170 * Java Object types {@code InputStream} and {@code Reader}, 4171 * this is the length 4172 * of the data in the stream or reader. For all other types, 4173 * this value will be ignored. 4174 * @exception SQLException if the columnIndex is not valid; 4175 * if a database access error occurs; 4176 * the result set concurrency is {@code CONCUR_READ_ONLY} 4177 * or this method is called on a closed result set 4178 * @exception SQLFeatureNotSupportedException if the JDBC driver does not 4179 * support this method; if the JDBC driver does not support the specified targetSqlType 4180 * @see JDBCType 4181 * @see SQLType 4182 * @since 1.8 4183 */ updateObject(int columnIndex, Object x, SQLType targetSqlType, int scaleOrLength)4184 default void updateObject(int columnIndex, Object x, 4185 SQLType targetSqlType, int scaleOrLength) throws SQLException { 4186 throw new SQLFeatureNotSupportedException("updateObject not implemented"); 4187 } 4188 4189 /** 4190 * Updates the designated column with an {@code Object} value. 4191 * 4192 * The updater methods are used to update column values in the 4193 * current row or the insert row. The updater methods do not 4194 * update the underlying database; instead the {@code updateRow} or 4195 * {@code insertRow} methods are called to update the database. 4196 *<p> 4197 * If the second argument is an {@code InputStream} then the stream must 4198 * contain number of bytes specified by scaleOrLength. If the second 4199 * argument is a {@code Reader} then the reader must contain the number 4200 * of characters specified by scaleOrLength. If these conditions are not 4201 * true the driver will generate a 4202 * {@code SQLException} when the statement is executed. 4203 *<p> 4204 * The default implementation will throw {@code SQLFeatureNotSupportedException} 4205 * 4206 * @param columnLabel the label for the column specified with the SQL AS 4207 * clause. If the SQL AS clause was not specified, then the label is 4208 * the name of the column 4209 * @param x the new column value 4210 * @param targetSqlType the SQL type to be sent to the database 4211 * @param scaleOrLength for an object of {@code java.math.BigDecimal} , 4212 * this is the number of digits after the decimal point. For 4213 * Java Object types {@code InputStream} and {@code Reader}, 4214 * this is the length 4215 * of the data in the stream or reader. For all other types, 4216 * this value will be ignored. 4217 * @exception SQLException if the columnLabel is not valid; 4218 * if a database access error occurs; 4219 * the result set concurrency is {@code CONCUR_READ_ONLY} 4220 * or this method is called on a closed result set 4221 * @exception SQLFeatureNotSupportedException if the JDBC driver does not 4222 * support this method; if the JDBC driver does not support the specified targetSqlType 4223 * @see JDBCType 4224 * @see SQLType 4225 * @since 1.8 4226 */ updateObject(String columnLabel, Object x, SQLType targetSqlType, int scaleOrLength)4227 default void updateObject(String columnLabel, Object x, 4228 SQLType targetSqlType, int scaleOrLength) throws SQLException { 4229 throw new SQLFeatureNotSupportedException("updateObject not implemented"); 4230 } 4231 4232 /** 4233 * Updates the designated column with an {@code Object} value. 4234 * 4235 * The updater methods are used to update column values in the 4236 * current row or the insert row. The updater methods do not 4237 * update the underlying database; instead the {@code updateRow} or 4238 * {@code insertRow} methods are called to update the database. 4239 *<p> 4240 * The default implementation will throw {@code SQLFeatureNotSupportedException} 4241 * 4242 * @param columnIndex the first column is 1, the second is 2, ... 4243 * @param x the new column value 4244 * @param targetSqlType the SQL type to be sent to the database 4245 * @exception SQLException if the columnIndex is not valid; 4246 * if a database access error occurs; 4247 * the result set concurrency is {@code CONCUR_READ_ONLY} 4248 * or this method is called on a closed result set 4249 * @exception SQLFeatureNotSupportedException if the JDBC driver does not 4250 * support this method; if the JDBC driver does not support the specified targetSqlType 4251 * @see JDBCType 4252 * @see SQLType 4253 * @since 1.8 4254 */ updateObject(int columnIndex, Object x, SQLType targetSqlType)4255 default void updateObject(int columnIndex, Object x, SQLType targetSqlType) 4256 throws SQLException { 4257 throw new SQLFeatureNotSupportedException("updateObject not implemented"); 4258 } 4259 4260 /** 4261 * Updates the designated column with an {@code Object} value. 4262 * 4263 * The updater methods are used to update column values in the 4264 * current row or the insert row. The updater methods do not 4265 * update the underlying database; instead the {@code updateRow} or 4266 * {@code insertRow} methods are called to update the database. 4267 *<p> 4268 * The default implementation will throw {@code SQLFeatureNotSupportedException} 4269 * 4270 * @param columnLabel the label for the column specified with the SQL AS 4271 * clause. If the SQL AS clause was not specified, then the label is 4272 * the name of the column 4273 * @param x the new column value 4274 * @param targetSqlType the SQL type to be sent to the database 4275 * @exception SQLException if the columnLabel is not valid; 4276 * if a database access error occurs; 4277 * the result set concurrency is {@code CONCUR_READ_ONLY} 4278 * or this method is called on a closed result set 4279 * @exception SQLFeatureNotSupportedException if the JDBC driver does not 4280 * support this method; if the JDBC driver does not support the specified targetSqlType 4281 * @see JDBCType 4282 * @see SQLType 4283 * @since 1.8 4284 */ updateObject(String columnLabel, Object x, SQLType targetSqlType)4285 default void updateObject(String columnLabel, Object x, 4286 SQLType targetSqlType) throws SQLException { 4287 throw new SQLFeatureNotSupportedException("updateObject not implemented"); 4288 } 4289 } 4290