Home | History | Annotate | Download | only in sql
      1 /*
      2  * Licensed to the Apache Software Foundation (ASF) under one or more
      3  * contributor license agreements.  See the NOTICE file distributed with
      4  * this work for additional information regarding copyright ownership.
      5  * The ASF licenses this file to You under the Apache License, Version 2.0
      6  * (the "License"); you may not use this file except in compliance with
      7  * the License.  You may obtain a copy of the License at
      8  *
      9  *     http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  */
     17 
     18 package java.sql;
     19 
     20 import java.io.InputStream;
     21 import java.io.Reader;
     22 import java.math.BigDecimal;
     23 import java.net.URL;
     24 import java.util.Calendar;
     25 import java.util.Map;
     26 
     27 /**
     28  * An interface for an object which represents a database table entry, returned
     29  * as the result of the query to the database.
     30  * <p>
     31  * {@code ResultSet}s have a cursor which points to the current data table row.
     32  * When the {@code ResultSet} is created, the cursor's location is one position
     33  * ahead of the first row. To move the cursor to the first and consecutive rows,
     34  * use the {@code next} method. The {@code next} method returns {@code true} as
     35  * long as there are more rows in the {@code ResultSet}, otherwise it returns
     36  * {@code false}.
     37  * <p>
     38  * The default type of {@code ResultSet} can not be updated and its cursor can
     39  * only advance forward through the rows of data. This means that it is only
     40  * possible to read through it once. However, other kinds of {@code ResultSet}
     41  * are implemented: an <i>updatable</i> type and also types where the cursor can
     42  * be <i>scrolled</i> forward and backward through the rows of data. How such a
     43  * {@code ResultSet} is created is demonstrated in the following example:
     44  * <ul>
     45  * <dd>
     46  *         {@code Connection con;}</dd>
     47  * <dd>{@code Statement aStatement = con.createStatement(
     48  * ResultSet.TYPE_SCROLL_SENSITIVE,}{@code ResultSet.CONCUR_UPDATABLE );}</dd>
     49  * <dd>{@code ResultSet theResultSet =
     50  * theStatement.executeQuery("SELECT price, quantity FROM STOCKTABLE");}</dd>
     51  * <dd>{@code // theResultSet is both scrollable and updatable}</dd> </ul>
     52  * <p>
     53  * The {@code ResultSet} interface provides a series of methods for retrieving
     54  * data from columns in the current row, such as {@code getDate} and {@code
     55  * getFloat}. The columns are retrieved either by their index number (starting
     56  * at 1) or by their name - there are separate methods for both techniques of
     57  * column addressing. The column names are case insensitive. If several columns
     58  * have the same name, then the getter methods use the first matching column.
     59  * This means that if column names are used, it is not possible to guarantee
     60  * that the name will retrieve data from the intended column - for certainty it
     61  * is better to use column indexes. Ideally the columns should be read
     62  * left-to-right and read once only, since not all databases are optimized to
     63  * handle other techniques of reading the data.
     64  * <p>
     65  * When reading data via the appropriate getter methods, the JDBC driver maps
     66  * the SQL data retrieved from the database to the Java type implied by the
     67  * method invoked by the application. The JDBC specification has a table for the
     68  * mappings from SQL types to Java types.
     69  * <p>
     70  * There are also methods for writing data into the {@code ResultSet}, such as
     71  * {@code updateInt} and {@code updateString}. The update methods can be used
     72  * either to modify the data of an existing row or to insert new data rows into
     73  * the {@code ResultSet} . Modification of existing data involves moving the
     74  * cursor to the row which needs modification and then using the update methods
     75  * to modify the data, followed by calling the {@code ResultSet.updateRow}
     76  * method. For insertion of new rows, the cursor is first moved to a special row
     77  * called the <i>Insert Row</i>, data is added using the update methods,
     78  * followed by calling the {@code ResultSet.insertRow} method.
     79  * <p>
     80  * A {@code ResultSet} is closed if the statement which generated it closes, the
     81  * statement is executed again, or the same statement's next {@code ResultSet}
     82  * is retrieved (if the statement returned of multiple results).
     83  */
     84 public interface ResultSet extends Wrapper, AutoCloseable {
     85 
     86     /**
     87      * A constant used to indicate that a {@code ResultSet} object must be
     88      * closed when the method {@code Connection.commit} is invoked.
     89      */
     90     public static final int CLOSE_CURSORS_AT_COMMIT = 2;
     91 
     92     /**
     93      * A constant used to indicate that a {@code ResultSet} object must not be
     94      * closed when the method {@code Connection.commit} is invoked.
     95      */
     96     public static final int HOLD_CURSORS_OVER_COMMIT = 1;
     97 
     98     /**
     99      * A constant used to indicate the concurrency mode for a {@code ResultSet}
    100      * object that cannot be updated.
    101      */
    102     public static final int CONCUR_READ_ONLY = 1007;
    103 
    104     /**
    105      * A constant used to indicate the concurrency mode for a {@code ResultSet}
    106      * object that can be updated.
    107      */
    108     public static final int CONCUR_UPDATABLE = 1008;
    109 
    110     /**
    111      * A constant used to indicate processing of the rows of a {@code ResultSet}
    112      * in the forward direction, first to last.
    113      */
    114     public static final int FETCH_FORWARD = 1000;
    115 
    116     /**
    117      * A constant used to indicate processing of the rows of a {@code ResultSet}
    118      * in the reverse direction, last to first.
    119      */
    120     public static final int FETCH_REVERSE = 1001;
    121 
    122     /**
    123      * A constant used to indicate that the order of processing of the rows of a
    124      * {@code ResultSet} is unknown.
    125      */
    126     public static final int FETCH_UNKNOWN = 1002;
    127 
    128     /**
    129      * A constant used to indicate a {@code ResultSet} object whose cursor can
    130      * only move forward.
    131      */
    132     public static final int TYPE_FORWARD_ONLY = 1003;
    133 
    134     /**
    135      * A constant used to indicate a {@code ResultSet} object which is
    136      * scrollable but is insensitive to changes made by others.
    137      */
    138     public static final int TYPE_SCROLL_INSENSITIVE = 1004;
    139 
    140     /**
    141      * A constant used to indicate a {@code ResultSet} object which is
    142      * scrollable and sensitive to changes made by others.
    143      */
    144     public static final int TYPE_SCROLL_SENSITIVE = 1005;
    145 
    146     /**
    147      * Moves the cursor to a specified row number in the {@code ResultSet}.
    148      *
    149      * @param row
    150      *            the index of the row starting at index 1. Index {@code -1}
    151      *            returns the last row.
    152      * @return {@code true} if the new cursor position is on the {@code
    153      *         ResultSet}, {@code false} otherwise.
    154      * @throws SQLException
    155      *             if a database error happens.
    156      */
    157     public boolean absolute(int row) throws SQLException;
    158 
    159     /**
    160      * Moves the cursor to the end of the {@code ResultSet}, after the last row.
    161      *
    162      * @throws SQLException
    163      *             if a database error happens.
    164      */
    165     public void afterLast() throws SQLException;
    166 
    167     /**
    168      * Moves the cursor to the start of the {@code ResultSet}, before the first
    169      * row.
    170      *
    171      * @throws SQLException
    172      *             if a database error happens.
    173      */
    174     public void beforeFirst() throws SQLException;
    175 
    176     /**
    177      * Cancels any updates made to the current row in the {@code ResultSet}.
    178      *
    179      * @throws SQLException
    180      *             if a database error happens.
    181      */
    182     public void cancelRowUpdates() throws SQLException;
    183 
    184     /**
    185      * Clears all warnings related to this {@code ResultSet}.
    186      *
    187      * @throws SQLException
    188      *             if a database error happens.
    189      */
    190     public void clearWarnings() throws SQLException;
    191 
    192     /**
    193      * Releases this {@code ResultSet}'s database and JDBC resources. You are
    194      * strongly advised to use this method rather than relying on the release
    195      * being done when the {@code ResultSet}'s finalize method is called during
    196      * garbage collection process. Note that the {@code close()} method might
    197      * take some time to complete since it is dependent on the behavior of the
    198      * connection to the database and the database itself.
    199      *
    200      * @throws SQLException
    201      *             if a database error happens.
    202      */
    203     public void close() throws SQLException;
    204 
    205     /**
    206      * Deletes the current row from the {@code ResultSet} and from the
    207      * underlying database.
    208      *
    209      * @throws SQLException
    210      *             if a database error happens.
    211      */
    212     public void deleteRow() throws SQLException;
    213 
    214     /**
    215      * Gets the index number for a column in the {@code ResultSet} from the
    216      * provided column name.
    217      *
    218      * @param columnName
    219      *            the column name.
    220      * @return the column's index in the {@code ResultSet} identified by column
    221      *         name.
    222      * @throws SQLException
    223      *             if a database error happens.
    224      */
    225     public int findColumn(String columnName) throws SQLException;
    226 
    227     /**
    228      * Shifts the cursor position to the first row in the {@code ResultSet}.
    229      *
    230      * @return {@code true} if the position is in a legitimate row, {@code
    231      *         false} if the {@code ResultSet} contains no rows.
    232      * @throws SQLException
    233      *             if a database error happens.
    234      */
    235     public boolean first() throws SQLException;
    236 
    237     /**
    238      * Gets the content of a column specified by column index in the current row
    239      * of this {@code ResultSet} as a {@code java.sql.Array}.
    240      *
    241      * @param columnIndex
    242      *            the index of the column to read
    243      * @return a {@code java.sql.Array} with the data from the column.
    244      * @throws SQLException
    245      *             if a database error happens.
    246      */
    247     public Array getArray(int columnIndex) throws SQLException;
    248 
    249     /**
    250      * Gets the value of a column specified by column name as a {@code
    251      * java.sql.Array}.
    252      *
    253      * @param colName
    254      *            the name of the column to read.
    255      * @return a {@code java.sql.Array} with the data from the specified column.
    256      * @throws SQLException
    257      *             if a database error happens.
    258      */
    259     public Array getArray(String colName) throws SQLException;
    260 
    261     /**
    262      * Gets the value of a column specified by column index as an ASCII
    263      * character stream.
    264      *
    265      * @param columnIndex
    266      *            the index of the column to read.
    267      * @return an {@code InputStream} with the data from the column.
    268      * @throws SQLException
    269      *             if a database error happens.
    270      */
    271     public InputStream getAsciiStream(int columnIndex) throws SQLException;
    272 
    273     /**
    274      * Gets the value of a column specified by column name as an ASCII character
    275      * stream.
    276      *
    277      * @param columnName
    278      *            the name of the column to read
    279      * @return an {@code InputStream} with the data from the column.
    280      * @throws SQLException
    281      *             if a database error happens.
    282      */
    283     public InputStream getAsciiStream(String columnName) throws SQLException;
    284 
    285     /**
    286      * Gets the value of a column specified by column index as a {@code
    287      * java.math.BigDecimal}.
    288      *
    289      * @param columnIndex
    290      *            the index of the column to read.
    291      * @return a {@code BigDecimal} with the value of the column.
    292      * @throws SQLException
    293      *             if a database error happens.
    294      */
    295     public BigDecimal getBigDecimal(int columnIndex) throws SQLException;
    296 
    297     /**
    298      * Gets the value of a column specified by column index as a {@code
    299      * java.math.BigDecimal}.
    300      *
    301      * @deprecated Use {@link #getBigDecimal(int)} or {@link #getBigDecimal(String)} instead.
    302      * @param columnIndex
    303      *            the index of the column to read.
    304      * @param scale
    305      *            the number of digits after the decimal point
    306      * @return a {@code BigDecimal} with the value of the column.
    307      * @throws SQLException
    308      *             if a database error happens.
    309      */
    310     @Deprecated
    311     public BigDecimal getBigDecimal(int columnIndex, int scale)
    312             throws SQLException;
    313 
    314     /**
    315      * Gets the value of a column specified by column name, as a {@code
    316      * java.math.BigDecimal}.
    317      *
    318      * @param columnName
    319      *            the name of the column to read.
    320      * @return a BigDecimal with value of the column.
    321      * @throws SQLException
    322      *             if a database error happens.
    323      */
    324     public BigDecimal getBigDecimal(String columnName) throws SQLException;
    325 
    326     /**
    327      * Gets the value of a column specified by column name, as a {@code
    328      * java.math.BigDecimal}.
    329      *
    330      * @deprecated Use {@link #getBigDecimal(int)} or {@link #getBigDecimal(String)} instead.
    331      * @param columnName
    332      *            the name of the column to read.
    333      * @param scale
    334      *            the number of digits after the decimal point
    335      * @return a BigDecimal with value of the column.
    336      * @throws SQLException
    337      *             if a database error happens.
    338      */
    339     @Deprecated
    340     public BigDecimal getBigDecimal(String columnName, int scale)
    341             throws SQLException;
    342 
    343     /**
    344      * Gets the value of a column specified by column index as a binary
    345      * stream.
    346      * <p>
    347      * This method can be used to read {@code LONGVARBINARY} values. All of the
    348      * data in the {@code InputStream} should be read before getting data from
    349      * any other column. A further call to a getter method will implicitly close
    350      * the {@code InputStream}.
    351      *
    352      * @param columnIndex
    353      *            the index of the column to read.
    354      * @return an {@code InputStream} with the data from the column. If the
    355      *         column value is SQL {@code NULL}, {@code null} is returned.
    356      * @throws SQLException
    357      *             if a database error happens.
    358      */
    359     public InputStream getBinaryStream(int columnIndex) throws SQLException;
    360 
    361     /**
    362      * Gets the value of a column specified by column name as a binary stream.
    363      * <p>
    364      * This method can be used to read {@code LONGVARBINARY} values. All of the
    365      * data in the {@code InputStream} should be read before getting data from
    366      * any other column. A further call to a getter method will implicitly close
    367      * the {@code InputStream}.
    368      *
    369      * @param columnName
    370      *            the name of the column to read.
    371      * @return an {@code InputStream} with the data from the column if the
    372      *         column value is SQL {@code NULL}, {@code null} is returned.
    373      * @throws SQLException
    374      *             if a database error happens.
    375      */
    376     public InputStream getBinaryStream(String columnName) throws SQLException;
    377 
    378     /**
    379      * Gets the value of a column specified by column index as a {@code
    380      * java.sql.Blob} object.
    381      *
    382      * @param columnIndex
    383      *            the index of the column to read.
    384      * @return a {@code java.sql.Blob} with the value of the column.
    385      * @throws SQLException
    386      *             if a database error happens.
    387      */
    388     public Blob getBlob(int columnIndex) throws SQLException;
    389 
    390     /**
    391      * Gets the value of a column specified by column name, as a {@code
    392      * java.sql.Blob} object.
    393      *
    394      * @param columnName
    395      *            the name of the column to read.
    396      * @return a {@code java.sql.Blob} with the value of the column.
    397      * @throws SQLException
    398      *             if a database error happens.
    399      */
    400     public Blob getBlob(String columnName) throws SQLException;
    401 
    402     /**
    403      * Gets the value of a column specified by column index as a {@code boolean}
    404      * .
    405      *
    406      * @param columnIndex
    407      *            the index of the column to read.
    408      * @return a {@code boolean} value from the column. If the column is SQL
    409      *         {@code NULL}, {@code false} is returned.
    410      * @throws SQLException
    411      *             if a database error happens.
    412      */
    413     public boolean getBoolean(int columnIndex) throws SQLException;
    414 
    415     /**
    416      * Gets the value of a column specified by column name, as a {@code boolean}
    417      * .
    418      *
    419      * @param columnName
    420      *            the name of the column to read.
    421      * @return a {@code boolean} value from the column. If the column is SQL
    422      *         {@code NULL}, {@code false} is returned.
    423      * @throws SQLException
    424      *             if a database error happens.
    425      */
    426     public boolean getBoolean(String columnName) throws SQLException;
    427 
    428     /**
    429      * Gets the value of a column specified by column index as a {@code byte}.
    430      *
    431      * @param columnIndex
    432      *            the index of the column to read.
    433      * @return a {@code byte} equal to the value of the column. 0 if the value
    434      *         is SQL {@code NULL}.
    435      * @throws SQLException
    436      *             if a database error happens.
    437      */
    438     public byte getByte(int columnIndex) throws SQLException;
    439 
    440     /**
    441      * Gets the value of a column specified by column name as a {@code byte}.
    442      *
    443      * @param columnName
    444      *            the name of the column to read.
    445      * @return a {@code byte} equal to the value of the column. 0 if the value
    446      *         is SQL {@code NULL}.
    447      * @throws SQLException
    448      *             if a database error happens.
    449      */
    450     public byte getByte(String columnName) throws SQLException;
    451 
    452     /**
    453      * Gets the value of a column specified by column index as a byte array.
    454      *
    455      * @param columnIndex
    456      *            the index of the column to read.
    457      * @return a byte array containing the value of the column. {@code null} if
    458      *         the column contains SQL {@code NULL}.
    459      * @throws SQLException
    460      *             if a database error happens.
    461      */
    462     public byte[] getBytes(int columnIndex) throws SQLException;
    463 
    464     /**
    465      * Gets the value of a column specified by column name as a byte array.
    466      *
    467      * @param columnName
    468      *            the name of the column to read.
    469      * @return a byte array containing the value of the column. {@code null} if
    470      *         the column contains SQL {@code NULL}.
    471      * @throws SQLException
    472      *             if a database error happens.
    473      */
    474     public byte[] getBytes(String columnName) throws SQLException;
    475 
    476     /**
    477      * Gets the value of a column specified by column index as a {@code
    478      * java.io.Reader} object.
    479      *
    480      * @param columnIndex
    481      *            the index of the column to read.
    482      * @return a {@code Reader} holding the value of the column. {@code null} if
    483      *         the column value is SQL {@code NULL}.
    484      * @throws SQLException
    485      *             if a database error happens.
    486      * @see java.io.Reader
    487      */
    488     public Reader getCharacterStream(int columnIndex) throws SQLException;
    489 
    490     /**
    491      * Gets the value of a column specified by column name as a {@code
    492      * java.io.Reader} object.
    493      *
    494      * @param columnName
    495      *            the name of the column to read.
    496      * @return a {@code Reader} holding the value of the column. {@code null} if
    497      *         the column value is SQL {@code NULL}.
    498      * @throws SQLException
    499      *             if a database error happens.
    500      */
    501     public Reader getCharacterStream(String columnName) throws SQLException;
    502 
    503     /**
    504      * Gets the value of a column specified by column index as a {@code
    505      * java.sql.Clob}.
    506      *
    507      * @param columnIndex
    508      *            the index of the column to read.
    509      * @return a {@code Clob} object representing the value in the column.
    510      *         {@code null} if the value is SQL {@code NULL}.
    511      * @throws SQLException
    512      *             if a database error happens.
    513      */
    514     public Clob getClob(int columnIndex) throws SQLException;
    515 
    516     /**
    517      * Gets the value of a column specified by column name as a {@code
    518      * java.sql.Clob}.
    519      *
    520      * @param colName
    521      *            the name of the column to read.
    522      * @return a {@code Clob} object representing the value in the column.
    523      *         {@code null} if the value is SQL {@code NULL}.
    524      * @throws SQLException
    525      *             if a database error happens.
    526      */
    527     public Clob getClob(String colName) throws SQLException;
    528 
    529     /**
    530      * Gets the concurrency mode of this {@code ResultSet}.
    531      *
    532      * @return the concurrency mode - one of: {@code ResultSet.CONCUR_READ_ONLY}
    533      *         , {@code ResultSet.CONCUR_UPDATABLE}.
    534      * @throws SQLException
    535      *             if a database error happens.
    536      */
    537     public int getConcurrency() throws SQLException;
    538 
    539     /**
    540      * Gets the name of the SQL cursor of this {@code ResultSet}.
    541      *
    542      * @return the SQL cursor name.
    543      * @throws SQLException
    544      *             if a database error happens.
    545      */
    546     public String getCursorName() throws SQLException;
    547 
    548     /**
    549      * Gets the value of a column specified by column index as a {@code
    550      * java.sql.Date}.
    551      *
    552      * @param columnIndex
    553      *            the index of the column to read.
    554      * @return a {@code java.sql.Date} matching the column value. {@code null}
    555      *         if the column is SQL {@code NULL}.
    556      * @throws SQLException
    557      *             if a database error happens.
    558      */
    559     public Date getDate(int columnIndex) throws SQLException;
    560 
    561     /**
    562      * Gets the value of a column specified by column index as a {@code
    563      * java.sql.Date}. This method uses a supplied calendar to compute the Date.
    564      *
    565      * @param columnIndex
    566      *            the index of the column to read.
    567      * @param cal
    568      *            a {@code java.util.Calendar} to use in constructing the Date.
    569      * @return a {@code java.sql.Date} matching the column value. {@code null}
    570      *         if the column is SQL {@code NULL}.
    571      * @throws SQLException
    572      *             if a database error happens.
    573      */
    574     public Date getDate(int columnIndex, Calendar cal) throws SQLException;
    575 
    576     /**
    577      * Gets the value of a column specified by column name as a {@code
    578      * java.sql.Date}.
    579      *
    580      * @param columnName
    581      *            the name of the column to read.
    582      * @return a {@code java.sql.Date} matching the column value. {@code null}
    583      *         if the column is SQL {@code NULL}.
    584      * @throws SQLException
    585      *             if a database error happens.
    586      */
    587     public Date getDate(String columnName) throws SQLException;
    588 
    589     /**
    590      * Gets the value of a column specified by column name, as a {@code
    591      * java.sql.Date} object.
    592      *
    593      * @param columnName
    594      *            the name of the column to read.
    595      * @param cal
    596      *            {@code java.util.Calendar} to use in constructing the Date.
    597      * @return a {@code java.sql.Date} matching the column value. {@code null}
    598      *         if the column is SQL {@code NULL}.
    599      * @throws SQLException
    600      *             if a database error happens.
    601      */
    602     public Date getDate(String columnName, Calendar cal) throws SQLException;
    603 
    604     /**
    605      * Gets the value of a column specified by column index as a {@code double}
    606      * value.
    607      *
    608      * @param columnIndex
    609      *            the index of the column to read.
    610      * @return a {@code double} equal to the column value. {@code 0.0} if the
    611      *         column is SQL {@code NULL}.
    612      * @throws SQLException
    613      *             if a database error happens.
    614      */
    615     public double getDouble(int columnIndex) throws SQLException;
    616 
    617     /**
    618      * Gets the value of a column specified by column name as a {@code double}
    619      * value.
    620      *
    621      * @param columnName
    622      *            the name of the column to read.
    623      * @return a {@code double} equal to the column value. {@code 0.0} if the
    624      *         column is SQL {@code NULL}.
    625      * @throws SQLException
    626      *             if a database error happens.
    627      */
    628     public double getDouble(String columnName) throws SQLException;
    629 
    630     /**
    631      * Gets the direction in which rows are fetched for this {@code ResultSet}
    632      * object.
    633      *
    634      * @return the fetch direction. Will be one of:
    635      *         <ul>
    636      *         <li>ResultSet.FETCH_FORWARD</li><li>ResultSet.FETCH_REVERSE</li>
    637      *         <li>ResultSet.FETCH_UNKNOWN</li>
    638      *         </ul>
    639      * @throws SQLException
    640      *             if a database error happens.
    641      */
    642     public int getFetchDirection() throws SQLException;
    643 
    644     /**
    645      * Gets the fetch size (in number of rows) for this {@code ResultSet}.
    646      *
    647      * @return the fetch size as an int
    648      * @throws SQLException
    649      *             if a database error happens.
    650      */
    651     public int getFetchSize() throws SQLException;
    652 
    653     /**
    654      * Gets the value of a column specified by column index as a {@code float}
    655      * value.
    656      *
    657      * @param columnIndex
    658      *            the index of the column to read.
    659      * @return a {@code float} equal to the column value. {@code 0.0} if the
    660      *         column is SQL {@code NULL}.
    661      * @throws SQLException
    662      *             if a database error happens.
    663      */
    664     public float getFloat(int columnIndex) throws SQLException;
    665 
    666     /**
    667      * Gets the value of a column specified by column name as a {@code float}
    668      * value.
    669      *
    670      * @param columnName
    671      *            the name of the column to read.
    672      * @return a {@code float} equal to the column value. {@code 0.0} if the
    673      *         column is SQL {@code NULL}.
    674      * @throws SQLException
    675      *             if a database error happens.
    676      */
    677     public float getFloat(String columnName) throws SQLException;
    678 
    679     /**
    680      * Gets the value of a column specified by column index as an {@code int}
    681      * value.
    682      *
    683      * @param columnIndex
    684      *            the index of the column to read.
    685      * @return an {@code int} equal to the column value. {@code 0} if the
    686      *         column is SQL {@code NULL}.
    687      * @throws SQLException
    688      *             if a database error happens.
    689      */
    690     public int getInt(int columnIndex) throws SQLException;
    691 
    692     /**
    693      * Gets the value of a column specified by column name, as an {@code int}
    694      * value.
    695      *
    696      * @param columnName
    697      *            the name of the column to read.
    698      * @return an {@code int} equal to the column value. {@code 0} if the
    699      *         column is SQL {@code NULL}.
    700      * @throws SQLException
    701      *             if a database error happens.
    702      */
    703     public int getInt(String columnName) throws SQLException;
    704 
    705     /**
    706      * Gets the value of a column specified by column index as a {@code long}
    707      * value.
    708      *
    709      * @param columnIndex
    710      *            the index of the column to read.
    711      * @return a {@code long} equal to the column value. {@code 0} if the
    712      *         column is SQL {@code NULL}.
    713      * @throws SQLException
    714      *             if a database error happens.
    715      */
    716     public long getLong(int columnIndex) throws SQLException;
    717 
    718     /**
    719      * Gets the value of a column specified by column name, as a {@code long}
    720      * value.
    721      *
    722      * @param columnName
    723      *            the name of the column to read.
    724      * @return a {@code long} equal to the column value. {@code 0} if the
    725      *         column is SQL {@code NULL}.
    726      * @throws SQLException
    727      *             if a database error happens.
    728      */
    729     public long getLong(String columnName) throws SQLException;
    730 
    731     /**
    732      * Gets the metadata for this {@code ResultSet}. This defines the number,
    733      * types and properties of the columns in the {@code ResultSet}.
    734      *
    735      * @return a {@code ResultSetMetaData} object with information about this
    736      *         {@code ResultSet}.
    737      * @throws SQLException
    738      *             if a database error happens.
    739      */
    740     public ResultSetMetaData getMetaData() throws SQLException;
    741 
    742     /**
    743      * Gets the value of a specified column as a Java {@code Object}. The type
    744      * of the returned object will be the default according to the column's SQL
    745      * type, following the JDBC specification for built-in types.
    746      * <p>
    747      * For SQL User Defined Types, if a column value is Structured or Distinct,
    748      * this method behaves the same as a call to: {@code
    749      * getObject(columnIndex,this.getStatement().getConnection().getTypeMap())}
    750      *
    751      * @param columnIndex
    752      *            the index of the column to read.
    753      * @return an {@code Object} containing the value of the column. {@code
    754      *         null} if the column value is SQL {@code NULL}.
    755      * @throws SQLException
    756      *             if a database error happens.
    757      */
    758     public Object getObject(int columnIndex) throws SQLException;
    759 
    760     /**
    761      * Gets the value of a column specified by column index as a Java {@code
    762      * Object}.
    763      * <p>
    764      * The type of the Java object will be determined by the supplied Map to
    765      * perform the mapping of SQL {@code Struct} or Distinct types into Java
    766      * objects.
    767      *
    768      * @param columnIndex
    769      *            the index of the column to read.
    770      * @param map
    771      *            a {@code java.util.Map} containing a mapping from SQL Type
    772      *            names to Java classes.
    773      * @return an {@code Object} containing the value of the column. {@code
    774      *         null} if the column value is SQL {@code NULL}.
    775      * @throws SQLException
    776      *             if a database error happens.
    777      */
    778     public Object getObject(int columnIndex, Map<String, Class<?>> map)
    779             throws SQLException;
    780 
    781     /**
    782      * Gets the value of a specified column as a Java {@code Object}. The type
    783      * of the returned object will be the default according to the column's SQL
    784      * type, following the JDBC specification for built-in types.
    785      * <p>
    786      * For SQL User Defined Types, if a column value is structured or distinct,
    787      * this method behaves the same as a call to: {@code
    788      * getObject(columnIndex,this.getStatement().getConnection().getTypeMap())}
    789      *
    790      * @param columnName
    791      *            the name of the column to read.
    792      * @return an {@code Object} containing the value of the column. {@code
    793      *         null} if the column value is SQL {@code NULL}.
    794      * @throws SQLException
    795      *             if a database error happens.
    796      */
    797     public Object getObject(String columnName) throws SQLException;
    798 
    799     /**
    800      * Gets the value of a column specified by column name as a Java {@code
    801      * Object}.
    802      * <p>
    803      * The type of the Java object will be determined by the supplied Map to
    804      * perform the mapping of SQL Struct or Distinct types into Java objects.
    805      *
    806      * @param columnName
    807      *            the name of the column to read.
    808      * @param map
    809      *            a {@code java.util.Map} containing a mapping from SQL Type names to
    810      *            Java classes.
    811      * @return an {@code Object} containing the value of the column. {@code
    812      *         null} if the column value is SQL {@code NULL}.
    813      * @throws SQLException
    814      *             if a database error happens.
    815      */
    816     public Object getObject(String columnName, Map<String, Class<?>> map)
    817             throws SQLException;
    818 
    819     /**
    820      * Gets the value of a column specified by column index as a Java {@code
    821      * java.sql.Ref}.
    822      *
    823      * @param columnIndex
    824      *            the index of the column to read.
    825      * @return a Ref representing the value of the SQL REF in the column
    826      * @throws SQLException
    827      *             if a database error happens.
    828      */
    829     public Ref getRef(int columnIndex) throws SQLException;
    830 
    831     /**
    832      * Gets the value of a column specified by column name as a Java {@code
    833      * java.sql.Ref}.
    834      *
    835      * @param colName
    836      *            the name of the column to read.
    837      * @return a Ref representing the value of the SQL {@code REF} in the column
    838      * @throws SQLException
    839      *             if a database error happens.
    840      */
    841     public Ref getRef(String colName) throws SQLException;
    842 
    843     /**
    844      * Gets the number of the current row in the {@code ResultSet}. Row numbers
    845      * start at 1 for the first row.
    846      *
    847      * @return the index number of the current row. {@code 0} is returned if
    848      *         there is no current row.
    849      * @throws SQLException
    850      *             if a database error happens.
    851      */
    852     public int getRow() throws SQLException;
    853 
    854     /**
    855      * Gets the value of a column specified by column index as a short value.
    856      *
    857      * @param columnIndex
    858      *            the index of the column to read.
    859      * @return a short value equal to the value of the column. {@code 0} if
    860      *         the value is SQL {@code NULL}.
    861      * @throws SQLException
    862      *             if a database error happens.
    863      */
    864     public short getShort(int columnIndex) throws SQLException;
    865 
    866     /**
    867      * Gets the value of a column specified by column name, as a short value.
    868      *
    869      * @param columnName
    870      *            the name of the column to read.
    871      * @return a short value equal to the value of the column. {@code 0} if
    872      *         the value is SQL {@code NULL}.
    873      * @throws SQLException
    874      *             if a database error happens.
    875      */
    876     public short getShort(String columnName) throws SQLException;
    877 
    878     /**
    879      * Gets the statement that produced this {@code ResultSet}. If the {@code
    880      * ResultSet} was not created by a statement (i.e. because it was returned
    881      * from one of the {@link DatabaseMetaData} methods), {@code null} is
    882      * returned.
    883      *
    884      * @return the Statement which produced this {@code ResultSet}, or {@code
    885      *         null} if the {@code ResultSet} was not created by a Statement.
    886      * @throws SQLException
    887      *             if a database error happens.
    888      */
    889     public Statement getStatement() throws SQLException;
    890 
    891     /**
    892      * Gets the value of a column specified by column index as a String.
    893      *
    894      * @param columnIndex
    895      *            the index of the column to read.
    896      * @return the String representing the value of the column, {@code null} if
    897      *         the column is SQL {@code NULL}.
    898      * @throws SQLException
    899      *             if a database error happens.
    900      */
    901     public String getString(int columnIndex) throws SQLException;
    902 
    903     /**
    904      * Gets the value of a column specified by column name, as a String.
    905      *
    906      * @param columnName
    907      *            the name of the column to read.
    908      * @return the String representing the value of the column, {@code null} if
    909      *         the column is SQL {@code NULL}.
    910      * @throws SQLException
    911      *             if a database error happens.
    912      */
    913     public String getString(String columnName) throws SQLException;
    914 
    915     /**
    916      * Gets the value of a column specified by column index as a {@code
    917      * java.sql.Time} value.
    918      *
    919      * @param columnIndex
    920      *            the index of the column to read.
    921      * @return a Time representing the column value, {@code null} if the column
    922      *         value is SQL {@code NULL}.
    923      * @throws SQLException
    924      *             if a database error happens.
    925      */
    926     public Time getTime(int columnIndex) throws SQLException;
    927 
    928     /**
    929      * Gets the value of a column specified by column index as a {@code
    930      * java.sql.Time} value. The supplied {@code Calendar} is used to
    931      * map the SQL {@code Time} value to a Java Time value.
    932      *
    933      * @param columnIndex
    934      *            the index of the column to read.
    935      * @param cal
    936      *            a {@code Calendar} to use in creating the Java Time value.
    937      * @return a Time representing the column value, {@code null} if the column
    938      *         value is SQL {@code NULL}.
    939      * @throws SQLException
    940      *             if a database error happens.
    941      */
    942     public Time getTime(int columnIndex, Calendar cal) throws SQLException;
    943 
    944     /**
    945      * Gets the value of a column specified by column name, as a {@code
    946      * java.sql.Time} value.
    947      *
    948      * @param columnName
    949      *            the name of the column to read.
    950      * @return the column value, {@code null} if the column value is SQL {@code
    951      *         NULL}.
    952      * @throws SQLException
    953      *             if a database error happens.
    954      */
    955     public Time getTime(String columnName) throws SQLException;
    956 
    957     /**
    958      * Gets the value of a column specified by column index, as a {@code
    959      * java.sql.Time} value. The supplied {@code Calendar} is used to
    960      * map the SQL {@code Time} value to a Java Time value.
    961      *
    962      * @param columnName
    963      *            the name of the column to read.
    964      * @param cal
    965      *            a {@code Calendar} to use in creating the Java time value.
    966      * @return a Time representing the column value, {@code null} if the column
    967      *         value is SQL {@code NULL}.
    968      * @throws SQLException
    969      *             if a database error happens.
    970      */
    971     public Time getTime(String columnName, Calendar cal) throws SQLException;
    972 
    973     /**
    974      * Gets the value of a column specified by column index as a {@code
    975      * java.sql.Timestamp} value.
    976      *
    977      * @param columnIndex
    978      *            the index of the column to read.
    979      * @return a timestamp representing the column value, {@code null} if the
    980      *         column value is SQL {@code NULL}.
    981      * @throws SQLException
    982      *             if a database error happens.
    983      */
    984     public Timestamp getTimestamp(int columnIndex) throws SQLException;
    985 
    986     /**
    987      * Gets the value of a column specified by column index, as a {@code
    988      * java.sql.Timestamp} value. The supplied Calendar is used when mapping
    989      * the SQL {@code Timestamp} value to a Java {@code Timestamp} value.
    990      *
    991      * @param columnIndex
    992      *            the index of the column to read.
    993      * @param cal
    994      *            Calendar to use in creating the Java timestamp value.
    995      * @return a timestamp representing the column value, {@code null} if the
    996      *         column value is SQL NULL.
    997      * @throws SQLException
    998      *             if a database error happens.
    999      */
   1000     public Timestamp getTimestamp(int columnIndex, Calendar cal)
   1001             throws SQLException;
   1002 
   1003     /**
   1004      * Gets the value of a column specified by column name, as a {@code
   1005      * java.sql.Timestamp} value.
   1006      *
   1007      * @param columnName
   1008      *            the name of the column to read.
   1009      * @return a timestamp representing the column value, {@code null} if the
   1010      *         column value is SQL {@code NULL}.
   1011      * @throws SQLException
   1012      *             if a database error happens.
   1013      */
   1014     public Timestamp getTimestamp(String columnName) throws SQLException;
   1015 
   1016     /**
   1017      * Gets the value of a column specified by column name, as a {@code
   1018      * java.sql.Timestamp} value. The supplied Calendar is used when mapping
   1019      * the SQL {@code Timestamp} value to a Java {@code Timestamp} value.
   1020      *
   1021      * @param columnName
   1022      *            the name of the column to read.
   1023      * @param cal
   1024      *            Calendar to use in creating the Java {@code Timestamp} value.
   1025      * @return a timestamp representing the column value, {@code null} if the
   1026      *         column value is SQL {@code NULL}.
   1027      * @throws SQLException
   1028      *             if a database error happens.
   1029      */
   1030     public Timestamp getTimestamp(String columnName, Calendar cal)
   1031             throws SQLException;
   1032 
   1033     /**
   1034      * Gets the type of the {@code ResultSet}.
   1035      *
   1036      * @return The {@code ResultSet} type, one of:
   1037      *         <ul>
   1038      *         <li>{@code ResultSet.TYPE_FORWARD_ONLY}</li> <li>{@code
   1039      *         ResultSet.TYPE_SCROLL_INSENSITIVE}</li> <li>{@code
   1040      *         ResultSet.TYPE_SCROLL_SENSITIVE}</li>
   1041      *         </ul>
   1042      * @throws SQLException
   1043      *             if there is a database error.
   1044      */
   1045     public int getType() throws SQLException;
   1046 
   1047     /**
   1048      * Gets the value of the column as an {@code InputStream} of unicode
   1049      * characters.
   1050      *
   1051      * @deprecated Use {@link #getCharacterStream} instead.
   1052      * @param columnIndex
   1053      *            the index of the column to read.
   1054      * @return an {@code InputStream} holding the value of the column. {@code
   1055      *         null} if the column value is SQL {@code NULL}.
   1056      * @throws SQLException
   1057      *             if a database error happens.
   1058      */
   1059     @Deprecated
   1060     public InputStream getUnicodeStream(int columnIndex) throws SQLException;
   1061 
   1062     /**
   1063      * Gets the value of the column as an {@code InputStream} of Unicode
   1064      * characters.
   1065      *
   1066      * @deprecated Use {@link #getCharacterStream} instead.
   1067      * @param columnName
   1068      *            the name of the column to read.
   1069      * @return an {@code InputStream} holding the value of the column. {@code
   1070      *         null} if the column value is SQL {@code NULL}.
   1071      * @throws SQLException
   1072      *             if a database error happens.
   1073      */
   1074     @Deprecated
   1075     public InputStream getUnicodeStream(String columnName) throws SQLException;
   1076 
   1077     /**
   1078      * Gets the value of a column specified by column index as a {@code
   1079      * java.net.URL}.
   1080      *
   1081      * @param columnIndex
   1082      *            the index of the column to read.
   1083      * @return a URL. {@code null} if the column value is SQL {@code NULL}.
   1084      * @throws SQLException
   1085      *             if a database error happens.
   1086      */
   1087     public URL getURL(int columnIndex) throws SQLException;
   1088 
   1089     /**
   1090      * Gets the value of a column specified by column name as a {@code
   1091      * java.net.URL} object.
   1092      *
   1093      * @param columnName
   1094      *            the name of the column to read.
   1095      * @return the column vaule as a URL. {@code null} if the column value is SQL {@code NULL}.
   1096      * @throws SQLException
   1097      *             if a database error happens.
   1098      */
   1099     public URL getURL(String columnName) throws SQLException;
   1100 
   1101     /**
   1102      * Gets the first warning generated by calls on this {@code ResultSet}.
   1103      * Subsequent warnings on this {@code ResultSet} are chained to the first
   1104      * one.
   1105      * <p>
   1106      * The warnings are cleared when a new Row is read from the {@code
   1107      * ResultSet}. The warnings returned by this method are only the warnings
   1108      * generated by {@code ResultSet} method calls - warnings generated by
   1109      * Statement methods are held by the Statement.
   1110      * <p>
   1111      * An {@code SQLException} is generated if this method is called on a closed
   1112      * {@code ResultSet}.
   1113      *
   1114      * @return an SQLWarning which is the first warning for this {@code
   1115      *         ResultSet}. {@code null} if there are no warnings.
   1116      * @throws SQLException
   1117      *             if a database error happens.
   1118      */
   1119     public SQLWarning getWarnings() throws SQLException;
   1120 
   1121     /**
   1122      * Insert the insert row into the {@code ResultSet} and into the underlying
   1123      * database. The cursor must be set to the Insert Row before this method is
   1124      * invoked.
   1125      *
   1126      * @throws SQLException
   1127      *             if a database error happens. Particular cases include the
   1128      *             cursor not being on the Insert Row or if any columns in the
   1129      *             row do not have a value where the column is declared as
   1130      *             not-nullable.
   1131      */
   1132     public void insertRow() throws SQLException;
   1133 
   1134     /**
   1135      * Gets if the cursor is after the last row of the {@code ResultSet}.
   1136      *
   1137      * @return {@code true} if the cursor is after the last row in the {@code
   1138      *         ResultSet}, {@code false} if the cursor is at any other position
   1139      *         in the {@code ResultSet}.
   1140      * @throws SQLException
   1141      *             if a database error happens.
   1142      */
   1143     public boolean isAfterLast() throws SQLException;
   1144 
   1145     /**
   1146      * Gets if the cursor is before the first row of the {@code ResultSet}.
   1147      *
   1148      * @return {@code true} if the cursor is before the first row in the {@code
   1149      *         ResultSet}, {@code false} if the cursor is at any other position
   1150      *         in the {@code ResultSet}.
   1151      * @throws SQLException
   1152      *             if a database error happens.
   1153      */
   1154     public boolean isBeforeFirst() throws SQLException;
   1155 
   1156     /**
   1157      * Gets if the cursor is on the first row of the {@code ResultSet}.
   1158      *
   1159      * @return {@code true} if the cursor is on the first row in the {@code
   1160      *         ResultSet}, {@code false} if the cursor is at any other position
   1161      *         in the {@code ResultSet}.
   1162      * @throws SQLException
   1163      *             if a database error happens.
   1164      */
   1165     public boolean isFirst() throws SQLException;
   1166 
   1167     /**
   1168      * Gets if the cursor is on the last row of the {@code ResultSet}
   1169      *
   1170      * @return {@code true} if the cursor is on the last row in the {@code
   1171      *         ResultSet}, {@code false} if the cursor is at any other position
   1172      *         in the {@code ResultSet}.
   1173      * @throws SQLException
   1174      *             if a database error happens.
   1175      */
   1176     public boolean isLast() throws SQLException;
   1177 
   1178     /**
   1179      * Shifts the cursor position to the last row of the {@code ResultSet}.
   1180      *
   1181      * @return {@code true} if the new position is in a legitimate row, {@code
   1182      *         false} if the {@code ResultSet} contains no rows.
   1183      * @throws SQLException
   1184      *             if there is a database error.
   1185      */
   1186     public boolean last() throws SQLException;
   1187 
   1188     /**
   1189      * Moves the cursor to the remembered position, namely the
   1190      * row that was the current row before a call to {@code moveToInsertRow}.
   1191      * This only applies if the cursor is on the Insert Row.
   1192      *
   1193      * @throws SQLException
   1194      *             if a database error happens.
   1195      */
   1196     public void moveToCurrentRow() throws SQLException;
   1197 
   1198     /**
   1199      * Moves the cursor position to the Insert Row. The current position is
   1200      * remembered and the cursor is positioned at the Insert Row. The columns in
   1201      * the Insert Row should be filled in with the appropriate update methods,
   1202      * before calling {@code insertRow} to insert the new row into the database.
   1203      *
   1204      * @throws SQLException
   1205      *             if a database error happens.
   1206      */
   1207     public void moveToInsertRow() throws SQLException;
   1208 
   1209     /**
   1210      * Shifts the cursor position down one row in this {@code ResultSet} object.
   1211      * <p>
   1212      * Any input streams associated with the current row are closed and any
   1213      * warnings are cleared.
   1214      *
   1215      * @return {@code true} if the updated cursor position is pointing to a
   1216      *         valid row, {@code false} otherwise (i.e. when the cursor is after
   1217      *         the last row in the {@code ResultSet}).
   1218      * @throws SQLException
   1219      *             if a database error happens.
   1220      */
   1221     public boolean next() throws SQLException;
   1222 
   1223     /**
   1224      * Relocates the cursor position to the preceding row in this {@code
   1225      * ResultSet}.
   1226      *
   1227      * @return {@code true} if the new position is in a legitimate row, {@code
   1228      *         false} if the cursor is now before the first row.
   1229      * @throws SQLException
   1230      *             if a database error happens.
   1231      */
   1232     public boolean previous() throws SQLException;
   1233 
   1234     /**
   1235      * Refreshes the current row with its most up to date value in the database.
   1236      * Must not be called when the cursor is on the Insert Row.
   1237      * <p>
   1238      * If any columns in the current row have been updated but the {@code
   1239      * updateRow} has not been called, then the updates are lost when this
   1240      * method is called.
   1241      *
   1242      * @throws SQLException
   1243      *             if a database error happens., including if the current row is
   1244      *             the Insert row.
   1245      */
   1246     public void refreshRow() throws SQLException;
   1247 
   1248     /**
   1249      * Moves the cursor position up or down by a specified number of rows. If
   1250      * the new position is beyond the start row (or end row), the cursor position is
   1251      * set before the first row (or, respectively, after the last row).
   1252      *
   1253      * @param rows
   1254      *            a number of rows to move the cursor - may be positive or
   1255      *            negative
   1256      * @return {@code true} if the new cursor position is on a row, {@code
   1257      *         false} otherwise
   1258      * @throws SQLException
   1259      *             if a database error happens.
   1260      */
   1261     public boolean relative(int rows) throws SQLException;
   1262 
   1263     /**
   1264      * Indicates whether a row has been deleted. This method depends on whether
   1265      * the JDBC driver and database can detect deletions.
   1266      *
   1267      * @return {@code true} if a row has been deleted and if deletions are
   1268      *         detected, {@code false} otherwise.
   1269      * @throws SQLException
   1270      *             if a database error happens.
   1271      */
   1272     public boolean rowDeleted() throws SQLException;
   1273 
   1274     /**
   1275      * Indicates whether the current row has had an insertion operation. This
   1276      * method depends on whether the JDBC driver and database can detect
   1277      * insertions.
   1278      *
   1279      * @return {@code true} if a row has been inserted and if insertions are
   1280      *         detected, {@code false} otherwise.
   1281      * @throws SQLException
   1282      *             if a database error happens.
   1283      */
   1284     public boolean rowInserted() throws SQLException;
   1285 
   1286     /**
   1287      * Indicates whether the current row has been updated. This method depends
   1288      * on whether the JDBC driver and database can detect updates.
   1289      *
   1290      * @return {@code true} if the current row has been updated and if updates
   1291      *         can be detected, {@code false} otherwise.
   1292      * @throws SQLException
   1293      *             if a database error happens.
   1294      */
   1295     public boolean rowUpdated() throws SQLException;
   1296 
   1297     /**
   1298      * Indicates which direction (forward/reverse) will be used to process the
   1299      * rows of this {@code ResultSet} object. This is treated as a hint by the
   1300      * JDBC driver.
   1301      *
   1302      * @param direction
   1303      *            can be {@code ResultSet.FETCH_FORWARD}, {@code
   1304      *            ResultSet.FETCH_REVERSE}, or {@code ResultSet.FETCH_UNKNOWN}
   1305      * @throws SQLException
   1306      *             if there is a database error.
   1307      */
   1308     public void setFetchDirection(int direction) throws SQLException;
   1309 
   1310     /**
   1311      * Indicates the number of rows to fetch from the database when extra rows
   1312      * are required for this {@code ResultSet}. This used as a hint to the JDBC
   1313      * driver.
   1314      *
   1315      * @param rows
   1316      *            the number of rows to fetch. {@code 0} implies that the JDBC
   1317      *            driver can make its own decision about the fetch size. The
   1318      *            number should not be greater than the maximum number of rows
   1319      *            established by the statement that generated the {@code
   1320      *            ResultSet}.
   1321      * @throws SQLException
   1322      *             if a database error happens.
   1323      */
   1324     public void setFetchSize(int rows) throws SQLException;
   1325 
   1326     /**
   1327      * Updates a column specified by a column index with a {@code
   1328      * java.sql.Array} value.
   1329      *
   1330      * @param columnIndex
   1331      *            the index of the column to update.
   1332      * @param x
   1333      *            the new value for the specified column.
   1334      * @throws SQLException
   1335      *             if a database error happens.
   1336      */
   1337     public void updateArray(int columnIndex, Array x) throws SQLException;
   1338 
   1339     /**
   1340      * Updates a column specified by a column name with a {@code java.sql.Array}
   1341      * value.
   1342      *
   1343      * @param columnName
   1344      *            the name of the column to update.
   1345      * @param x
   1346      *            the new value for the specified column.
   1347      * @throws SQLException
   1348      *             if a database error happens.
   1349      */
   1350     public void updateArray(String columnName, Array x) throws SQLException;
   1351 
   1352     /**
   1353      * Updates a column specified by a column index with an ASCII stream value.
   1354      *
   1355      * @param columnIndex
   1356      *            the index of the column to update.
   1357      * @param x
   1358      *            the new value for the specified column.
   1359      * @param length
   1360      *            the length of the data to write from the stream
   1361      * @throws SQLException
   1362      *             if a database error happens.
   1363      */
   1364     public void updateAsciiStream(int columnIndex, InputStream x, int length)
   1365             throws SQLException;
   1366 
   1367     /**
   1368      * Updates a column specified by a column name with an Ascii stream value.
   1369      *
   1370      * @param columnName
   1371      *            the name of the column to update.
   1372      * @param x
   1373      *            the new value for the specified column.
   1374      * @param length
   1375      *            the length of the data to write from the stream
   1376      * @throws SQLException
   1377      *             if a database error happens.
   1378      */
   1379     public void updateAsciiStream(String columnName, InputStream x, int length)
   1380             throws SQLException;
   1381 
   1382     /**
   1383      * Updates a column specified by a column index with a {@code
   1384      * java.sql.BigDecimal} value.
   1385      *
   1386      * @param columnIndex
   1387      *            the index of the column to update.
   1388      * @param x
   1389      *            the new value for the specified column.
   1390      * @throws SQLException
   1391      *             if a database error happens.
   1392      */
   1393     public void updateBigDecimal(int columnIndex, BigDecimal x)
   1394             throws SQLException;
   1395 
   1396     /**
   1397      * Updates a column specified by a column name with a {@code
   1398      * java.sql.BigDecimal} value.
   1399      *
   1400      * @param columnName
   1401      *            the name of the column to update.
   1402      * @param x
   1403      *            the new value for the specified column.
   1404      * @throws SQLException
   1405      *             if a database error happens.
   1406      */
   1407     public void updateBigDecimal(String columnName, BigDecimal x)
   1408             throws SQLException;
   1409 
   1410     /**
   1411      * Updates a column specified by a column index with a binary stream value.
   1412      *
   1413      * @param columnIndex
   1414      *            the index of the column to update.
   1415      * @param x
   1416      *            the new value for the specified column.
   1417      * @param length
   1418      *            the number of bytes to be read from the the stream.
   1419      * @throws SQLException
   1420      *             if a database error happens.
   1421      */
   1422     public void updateBinaryStream(int columnIndex, InputStream x, int length)
   1423             throws SQLException;
   1424 
   1425     /**
   1426      * Updates a column specified by a column name with a binary stream value.
   1427      *
   1428      * @param columnName
   1429      *            the name of the column to update.
   1430      * @param x
   1431      *            the new value for the specified column.
   1432      * @param length
   1433      *            he number of bytes to be read from the the stream.
   1434      * @throws SQLException
   1435      *             if a database error happens.
   1436      */
   1437     public void updateBinaryStream(String columnName, InputStream x, int length)
   1438             throws SQLException;
   1439 
   1440     /**
   1441      * Updates a column specified by a column index with a {@code java.sql.Blob}
   1442      * value.
   1443      *
   1444      * @param columnIndex
   1445      *            the index of the column to update.
   1446      * @param x
   1447      *            the new value for the specified column.
   1448      * @throws SQLException
   1449      *             if a database error happens.
   1450      */
   1451     public void updateBlob(int columnIndex, Blob x) throws SQLException;
   1452 
   1453     /**
   1454      * Updates a column specified by a column name with a {@code java.sql.Blob}
   1455      * value.
   1456      *
   1457      * @param columnName
   1458      *            the name of the column to update.
   1459      * @param x
   1460      *            the new value for the specified column.
   1461      * @throws SQLException
   1462      *             if a database error happens.
   1463      */
   1464     public void updateBlob(String columnName, Blob x) throws SQLException;
   1465 
   1466     /**
   1467      * Updates a column specified by a column index with a {@code boolean}
   1468      * value.
   1469      *
   1470      * @param columnIndex
   1471      *            the index of the column to update.
   1472      * @param x
   1473      *            the new value for the specified column.
   1474      * @throws SQLException
   1475      *             if a database error happens.
   1476      */
   1477     public void updateBoolean(int columnIndex, boolean x) throws SQLException;
   1478 
   1479     /**
   1480      * Updates a column specified by a column name with a {@code boolean} value.
   1481      *
   1482      * @param columnName
   1483      *            the name of the column to update.
   1484      * @param x
   1485      *            the new value for the specified column.
   1486      * @throws SQLException
   1487      *             if a database error happens.
   1488      */
   1489     public void updateBoolean(String columnName, boolean x) throws SQLException;
   1490 
   1491     /**
   1492      * Updates a column specified by a column index with a {@code byte} value.
   1493      *
   1494      * @param columnIndex
   1495      *            the index of the column to update.
   1496      * @param x
   1497      *            the new value for the specified column.
   1498      * @throws SQLException
   1499      *             if a database error happens.
   1500      */
   1501     public void updateByte(int columnIndex, byte x) throws SQLException;
   1502 
   1503     /**
   1504      * Updates a column specified by a column name with a {@code byte} value.
   1505      *
   1506      * @param columnName
   1507      *            the name of the column to update.
   1508      * @param x
   1509      *            the new value for the specified column.
   1510      * @throws SQLException
   1511      *             if a database error happens.
   1512      */
   1513     public void updateByte(String columnName, byte x) throws SQLException;
   1514 
   1515     /**
   1516      * Updates a column specified by a column index with a {@code byte} array
   1517      * value.
   1518      *
   1519      * @param columnIndex
   1520      *            the index of the column to update.
   1521      * @param x
   1522      *            the new value for the specified column.
   1523      * @throws SQLException
   1524      *             if a database error happens.
   1525      */
   1526     public void updateBytes(int columnIndex, byte[] x) throws SQLException;
   1527 
   1528     /**
   1529      * Updates a column specified by a column name with a byte array value.
   1530      *
   1531      * @param columnName
   1532      *            the name of the column to update.
   1533      * @param x
   1534      *            the new value for the specified column.
   1535      * @throws SQLException
   1536      *             if a database error happens.
   1537      */
   1538     public void updateBytes(String columnName, byte[] x) throws SQLException;
   1539 
   1540     /**
   1541      * Updates a column specified by a column index with a character stream
   1542      * value.
   1543      *
   1544      * @param columnIndex
   1545      *            the index of the column to update.
   1546      * @param x
   1547      *            the new value for the specified column.
   1548      * @param length
   1549      *            the length of data to write from the stream
   1550      * @throws SQLException
   1551      *             if a database error happens.
   1552      */
   1553     public void updateCharacterStream(int columnIndex, Reader x, int length)
   1554             throws SQLException;
   1555 
   1556     /**
   1557      * Updates a column specified by a column name with a character stream
   1558      * value.
   1559      *
   1560      * @param columnName
   1561      *            the name of the column to update.
   1562      * @param reader
   1563      *            the new value for the specified column.
   1564      * @param length
   1565      *            the length of data to write from the Reader
   1566      * @throws SQLException
   1567      *             if a database error happens.
   1568      */
   1569     public void updateCharacterStream(String columnName, Reader reader,
   1570             int length) throws SQLException;
   1571 
   1572     /**
   1573      * Updates a column specified by a column index with a {@code java.sql.Clob}
   1574      * value.
   1575      *
   1576      * @param columnIndex
   1577      *            the index of the column to update.
   1578      * @param x
   1579      *            the new value for the specified column.
   1580      * @throws SQLException
   1581      *             if a database error happens.
   1582      */
   1583     public void updateClob(int columnIndex, Clob x) throws SQLException;
   1584 
   1585     /**
   1586      * Updates a column specified by a column name with a {@code java.sql.Clob}
   1587      * value.
   1588      *
   1589      * @param columnName
   1590      *            the name of the column to update.
   1591      * @param x
   1592      *            the new value for the specified column.
   1593      * @throws SQLException
   1594      *             if a database error happens.
   1595      */
   1596     public void updateClob(String columnName, Clob x) throws SQLException;
   1597 
   1598     /**
   1599      * Updates a column specified by a column index with a {@code java.sql.Date}
   1600      * value.
   1601      *
   1602      * @param columnIndex
   1603      *            the index of the column to update.
   1604      * @param x
   1605      *            the new value for the specified column.
   1606      * @throws SQLException
   1607      *             if a database error happens.
   1608      */
   1609     public void updateDate(int columnIndex, Date x) throws SQLException;
   1610 
   1611     /**
   1612      * Updates a column specified by a column name with a {@code java.sql.Date}
   1613      * value.
   1614      *
   1615      * @param columnName
   1616      *            the name of the column to update.
   1617      * @param x
   1618      *            the new value for the specified column.
   1619      * @throws SQLException
   1620      *             if a database error happens.
   1621      */
   1622     public void updateDate(String columnName, Date x) throws SQLException;
   1623 
   1624     /**
   1625      * Updates a column specified by a column index with a {@code double} value.
   1626      *
   1627      * @param columnIndex
   1628      *            the index of the column to update.
   1629      * @param x
   1630      *            the new value for the specified column.
   1631      * @throws SQLException
   1632      *             if a database error happens.
   1633      */
   1634     public void updateDouble(int columnIndex, double x) throws SQLException;
   1635 
   1636     /**
   1637      * Updates a column specified by a column name with a {@code double} value.
   1638      *
   1639      * @param columnName
   1640      *            the name of the column to update.
   1641      * @param x
   1642      *            the new value for the specified column.
   1643      * @throws SQLException
   1644      *             if a database error happens.
   1645      */
   1646     public void updateDouble(String columnName, double x) throws SQLException;
   1647 
   1648     /**
   1649      * Updates a column specified by a column index with a {@code float} value.
   1650      *
   1651      * @param columnIndex
   1652      *            the index of the column to update.
   1653      * @param x
   1654      *            the new value for the specified column.
   1655      * @throws SQLException
   1656      *             if a database error happens.
   1657      */
   1658     public void updateFloat(int columnIndex, float x) throws SQLException;
   1659 
   1660     /**
   1661      * Updates a column specified by a column name with a {@code float} value.
   1662      *
   1663      * @param columnName
   1664      *            the name of the column to update.
   1665      * @param x
   1666      *            the new value for the specified column.
   1667      * @throws SQLException
   1668      *             if a database error happens.
   1669      */
   1670     public void updateFloat(String columnName, float x) throws SQLException;
   1671 
   1672     /**
   1673      * Updates a column specified by a column index with an {@code int} value.
   1674      *
   1675      * @param columnIndex
   1676      *            the index of the column to update.
   1677      * @param x
   1678      *            the new value for the specified column.
   1679      * @throws SQLException
   1680      *             if a database error happens.
   1681      */
   1682     public void updateInt(int columnIndex, int x) throws SQLException;
   1683 
   1684     /**
   1685      * Updates a column specified by a column name with an {@code int} value.
   1686      *
   1687      * @param columnName
   1688      *            the name of the column to update.
   1689      * @param x
   1690      *            the new value for the specified column.
   1691      * @throws SQLException
   1692      *             if a database error happens.
   1693      */
   1694     public void updateInt(String columnName, int x) throws SQLException;
   1695 
   1696     /**
   1697      * Updates a column specified by a column index with a {@code long} value.
   1698      *
   1699      * @param columnIndex
   1700      *            the index of the column to update.
   1701      * @param x
   1702      *            the new value for the specified column..
   1703      * @throws SQLException
   1704      *             if a database error happens.
   1705      */
   1706     public void updateLong(int columnIndex, long x) throws SQLException;
   1707 
   1708     /**
   1709      * Updates a column specified by a column name with a {@code long} value.
   1710      *
   1711      * @param columnName
   1712      *            the name of the column to update.
   1713      * @param x
   1714      *            the new value for the specified column.
   1715      * @throws SQLException
   1716      *             if a database error happens.
   1717      */
   1718     public void updateLong(String columnName, long x) throws SQLException;
   1719 
   1720     /**
   1721      * Updates a column specified by a column index with a {@code null} value.
   1722      *
   1723      * @param columnIndex
   1724      *            the index of the column to update.
   1725      * @throws SQLException
   1726      *             if a database error happens.
   1727      */
   1728     public void updateNull(int columnIndex) throws SQLException;
   1729 
   1730     /**
   1731      * Updates a column specified by a column name with a {@code null} value.
   1732      *
   1733      * @param columnName
   1734      *            the name of the column to update.
   1735      * @throws SQLException
   1736      *             if a database error happens.
   1737      */
   1738     public void updateNull(String columnName) throws SQLException;
   1739 
   1740     /**
   1741      * Updates a column specified by a column index with an {@code Object}
   1742      * value.
   1743      *
   1744      * @param columnIndex
   1745      *            the index of the column to update.
   1746      * @param x
   1747      *            the new value for the specified column.
   1748      * @throws SQLException
   1749      *             if a database error happens.
   1750      */
   1751     public void updateObject(int columnIndex, Object x) throws SQLException;
   1752 
   1753     /**
   1754      * Updates a column specified by a column index with an {@code Object}
   1755      * value.
   1756      *
   1757      * @param columnIndex
   1758      *            the index of the column to update.
   1759      * @param x
   1760      *            the new value for the specified column.
   1761      * @param scale
   1762      *            for the types {@code java.sql.Types.DECIMAL} or {@code
   1763      *            java.sql.Types.NUMERIC}, this specifies the number of digits
   1764      *            after the decimal point.
   1765      * @throws SQLException
   1766      *             if a database error happens.
   1767      */
   1768     public void updateObject(int columnIndex, Object x, int scale)
   1769             throws SQLException;
   1770 
   1771     /**
   1772      * Updates a column specified by a column name with an {@code Object} value.
   1773      *
   1774      * @param columnName
   1775      *            the name of the column to update.
   1776      * @param x
   1777      *            the new value for the specified column.
   1778      * @throws SQLException
   1779      *             if a database error happens.
   1780      */
   1781     public void updateObject(String columnName, Object x) throws SQLException;
   1782 
   1783     /**
   1784      * Updates a column specified by a column name with an {@code Object} value.
   1785      *
   1786      * @param columnName
   1787      *            the name of the column to update.
   1788      * @param x
   1789      *            the new value for the specified column.
   1790      * @param scale
   1791      *            for the types {@code java.sql.Types.DECIMAL} or {@code
   1792      *            java.sql.Types.NUMERIC}, this specifies the number of digits
   1793      *            after the decimal point.
   1794      * @throws SQLException
   1795      *             if a database error happens.
   1796      */
   1797     public void updateObject(String columnName, Object x, int scale)
   1798             throws SQLException;
   1799 
   1800     /**
   1801      * Updates a column specified by a column index with a {@code java.sql.Ref}
   1802      * value.
   1803      *
   1804      * @param columnIndex
   1805      *            the index of the column to update.
   1806      * @param x
   1807      *            the new value for the specified column.
   1808      * @throws SQLException
   1809      *             if a database error happens.
   1810      */
   1811     public void updateRef(int columnIndex, Ref x) throws SQLException;
   1812 
   1813     /**
   1814      * Updates a column specified by a column name with a {@code java.sql.Ref}
   1815      * value.
   1816      *
   1817      * @param columnName
   1818      *            the name of the column to update.
   1819      * @param x
   1820      *            the new value for the specified column.
   1821      * @throws SQLException
   1822      *             if a database error happens.
   1823      */
   1824     public void updateRef(String columnName, Ref x) throws SQLException;
   1825 
   1826     /**
   1827      * Updates the database with the new contents of the current row of this
   1828      * {@code ResultSet} object.
   1829      *
   1830      * @throws SQLException
   1831      *             if a database error happens.
   1832      */
   1833     public void updateRow() throws SQLException;
   1834 
   1835     /**
   1836      * Updates a column specified by a column index with a {@code short} value.
   1837      *
   1838      * @param columnIndex
   1839      *            the index of the column to update.
   1840      * @param x
   1841      *            the new value for the specified column.
   1842      * @throws SQLException
   1843      *             if a database error happens.
   1844      */
   1845     public void updateShort(int columnIndex, short x) throws SQLException;
   1846 
   1847     /**
   1848      * Updates a column specified by a column name with a {@code short} value.
   1849      *
   1850      * @param columnName
   1851      *            the name of the column to update.
   1852      * @param x
   1853      *            the new value for the specified column.
   1854      * @throws SQLException
   1855      *             if a database error happens.
   1856      */
   1857     public void updateShort(String columnName, short x) throws SQLException;
   1858 
   1859     /**
   1860      * Updates a column specified by a column index with a {@code String} value.
   1861      *
   1862      * @param columnIndex
   1863      *            the index of the column to update.
   1864      * @param x
   1865      *            the new value for the specified column.
   1866      * @throws SQLException
   1867      *             if a database error happens.
   1868      */
   1869     public void updateString(int columnIndex, String x) throws SQLException;
   1870 
   1871     /**
   1872      * Updates a column specified by a column name with a {@code String} value.
   1873      *
   1874      * @param columnName
   1875      *            the name of the column to update.
   1876      * @param x
   1877      *            the new value for the specified column.
   1878      * @throws SQLException
   1879      *             if a database error happens.
   1880      */
   1881     public void updateString(String columnName, String x) throws SQLException;
   1882 
   1883     /**
   1884      * Updates a column specified by a column index with a {@code Time} value.
   1885      *
   1886      * @param columnIndex
   1887      *            the index of the column to update.
   1888      * @param x
   1889      *            the new value for the specified column.
   1890      * @throws SQLException
   1891      *             if a database error happens.
   1892      */
   1893     public void updateTime(int columnIndex, Time x) throws SQLException;
   1894 
   1895     /**
   1896      * Updates a column specified by a column name with a {@code Time} value.
   1897      *
   1898      * @param columnName
   1899      *            the name of the column to update.
   1900      * @param x
   1901      *            the new value for the specified column.
   1902      * @throws SQLException
   1903      *             if a database error happens.
   1904      */
   1905     public void updateTime(String columnName, Time x) throws SQLException;
   1906 
   1907     /**
   1908      * Updates a column specified by a column index with a {@code Timestamp}
   1909      * value.
   1910      *
   1911      * @param columnIndex
   1912      *            the index of the column to update.
   1913      * @param x
   1914      *            the new timestamp value for the specified column.
   1915      * @throws SQLException
   1916      *             if a database error happens.
   1917      */
   1918     public void updateTimestamp(int columnIndex, Timestamp x)
   1919             throws SQLException;
   1920 
   1921     /**
   1922      * Updates a column specified by column name with a {@code Timestamp} value.
   1923      *
   1924      * @param columnName
   1925      *            the name of the column to update.
   1926      * @param x
   1927      *            the new timestamp value for the specified column.
   1928      * @throws SQLException
   1929      *             if a database error happens.
   1930      */
   1931     public void updateTimestamp(String columnName, Timestamp x)
   1932             throws SQLException;
   1933 
   1934     /**
   1935      * Determines whether the last column read from this {@code ResultSet}
   1936      * contained SQL {@code NULL}.
   1937      *
   1938      * @return {@code {@code true} if the last column contained SQL {@code
   1939      *         NULL}, {@code false} otherwise
   1940      * @throws SQLException
   1941      *             if a database error happens.
   1942      */
   1943     public boolean wasNull() throws SQLException;
   1944 
   1945     /**
   1946      * Returns a {@code RowId} corresponding to the SQL ROWID at the 1-based {@code columnIndex}.
   1947      * @throws SQLException
   1948      */
   1949     public RowId getRowId(int columnIndex) throws SQLException;
   1950 
   1951     /**
   1952      * Returns a {@code RowId} corresponding to the SQL ROWID at the named column.
   1953      * @throws SQLException
   1954      */
   1955     public RowId getRowId(String columnLabel) throws SQLException;
   1956 
   1957     /**
   1958      * Updates the value at the 1-based {@code columnIndex}.
   1959      * The underlying database isn't changed until the next row update or insert operation.
   1960      * @throws SQLException
   1961      */
   1962     public void updateRowId(int columnIndex, RowId value) throws SQLException;
   1963 
   1964     /**
   1965      * Updates the value in the named column.
   1966      * The underlying database isn't changed until the next row update or insert operation.
   1967      * @throws SQLException
   1968      */
   1969     public void updateRowId(String columnLabel, RowId value) throws SQLException;
   1970 
   1971     /**
   1972      * Returns the holdability of this result set: {@link #HOLD_CURSORS_OVER_COMMIT} or
   1973      * {@link #CLOSE_CURSORS_AT_COMMIT}.
   1974      * @throws SQLException
   1975      */
   1976     public int getHoldability() throws SQLException;
   1977 
   1978     /**
   1979      * Returns true if this result set has been closed, false otherwise.
   1980      * @throws SQLException
   1981      */
   1982     public boolean isClosed() throws SQLException;
   1983 
   1984     /**
   1985      * Updates the value at the 1-based {@code columnIndex}.
   1986      * The underlying database isn't changed until the next row update or insert operation.
   1987      * @throws SQLException
   1988      */
   1989     public void updateNString(int columnIndex, String nString) throws SQLException;
   1990 
   1991     /**
   1992      * Updates the value in the named column.
   1993      * The underlying database isn't changed until the next row update or insert operation.
   1994      * @throws SQLException
   1995      */
   1996     public void updateNString(String columnLabel, String nString) throws SQLException;
   1997 
   1998     /**
   1999      * Updates the value at the 1-based {@code columnIndex}.
   2000      * The underlying database isn't changed until the next row update or insert operation.
   2001      * @throws SQLException
   2002      */
   2003     public void updateNClob(int columnIndex, NClob nClob) throws SQLException;
   2004 
   2005     /**
   2006      * Updates the value in the named column.
   2007      * The underlying database isn't changed until the next row update or insert operation.
   2008      * @throws SQLException
   2009      */
   2010     public void updateNClob(String columnLabel, NClob nClob) throws SQLException;
   2011 
   2012     /**
   2013      * Returns an {@code NClob} corresponding to the value at the 1-based {@code columnIndex}.
   2014      * @throws SQLException
   2015      */
   2016     public NClob getNClob(int columnIndex) throws SQLException;
   2017 
   2018     /**
   2019      * Returns an {@code NClob} corresponding to the value in the named column.
   2020      * @throws SQLException
   2021      */
   2022     public NClob getNClob(String columnLabel) throws SQLException;
   2023 
   2024     /**
   2025      * Returns an {@code SQLXML} corresponding to the value at the 1-based {@code columnIndex}.
   2026      * @throws SQLException
   2027      */
   2028     public SQLXML getSQLXML(int columnIndex) throws SQLException;
   2029 
   2030     /**
   2031      * Returns an {@code SQLXML} corresponding to the value in the named column.
   2032      * @throws SQLException
   2033      */
   2034     public SQLXML getSQLXML(String columnLabel) throws SQLException;
   2035 
   2036     /**
   2037      * Updates the value at the 1-based {@code columnIndex}.
   2038      * The underlying database isn't changed until the next row update or insert operation.
   2039      * @throws SQLException
   2040      */
   2041     public void updateSQLXML(int columnIndex, SQLXML xmlObject) throws SQLException;
   2042 
   2043     /**
   2044      * Updates the value in the named column.
   2045      * The underlying database isn't changed until the next row update or insert operation.
   2046      * @throws SQLException
   2047      */
   2048     public void updateSQLXML(String columnLabel, SQLXML xmlObject) throws SQLException;
   2049 
   2050     /**
   2051      * Returns a {@code String} corresponding to the value at the 1-based {@code columnIndex}.
   2052      * @throws SQLException
   2053      */
   2054     public String getNString(int columnIndex) throws SQLException;
   2055 
   2056     /**
   2057      * Returns a {@code String} corresponding to the value in the named column.
   2058      * @throws SQLException
   2059      */
   2060     public String getNString(String columnLabel) throws SQLException;
   2061 
   2062     /**
   2063      * Returns a {@code Reader} corresponding to the value at the 1-based {@code columnIndex}.
   2064      * @throws SQLException
   2065      */
   2066     public Reader getNCharacterStream(int columnIndex) throws SQLException;
   2067 
   2068     /**
   2069      * Returns a {@code Reader} corresponding to the value in the named column.
   2070      * @throws SQLException
   2071      */
   2072     public Reader getNCharacterStream(String columnLabel) throws SQLException;
   2073 
   2074     /**
   2075      * Updates the value at the 1-based {@code columnIndex}.
   2076      * The underlying database isn't changed until the next row update or insert operation.
   2077      * @throws SQLException
   2078      */
   2079     public void updateNCharacterStream(int columnIndex, Reader x, long length) throws SQLException;
   2080 
   2081     /**
   2082      * Updates the value in the named column.
   2083      * The underlying database isn't changed until the next row update or insert operation.
   2084      * @throws SQLException
   2085      */
   2086     public void updateNCharacterStream(String columnLabel, Reader reader, long length) throws SQLException;
   2087 
   2088     /**
   2089      * Updates the value at the 1-based {@code columnIndex}.
   2090      * The underlying database isn't changed until the next row update or insert operation.
   2091      * @throws SQLException
   2092      */
   2093     public void updateAsciiStream(int columnIndex, InputStream x, long length) throws SQLException;
   2094 
   2095     /**
   2096      * Updates the value at the 1-based {@code columnIndex}.
   2097      * The underlying database isn't changed until the next row update or insert operation.
   2098      * @throws SQLException
   2099      */
   2100     public void updateBinaryStream(int columnIndex, InputStream x, long length) throws SQLException;
   2101 
   2102     /**
   2103      * Updates the value at the 1-based {@code columnIndex}.
   2104      * The underlying database isn't changed until the next row update or insert operation.
   2105      * @throws SQLException
   2106      */
   2107     public void updateCharacterStream(int columnIndex, Reader x, long length) throws SQLException;
   2108 
   2109     /**
   2110      * Updates the value in the named column.
   2111      * The underlying database isn't changed until the next row update or insert operation.
   2112      * @throws SQLException
   2113      */
   2114     public void updateAsciiStream(String columnLabel, InputStream x, long length) throws SQLException;
   2115 
   2116     /**
   2117      * Updates the value in the named column.
   2118      * The underlying database isn't changed until the next row update or insert operation.
   2119      * @throws SQLException
   2120      */
   2121     public void updateBinaryStream(String columnLabel, InputStream x, long length) throws SQLException;
   2122 
   2123     /**
   2124      * Updates the value in the named column.
   2125      * The underlying database isn't changed until the next row update or insert operation.
   2126      * @throws SQLException
   2127      */
   2128     public void updateCharacterStream(String columnLabel, Reader reader, long length) throws SQLException;
   2129 
   2130     /**
   2131      * Updates the value at the 1-based {@code columnIndex}.
   2132      * The underlying database isn't changed until the next row update or insert operation.
   2133      * @throws SQLException
   2134      */
   2135     public void updateBlob(int columnIndex, InputStream inputStream, long length) throws SQLException;
   2136 
   2137     /**
   2138      * Updates the value in the named column.
   2139      * The underlying database isn't changed until the next row update or insert operation.
   2140      * @throws SQLException
   2141      */
   2142     public void updateBlob(String columnLabel, InputStream inputStream, long length) throws SQLException;
   2143 
   2144     /**
   2145      * Updates the value at the 1-based {@code columnIndex}.
   2146      * The underlying database isn't changed until the next row update or insert operation.
   2147      * @throws SQLException
   2148      */
   2149     public void updateClob(int columnIndex, Reader reader, long length) throws SQLException;
   2150 
   2151     /**
   2152      * Updates the value in the named column.
   2153      * The underlying database isn't changed until the next row update or insert operation.
   2154      * @throws SQLException
   2155      */
   2156     public void updateClob(String columnLabel, Reader reader, long length) throws SQLException;
   2157 
   2158     /**
   2159      * Updates the value at the 1-based {@code columnIndex}.
   2160      * The underlying database isn't changed until the next row update or insert operation.
   2161      * @throws SQLException
   2162      */
   2163     public void updateNClob(int columnIndex, Reader reader, long length) throws SQLException;
   2164 
   2165     /**
   2166      * Updates the value in the named column.
   2167      * The underlying database isn't changed until the next row update or insert operation.
   2168      * @throws SQLException
   2169      */
   2170     public void updateNClob(String columnLabel, Reader reader, long length) throws SQLException;
   2171 
   2172     /**
   2173      * Updates the value at the 1-based {@code columnIndex}.
   2174      * The underlying database isn't changed until the next row update or insert operation.
   2175      * @throws SQLException
   2176      */
   2177     public void updateNCharacterStream(int columnIndex, Reader x) throws SQLException;
   2178 
   2179     /**
   2180      * Updates the value in the named column.
   2181      * The underlying database isn't changed until the next row update or insert operation.
   2182      * @throws SQLException
   2183      */
   2184     public void updateNCharacterStream(String columnLabel, Reader reader) throws SQLException;
   2185 
   2186     /**
   2187      * Updates the value at the 1-based {@code columnIndex}.
   2188      * The underlying database isn't changed until the next row update or insert operation.
   2189      * @throws SQLException
   2190      */
   2191     public void updateAsciiStream(int columnIndex, InputStream x) throws SQLException;
   2192 
   2193     /**
   2194      * Updates the value at the 1-based {@code columnIndex}.
   2195      * The underlying database isn't changed until the next row update or insert operation.
   2196      * @throws SQLException
   2197      */
   2198     public void updateBinaryStream(int columnIndex, InputStream x) throws SQLException;
   2199 
   2200     /**
   2201      * Updates the value at the 1-based {@code columnIndex}.
   2202      * The underlying database isn't changed until the next row update or insert operation.
   2203      * @throws SQLException
   2204      */
   2205     public void updateCharacterStream(int columnIndex, Reader x) throws SQLException;
   2206 
   2207     /**
   2208      * Updates the value in the named column.
   2209      * The underlying database isn't changed until the next row update or insert operation.
   2210      * @throws SQLException
   2211      */
   2212     public void updateAsciiStream(String columnLabel, InputStream x) throws SQLException;
   2213 
   2214     /**
   2215      * Updates the value in the named column.
   2216      * The underlying database isn't changed until the next row update or insert operation.
   2217      * @throws SQLException
   2218      */
   2219     public void updateBinaryStream(String columnLabel, InputStream x) throws SQLException;
   2220 
   2221     /**
   2222      * Updates the value in the named column.
   2223      * The underlying database isn't changed until the next row update or insert operation.
   2224      * @throws SQLException
   2225      */
   2226     public void updateCharacterStream(String columnLabel, Reader reader) throws SQLException;
   2227 
   2228     /**
   2229      * Updates the value at the 1-based {@code columnIndex}.
   2230      * The underlying database isn't changed until the next row update or insert operation.
   2231      * @throws SQLException
   2232      */
   2233     public void updateBlob(int columnIndex, InputStream inputStream) throws SQLException;
   2234 
   2235     /**
   2236      * Updates the value in the named column.
   2237      * The underlying database isn't changed until the next row update or insert operation.
   2238      * @throws SQLException
   2239      */
   2240     public void updateBlob(String columnLabel, InputStream inputStream) throws SQLException;
   2241 
   2242     /**
   2243      * Updates the value at the 1-based {@code columnIndex}.
   2244      * The underlying database isn't changed until the next row update or insert operation.
   2245      * @throws SQLException
   2246      */
   2247     public void updateClob(int columnIndex, Reader reader) throws SQLException;
   2248 
   2249     /**
   2250      * Updates the value in the named column.
   2251      * The underlying database isn't changed until the next row update or insert operation.
   2252      * @throws SQLException
   2253      */
   2254     public void updateClob(String columnLabel, Reader reader) throws SQLException;
   2255 
   2256     /**
   2257      * Updates the value at the 1-based {@code columnIndex}.
   2258      * The underlying database isn't changed until the next row update or insert operation.
   2259      * @throws SQLException
   2260      */
   2261     public void updateNClob(int columnIndex, Reader reader) throws SQLException;
   2262 
   2263     /**
   2264      * Updates the value in the named column.
   2265      * The underlying database isn't changed until the next row update or insert operation.
   2266      * @throws SQLException
   2267      */
   2268     public void updateNClob(String columnLabel, Reader reader) throws SQLException;
   2269 }
   2270