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