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