jdk/src/java.sql.rowset/share/classes/com/sun/rowset/internal/SyncResolverImpl.java
changeset 31061 fead7d86d75f
parent 28059 e576535359cc
child 37880 60ec48925dc6
equal deleted inserted replaced
31060:be4eb6360ee0 31061:fead7d86d75f
    37 import java.io.IOException;
    37 import java.io.IOException;
    38 import java.io.ObjectInputStream;
    38 import java.io.ObjectInputStream;
    39 
    39 
    40 /**
    40 /**
    41  * There will be two sets of data which will be maintained by the rowset at the
    41  * There will be two sets of data which will be maintained by the rowset at the
    42  * time of synchronization. The <code>SyncProvider</code> will utilize the
    42  * time of synchronization. The {@code SyncProvider} will utilize the
    43  * <code>SyncResolver</code> to synchronize the changes back to database.
    43  * {@code SyncResolver} to synchronize the changes back to database.
    44  */
    44  */
    45 public class SyncResolverImpl extends CachedRowSetImpl implements SyncResolver {
    45 public class SyncResolverImpl extends CachedRowSetImpl implements SyncResolver {
    46     /**
    46     /**
    47      * This CachedRowSet object will encapsulate a rowset
    47      * This CachedRowSet object will encapsulate a rowset
    48      * which will be sync'ed with the datasource but will
    48      * which will be sync'ed with the datasource but will
    77      * Row number identifier
    77      * Row number identifier
    78      */
    78      */
    79     private int rowStatus;
    79     private int rowStatus;
    80 
    80 
    81     /**
    81     /**
    82      * This will contain the size of the <code>CachedRowSet</code> object
    82      * This will contain the size of the {@code CachedRowSet} object
    83      */
    83      */
    84     private int sz;
    84     private int sz;
    85 
    85 
    86     /**
    86     /**
    87      * The <code>Connection</code> handle used to synchronize the changes
    87      * The {@code Connection} handle used to synchronize the changes
    88      * back to datasource. This is the same connection handle as was passed
    88      * back to datasource. This is the same connection handle as was passed
    89      * to the CachedRowSet while fetching the data.
    89      * to the CachedRowSet while fetching the data.
    90      */
    90      */
    91     private transient Connection con;
    91     private transient Connection con;
    92 
    92 
    93     /**
    93     /**
    94      * The <code>CachedRowSet</code> object which will encapsulate
    94      * The {@code CachedRowSet} object which will encapsulate
    95      * a row at any time. This will be built from CachedRowSet and
    95      * a row at any time. This will be built from CachedRowSet and
    96      * SyncResolver values. Synchronization takes place on a row by
    96      * SyncResolver values. Synchronization takes place on a row by
    97      * row basis encapsulated as a CahedRowSet.
    97      * row basis encapsulated as a CahedRowSet.
    98      */
    98      */
    99     private CachedRowSet row;
    99     private CachedRowSet row;
   121      }
   121      }
   122 
   122 
   123 
   123 
   124     /**
   124     /**
   125      * Retrieves the conflict status of the current row of this
   125      * Retrieves the conflict status of the current row of this
   126      * <code>SyncResolver</code>, which indicates the operationthe <code>RowSet</code>
   126      * {@code SyncResolver}, which indicates the operationthe {@code RowSet}
   127      * object was attempting when the conflict occurred.
   127      * object was attempting when the conflict occurred.
   128      *
   128      *
   129      * @return one of the following constants:
   129      * @return one of the following constants:
   130      *         <code>SyncResolver.UPDATE_ROW_CONFLICT</code>,
   130      *         {@code SyncResolver.UPDATE_ROW_CONFLICT},
   131      *         <code>SyncResolver.DELETE_ROW_CONFLICT</code>, or
   131      *         {@code SyncResolver.DELETE_ROW_CONFLICT}, or
   132      *         <code>SyncResolver.INSERT_ROW_CONFLICT</code>
   132      *         {@code SyncResolver.INSERT_ROW_CONFLICT}
   133      */
   133      */
   134     public int getStatus() {
   134     public int getStatus() {
   135         return ((Integer)stats.get(rowStatus-1)).intValue();
   135         return ((Integer)stats.get(rowStatus-1)).intValue();
   136     }
   136     }
   137 
   137 
   138     /**
   138     /**
   139      * Retrieves the value in the designated column in the current row of this
   139      * Retrieves the value in the designated column in the current row of this
   140      * <code>SyncResolver</code> object, which is the value that caused a conflict.
   140      * {@code SyncResolver} object, which is the value that caused a conflict.
   141      *
   141      *
   142      * @param index <code>int</code> designating the column in this row of this
   142      * @param index {@code int} designating the column in this row of this
   143      *        <code>SyncResolver</code> object from which to retrieve the value
   143      *        {@code SyncResolver} object from which to retrieve the value
   144      *        causing a conflict
   144      *        causing a conflict
   145      */
   145      */
   146     public Object getConflictValue(int index) throws SQLException {
   146     public Object getConflictValue(int index) throws SQLException {
   147         try {
   147         try {
   148              return crsRes.getObject(index);
   148              return crsRes.getObject(index);
   151         }
   151         }
   152     }
   152     }
   153 
   153 
   154     /**
   154     /**
   155      * Retrieves the value in the designated column in the current row of this
   155      * Retrieves the value in the designated column in the current row of this
   156      * <code>SyncResolver</code> object, which is the value that caused a conflict.
   156      * {@code SyncResolver} object, which is the value that caused a conflict.
   157      *
   157      *
   158      * @param columnName a <code>String</code> object designating the column in this row of this
   158      * @param columnName a {@code String} object designating the column in this row of this
   159      *        <code>SyncResolver</code> object from which to retrieve the value
   159      *        {@code SyncResolver} object from which to retrieve the value
   160      *        causing a conflict
   160      *        causing a conflict
   161      */
   161      */
   162     public Object getConflictValue(String columnName) throws SQLException {
   162     public Object getConflictValue(String columnName) throws SQLException {
   163         try {
   163         try {
   164              return crsRes.getObject(columnName);
   164              return crsRes.getObject(columnName);
   167         }
   167         }
   168     }
   168     }
   169 
   169 
   170     /**
   170     /**
   171      * Sets <i>obj</i> as the value in column <i>index</i> in the current row of the
   171      * Sets <i>obj</i> as the value in column <i>index</i> in the current row of the
   172      * <code>RowSet</code> object. This value is the resolved value that is to be
   172      * {@code RowSet} object. This value is the resolved value that is to be
   173      * persisted in the data source.
   173      * persisted in the data source.
   174      *
   174      *
   175      * @param index an <code>int</code> giving the number of the column into which to
   175      * @param index an {@code int} giving the number of the column into which to
   176      *        set the value to be persisted
   176      *        set the value to be persisted
   177      * @param obj an <code>Object</code> that is the value to be set in the data source
   177      * @param obj an {@code Object} that is the value to be set in the data source
   178      */
   178      */
   179     public void setResolvedValue(int index, Object obj) throws SQLException {
   179     public void setResolvedValue(int index, Object obj) throws SQLException {
   180         // modify method to throw SQLException in spec
   180         // modify method to throw SQLException in spec
   181 
   181 
   182         /**
   182         /**
   289 
   289 
   290     /**
   290     /**
   291      * This passes a CachedRowSet as a row to the CachedRowSetWriter
   291      * This passes a CachedRowSet as a row to the CachedRowSetWriter
   292      * after the values have been resolved, back to the datasource.
   292      * after the values have been resolved, back to the datasource.
   293      *
   293      *
   294      * @param row a <code>CachedRowSet</code> object which will hold the
   294      * @param row a {@code CachedRowSet} object which will hold the
   295      *        values of a particular row after they have been resolved by
   295      *        values of a particular row after they have been resolved by
   296      *        the user to synchronize back to datasource.
   296      *        the user to synchronize back to datasource.
   297      * @throws SQLException if synchronization does not happen properly
   297      * @throws SQLException if synchronization does not happen properly
   298      *         maybe beacuse <code>Connection</code> has timed out.
   298      *         maybe beacuse {@code Connection} has timed out.
   299      **/
   299      **/
   300      private void writeData(CachedRowSet row) throws SQLException {
   300      private void writeData(CachedRowSet row) throws SQLException {
   301         crw.updateResolvedConflictToDB(row, crw.getReader().connect((RowSetInternal)crsSync));
   301         crw.updateResolvedConflictToDB(row, crw.getReader().connect((RowSetInternal)crsSync));
   302      }
   302      }
   303 
   303 
   304     /**
   304     /**
   305      * This function builds a row  as a <code>CachedRowSet</code> object
   305      * This function builds a row  as a {@code CachedRowSet} object
   306      * which has been resolved and is ready to be synchrinized to the datasource
   306      * which has been resolved and is ready to be synchrinized to the datasource
   307      *
   307      *
   308      * @throws SQLException if there is problem in building
   308      * @throws SQLException if there is problem in building
   309      *         the metadata of the row.
   309      *         the metadata of the row.
   310      **/
   310      **/
   383 
   383 
   384 
   384 
   385 
   385 
   386     /**
   386     /**
   387      * Sets <i>obj</i> as the value in column <i>columnName</i> in the current row of the
   387      * Sets <i>obj</i> as the value in column <i>columnName</i> in the current row of the
   388      * <code>RowSet</code> object. This value is the resolved value that is to be
   388      * {@code RowSet} object. This value is the resolved value that is to be
   389      * persisted in the data source.
   389      * persisted in the data source.
   390      *
   390      *
   391      * @param columnName a <code>String</code> object giving the name of the column
   391      * @param columnName a {@code String} object giving the name of the column
   392      *        into which to set the value to be persisted
   392      *        into which to set the value to be persisted
   393      * @param obj an <code>Object</code> that is the value to be set in the data source
   393      * @param obj an {@code Object} that is the value to be set in the data source
   394      */
   394      */
   395     public void setResolvedValue(String columnName, Object obj) throws SQLException {
   395     public void setResolvedValue(String columnName, Object obj) throws SQLException {
   396        // modify method to throw SQLException in spec
   396        // modify method to throw SQLException in spec
   397        // %%% Missing implementation!
   397        // %%% Missing implementation!
   398     }
   398     }
   443     void setCachedRowSetWriter(CachedRowSetWriter CRWriter) {
   443     void setCachedRowSetWriter(CachedRowSetWriter CRWriter) {
   444          crw = CRWriter;
   444          crw = CRWriter;
   445     }
   445     }
   446 
   446 
   447     /**
   447     /**
   448      * Moves the cursor down one row from its current position. A <code>SyncResolver</code>
   448      * Moves the cursor down one row from its current position. A {@code SyncResolver}
   449      * cursor is initially positioned before the first conflict row; the first call to the
   449      * cursor is initially positioned before the first conflict row; the first call to the
   450      * method <code>nextConflict()</code> makes the first conflict row the current row;
   450      * method {@code nextConflict()} makes the first conflict row the current row;
   451      * the second call makes the second conflict row the current row, and so on.
   451      * the second call makes the second conflict row the current row, and so on.
   452      * <p>
   452      * <p>
   453      * If an input stream is open for the current row, a call to the method next will
   453      * If an input stream is open for the current row, a call to the method next will
   454      * implicitly close it. A <code>SyncResolver</code> object's warning chain is cleared
   454      * implicitly close it. A {@code SyncResolver} object's warning chain is cleared
   455      * when a new row
   455      * when a new row
   456      *
   456      *
   457      * @return true if the new current row is valid; false if there are no more rows
   457      * @return true if the new current row is valid; false if there are no more rows
   458      * @throws SQLException if a database access occurs
   458      * @throws SQLException if a database access occurs
   459      *
   459      *
   493         return bool;
   493         return bool;
   494    } // end next() method
   494    } // end next() method
   495 
   495 
   496 
   496 
   497     /**
   497     /**
   498      * Moves the cursor to the previous conflict row in this <code>SyncResolver</code> object.
   498      * Moves the cursor to the previous conflict row in this {@code SyncResolver} object.
   499      *
   499      *
   500      * @return <code>true</code> if the cursor is on a valid row; <code>false</code>
   500      * @return {@code true} if the cursor is on a valid row; {@code false}
   501      *     if it is off the result set
   501      *     if it is off the result set
   502      * @throws SQLException if a database access error occurs or the result set type
   502      * @throws SQLException if a database access error occurs or the result set type
   503      *     is TYPE_FORWARD_ONLY
   503      *     is TYPE_FORWARD_ONLY
   504      */
   504      */
   505    public boolean previousConflict() throws SQLException {
   505    public boolean previousConflict() throws SQLException {
   509     //-----------------------------------------------------------------------
   509     //-----------------------------------------------------------------------
   510     // Properties
   510     // Properties
   511     //-----------------------------------------------------------------------
   511     //-----------------------------------------------------------------------
   512 
   512 
   513     /**
   513     /**
   514      * Sets this <code>CachedRowSetImpl</code> object's command property
   514      * Sets this {@code CachedRowSetImpl} object's command property
   515      * to the given <code>String</code> object and clears the parameters,
   515      * to the given {@code String} object and clears the parameters,
   516      * if any, that were set for the previous command.
   516      * if any, that were set for the previous command.
   517      * <P>
   517      * <P>
   518      * The command property may not be needed
   518      * The command property may not be needed
   519      * if the rowset is produced by a data source, such as a spreadsheet,
   519      * if the rowset is produced by a data source, such as a spreadsheet,
   520      * that does not support commands. Thus, this property is optional
   520      * that does not support commands. Thus, this property is optional
   521      * and may be <code>null</code>.
   521      * and may be {@code null}.
   522      *
   522      *
   523      * @param cmd a <code>String</code> object containing an SQL query
   523      * @param cmd a {@code String} object containing an SQL query
   524      *            that will be set as the command; may be <code>null</code>
   524      *            that will be set as the command; may be {@code null}
   525      * @throws SQLException if an error occurs
   525      * @throws SQLException if an error occurs
   526      */
   526      */
   527     public void setCommand(String cmd) throws SQLException {
   527     public void setCommand(String cmd) throws SQLException {
   528          throw new UnsupportedOperationException();
   528          throw new UnsupportedOperationException();
   529     }
   529     }
   532     //---------------------------------------------------------------------
   532     //---------------------------------------------------------------------
   533     // Reading and writing data
   533     // Reading and writing data
   534     //---------------------------------------------------------------------
   534     //---------------------------------------------------------------------
   535 
   535 
   536     /**
   536     /**
   537      * Populates this <code>CachedRowSetImpl</code> object with data from
   537      * Populates this {@code CachedRowSetImpl} object with data from
   538      * the given <code>ResultSet</code> object.  This
   538      * the given {@code ResultSet} object.  This
   539      * method is an alternative to the method <code>execute</code>
   539      * method is an alternative to the method {@code execute}
   540      * for filling the rowset with data.  The method <code>populate</code>
   540      * for filling the rowset with data.  The method {@code populate}
   541      * does not require that the properties needed by the method
   541      * does not require that the properties needed by the method
   542      * <code>execute</code>, such as the <code>command</code> property,
   542      * {@code execute}, such as the {@code command} property,
   543      * be set. This is true because the method <code>populate</code>
   543      * be set. This is true because the method {@code populate}
   544      * is given the <code>ResultSet</code> object from
   544      * is given the {@code ResultSet} object from
   545      * which to get data and thus does not need to use the properties
   545      * which to get data and thus does not need to use the properties
   546      * required for setting up a connection and executing this
   546      * required for setting up a connection and executing this
   547      * <code>CachedRowSetImpl</code> object's command.
   547      * {@code CachedRowSetImpl} object's command.
   548      * <P>
   548      * <P>
   549      * After populating this rowset with data, the method
   549      * After populating this rowset with data, the method
   550      * <code>populate</code> sets the rowset's metadata and
   550      * {@code populate} sets the rowset's metadata and
   551      * then sends a <code>RowSetChangedEvent</code> object
   551      * then sends a {@code RowSetChangedEvent} object
   552      * to all registered listeners prior to returning.
   552      * to all registered listeners prior to returning.
   553      *
   553      *
   554      * @param data the <code>ResultSet</code> object containing the data
   554      * @param data the {@code ResultSet} object containing the data
   555      *             to be read into this <code>CachedRowSetImpl</code> object
   555      *             to be read into this {@code CachedRowSetImpl} object
   556      * @throws SQLException if an error occurs; or the max row setting is
   556      * @throws SQLException if an error occurs; or the max row setting is
   557      *          violated while populating the RowSet
   557      *          violated while populating the RowSet
   558      * @see #execute
   558      * @see #execute
   559      */
   559      */
   560     public void populate(ResultSet data) throws SQLException {
   560     public void populate(ResultSet data) throws SQLException {
   561          throw new UnsupportedOperationException();
   561          throw new UnsupportedOperationException();
   562     }
   562     }
   563 
   563 
   564     /**
   564     /**
   565      * Populates this <code>CachedRowSetImpl</code> object with data,
   565      * Populates this {@code CachedRowSetImpl} object with data,
   566      * using the given connection to produce the result set from
   566      * using the given connection to produce the result set from
   567      * which data will be read.  A second form of this method,
   567      * which data will be read.  A second form of this method,
   568      * which takes no arguments, uses the values from this rowset's
   568      * which takes no arguments, uses the values from this rowset's
   569      * user, password, and either url or data source properties to
   569      * user, password, and either url or data source properties to
   570      * create a new database connection. The form of <code>execute</code>
   570      * create a new database connection. The form of {@code execute}
   571      * that is given a connection ignores these properties.
   571      * that is given a connection ignores these properties.
   572      *
   572      *
   573      * @param conn A standard JDBC <code>Connection</code> object that this
   573      * @param conn A standard JDBC {@code Connection} object that this
   574      * <code>CachedRowSet</code> object can pass to a synchronization provider
   574      * {@code CachedRowSet} object can pass to a synchronization provider
   575      * to establish a connection to the data source
   575      * to establish a connection to the data source
   576      * @throws SQLException if an invalid <code>Connection</code> is supplied
   576      * @throws SQLException if an invalid {@code Connection} is supplied
   577      *           or an error occurs in establishing the connection to the
   577      *           or an error occurs in establishing the connection to the
   578      *           data source
   578      *           data source
   579      * @see #populate
   579      * @see #populate
   580      * @see java.sql.Connection
   580      * @see java.sql.Connection
   581      */
   581      */
   583         throw new UnsupportedOperationException();
   583         throw new UnsupportedOperationException();
   584     }
   584     }
   585 
   585 
   586     /**
   586     /**
   587      * Propagates all row update, insert, and delete changes to the
   587      * Propagates all row update, insert, and delete changes to the
   588      * underlying data source backing this <code>CachedRowSetImpl</code>
   588      * underlying data source backing this {@code CachedRowSetImpl}
   589      * object.
   589      * object.
   590      * <P>
   590      * <P>
   591      * <b>Note</b>In the reference implementation an optimistic concurrency implementation
   591      * <b>Note</b>In the reference implementation an optimistic concurrency implementation
   592      * is provided as a sample implementation of a the <code>SyncProvider</code>
   592      * is provided as a sample implementation of a the {@code SyncProvider}
   593      * abstract class.
   593      * abstract class.
   594      * <P>
   594      * <P>
   595      * This method fails if any of the updates cannot be propagated back
   595      * This method fails if any of the updates cannot be propagated back
   596      * to the data source.  When it fails, the caller can assume that
   596      * to the data source.  When it fails, the caller can assume that
   597      * none of the updates are reflected in the data source.
   597      * none of the updates are reflected in the data source.
   599      * is set to the first "updated" row that resulted in an exception
   599      * is set to the first "updated" row that resulted in an exception
   600      * unless the row that caused the exception is a "deleted" row.
   600      * unless the row that caused the exception is a "deleted" row.
   601      * In that case, when deleted rows are not shown, which is usually true,
   601      * In that case, when deleted rows are not shown, which is usually true,
   602      * the current row is not affected.
   602      * the current row is not affected.
   603      * <P>
   603      * <P>
   604      * If no <code>SyncProvider</code> is configured, the reference implementation
   604      * If no {@code SyncProvider} is configured, the reference implementation
   605      * leverages the <code>RIOptimisticProvider</code> available which provides the
   605      * leverages the {@code RIOptimisticProvider} available which provides the
   606      * default and reference synchronization capabilities for disconnected
   606      * default and reference synchronization capabilities for disconnected
   607      * <code>RowSets</code>.
   607      * {@code RowSets}.
   608      *
   608      *
   609      * @throws SQLException if the cursor is on the insert row or the underlying
   609      * @throws SQLException if the cursor is on the insert row or the underlying
   610      *          reference synchronization provider fails to commit the updates
   610      *          reference synchronization provider fails to commit the updates
   611      *          to the datasource
   611      *          to the datasource
   612      * @throws SyncProviderException if an internal error occurs within the
   612      * @throws SyncProviderException if an internal error occurs within the
   613      *          <code>SyncProvider</code> instance during either during the
   613      *          {@code SyncProvider} instance during either during the
   614      *          process or at any time when the <code>SyncProvider</code>
   614      *          process or at any time when the {@code SyncProvider}
   615      *          instance touches the data source.
   615      *          instance touches the data source.
   616      * @see #acceptChanges(java.sql.Connection)
   616      * @see #acceptChanges(java.sql.Connection)
   617      * @see javax.sql.RowSetWriter
   617      * @see javax.sql.RowSetWriter
   618      * @see javax.sql.rowset.spi.SyncProvider
   618      * @see javax.sql.rowset.spi.SyncProvider
   619      */
   619      */
   621         throw new UnsupportedOperationException();
   621         throw new UnsupportedOperationException();
   622     }
   622     }
   623 
   623 
   624     /**
   624     /**
   625      * Propagates all row update, insert, and delete changes to the
   625      * Propagates all row update, insert, and delete changes to the
   626      * data source backing this <code>CachedRowSetImpl</code> object
   626      * data source backing this {@code CachedRowSetImpl} object
   627      * using the given <code>Connection</code> object.
   627      * using the given {@code Connection} object.
   628      * <P>
   628      * <P>
   629      * The reference implementation <code>RIOptimisticProvider</code>
   629      * The reference implementation {@code RIOptimisticProvider}
   630      * modifies its synchronization to a write back function given
   630      * modifies its synchronization to a write back function given
   631      * the updated connection
   631      * the updated connection
   632      * The reference implementation modifies its synchronization behaviour
   632      * The reference implementation modifies its synchronization behaviour
   633      * via the <code>SyncProvider</code> to ensure the synchronization
   633      * via the {@code SyncProvider} to ensure the synchronization
   634      * occurs according to the updated JDBC <code>Connection</code>
   634      * occurs according to the updated JDBC {@code Connection}
   635      * properties.
   635      * properties.
   636      *
   636      *
   637      * @param con a standard JDBC <code>Connection</code> object
   637      * @param con a standard JDBC {@code Connection} object
   638      * @throws SQLException if the cursor is on the insert row or the underlying
   638      * @throws SQLException if the cursor is on the insert row or the underlying
   639      *                   synchronization provider fails to commit the updates
   639      *                   synchronization provider fails to commit the updates
   640      *                   back to the data source
   640      *                   back to the data source
   641      * @see #acceptChanges
   641      * @see #acceptChanges
   642      * @see javax.sql.RowSetWriter
   642      * @see javax.sql.RowSetWriter
   646     public void acceptChanges(Connection con) throws SyncProviderException{
   646     public void acceptChanges(Connection con) throws SyncProviderException{
   647      throw new UnsupportedOperationException();
   647      throw new UnsupportedOperationException();
   648     }
   648     }
   649 
   649 
   650     /**
   650     /**
   651      * Restores this <code>CachedRowSetImpl</code> object to its original state,
   651      * Restores this {@code CachedRowSetImpl} object to its original state,
   652      * that is, its state before the last set of changes.
   652      * that is, its state before the last set of changes.
   653      * <P>
   653      * <P>
   654      * Before returning, this method moves the cursor before the first row
   654      * Before returning, this method moves the cursor before the first row
   655      * and sends a <code>rowSetChanged</code> event to all registered
   655      * and sends a {@code rowSetChanged} event to all registered
   656      * listeners.
   656      * listeners.
   657      * @throws SQLException if an error is occurs rolling back the RowSet
   657      * @throws SQLException if an error is occurs rolling back the RowSet
   658      *           state to the definied original value.
   658      *           state to the definied original value.
   659      * @see javax.sql.RowSetListener#rowSetChanged
   659      * @see javax.sql.RowSetListener#rowSetChanged
   660      */
   660      */
   661     public void restoreOriginal() throws SQLException {
   661     public void restoreOriginal() throws SQLException {
   662         throw new UnsupportedOperationException();
   662         throw new UnsupportedOperationException();
   663     }
   663     }
   664 
   664 
   665     /**
   665     /**
   666      * Releases the current contents of this <code>CachedRowSetImpl</code>
   666      * Releases the current contents of this {@code CachedRowSetImpl}
   667      * object and sends a <code>rowSetChanged</code> event object to all
   667      * object and sends a {@code rowSetChanged} event object to all
   668      * registered listeners.
   668      * registered listeners.
   669      *
   669      *
   670      * @throws SQLException if an error occurs flushing the contents of
   670      * @throws SQLException if an error occurs flushing the contents of
   671      *           RowSet.
   671      *           RowSet.
   672      * @see javax.sql.RowSetListener#rowSetChanged
   672      * @see javax.sql.RowSetListener#rowSetChanged
   688         throw new UnsupportedOperationException();
   688         throw new UnsupportedOperationException();
   689     }
   689     }
   690 
   690 
   691     /**
   691     /**
   692      * Immediately removes the current row from this
   692      * Immediately removes the current row from this
   693      * <code>CachedRowSetImpl</code> object if the row has been inserted, and
   693      * {@code CachedRowSetImpl} object if the row has been inserted, and
   694      * also notifies listeners the a row has changed.  An exception is thrown
   694      * also notifies listeners the a row has changed.  An exception is thrown
   695      * if the row is not a row that has been inserted or the cursor is before
   695      * if the row is not a row that has been inserted or the cursor is before
   696      * the first row, after the last row, or on the insert row.
   696      * the first row, after the last row, or on the insert row.
   697      * <P>
   697      * <P>
   698      * This operation cannot be undone.
   698      * This operation cannot be undone.
   708     /**
   708     /**
   709      * Immediately reverses the last update operation if the
   709      * Immediately reverses the last update operation if the
   710      * row has been modified. This method can be
   710      * row has been modified. This method can be
   711      * called to reverse updates on a all columns until all updates in a row have
   711      * called to reverse updates on a all columns until all updates in a row have
   712      * been rolled back to their originating state since the last synchronization
   712      * been rolled back to their originating state since the last synchronization
   713      * (<code>acceptChanges</code>) or population. This method may also be called
   713      * ({@code acceptChanges}) or population. This method may also be called
   714      * while performing updates to the insert row.
   714      * while performing updates to the insert row.
   715      * <P>
   715      * <P>
   716      * <code>undoUpdate</code may be called at any time during the life-time of a
   716      * {@code undoUpdate} may be called at any time during the life-time of a
   717      * rowset, however after a synchronization has occurs this method has no
   717      * rowset, however after a synchronization has occurs this method has no
   718      * affect until further modification to the RowSet data occurs.
   718      * affect until further modification to the RowSet data occurs.
   719      *
   719      *
   720      * @throws SQLException if cursor is before the first row, after the last
   720      * @throws SQLException if cursor is before the first row, after the last
   721      *     row in rowset.
   721      *     row in rowset.
   731     //--------------------------------------------------------------------
   731     //--------------------------------------------------------------------
   732     // Views
   732     // Views
   733     //--------------------------------------------------------------------
   733     //--------------------------------------------------------------------
   734 
   734 
   735     /**
   735     /**
   736      * Returns a new <code>RowSet</code> object backed by the same data as
   736      * Returns a new {@code RowSet} object backed by the same data as
   737      * that of this <code>CachedRowSetImpl</code> object and sharing a set of cursors
   737      * that of this {@code CachedRowSetImpl} object and sharing a set of cursors
   738      * with it. This allows cursors to interate over a shared set of rows, providing
   738      * with it. This allows cursors to interate over a shared set of rows, providing
   739      * multiple views of the underlying data.
   739      * multiple views of the underlying data.
   740      *
   740      *
   741      * @return a <code>RowSet</code> object that is a copy of this <code>CachedRowSetImpl</code>
   741      * @return a {@code RowSet} object that is a copy of this {@code CachedRowSetImpl}
   742      * object and shares a set of cursors with it
   742      * object and shares a set of cursors with it
   743      * @throws SQLException if an error occurs or cloning is
   743      * @throws SQLException if an error occurs or cloning is
   744      *                         not supported
   744      *                         not supported
   745      * @see javax.sql.RowSetEvent
   745      * @see javax.sql.RowSetEvent
   746      * @see javax.sql.RowSetListener
   746      * @see javax.sql.RowSetListener
   748     public RowSet createShared() throws SQLException {
   748     public RowSet createShared() throws SQLException {
   749         throw new UnsupportedOperationException();
   749         throw new UnsupportedOperationException();
   750     }
   750     }
   751 
   751 
   752     /**
   752     /**
   753      * Returns a new <code>RowSet</code> object containing by the same data
   753      * Returns a new {@code RowSet} object containing by the same data
   754      * as this <code>CachedRowSetImpl</code> object.  This method
   754      * as this {@code CachedRowSetImpl} object.  This method
   755      * differs from the method <code>createCopy</code> in that it throws a
   755      * differs from the method {@code createCopy} in that it throws a
   756      * <code>CloneNotSupportedException</code> object instead of an
   756      * {@code CloneNotSupportedException} object instead of an
   757      * <code>SQLException</code> object, as the method <code>createShared</code>
   757      * {@code SQLException} object, as the method {@code createShared}
   758      * does.  This <code>clone</code>
   758      * does.  This {@code clone}
   759      * method is called internally by the method <code>createShared</code>,
   759      * method is called internally by the method {@code createShared},
   760      * which catches the <code>CloneNotSupportedException</code> object
   760      * which catches the {@code CloneNotSupportedException} object
   761      * and in turn throws a new <code>SQLException</code> object.
   761      * and in turn throws a new {@code SQLException} object.
   762      *
   762      *
   763      * @return a copy of this <code>CachedRowSetImpl</code> object
   763      * @return a copy of this {@code CachedRowSetImpl} object
   764      * @throws CloneNotSupportedException if an error occurs when
   764      * @throws CloneNotSupportedException if an error occurs when
   765      * attempting to clone this <code>CachedRowSetImpl</code> object
   765      * attempting to clone this {@code CachedRowSetImpl} object
   766      * @see #createShared
   766      * @see #createShared
   767      */
   767      */
   768     protected Object clone() throws CloneNotSupportedException  {
   768     protected Object clone() throws CloneNotSupportedException  {
   769        throw new UnsupportedOperationException();
   769        throw new UnsupportedOperationException();
   770     }
   770     }
   771 
   771 
   772     /**
   772     /**
   773      * Creates a <code>RowSet</code> object that is a deep copy of
   773      * Creates a {@code RowSet} object that is a deep copy of
   774      * this <code>CachedRowSetImpl</code> object's data, including
   774      * this {@code CachedRowSetImpl} object's data, including
   775      * constraints.  Updates made
   775      * constraints.  Updates made
   776      * on a copy are not visible to the original rowset;
   776      * on a copy are not visible to the original rowset;
   777      * a copy of a rowset is completely independent from the original.
   777      * a copy of a rowset is completely independent from the original.
   778      * <P>
   778      * <P>
   779      * Making a copy saves the cost of creating an identical rowset
   779      * Making a copy saves the cost of creating an identical rowset
   780      * from first principles, which can be quite expensive.
   780      * from first principles, which can be quite expensive.
   781      * For example, it can eliminate the need to query a
   781      * For example, it can eliminate the need to query a
   782      * remote database server.
   782      * remote database server.
   783      * @return a new <code>CachedRowSet</code> object that is a deep copy
   783      * @return a new {@code CachedRowSet} object that is a deep copy
   784      *           of this <code>CachedRowSet</code> object and is
   784      *           of this {@code CachedRowSet} object and is
   785      *           completely independent from this <code>CachedRowSetImpl</code>
   785      *           completely independent from this {@code CachedRowSetImpl}
   786      *           object.
   786      *           object.
   787      * @throws SQLException if an error occurs in generating the copy of this
   787      * @throws SQLException if an error occurs in generating the copy of this
   788      *           of the <code>CachedRowSetImpl</code>
   788      *           of the {@code CachedRowSetImpl}
   789      * @see #createShared
   789      * @see #createShared
   790      * @see javax.sql.RowSetEvent
   790      * @see javax.sql.RowSetEvent
   791      * @see javax.sql.RowSetListener
   791      * @see javax.sql.RowSetListener
   792      */
   792      */
   793     public CachedRowSet createCopy() throws SQLException {
   793     public CachedRowSet createCopy() throws SQLException {
   794         throw new UnsupportedOperationException();
   794         throw new UnsupportedOperationException();
   795     }
   795     }
   796 
   796 
   797     /**
   797     /**
   798      * Creates a <code>RowSet</code> object that is a copy of
   798      * Creates a {@code RowSet} object that is a copy of
   799      * this <code>CachedRowSetImpl</code> object's table structure
   799      * this {@code CachedRowSetImpl} object's table structure
   800      * and the constraints only.
   800      * and the constraints only.
   801      * There will be no data in the object being returned.
   801      * There will be no data in the object being returned.
   802      * Updates made on a copy are not visible to the original rowset.
   802      * Updates made on a copy are not visible to the original rowset.
   803      * <P>
   803      * <P>
   804      * This helps in getting the underlying XML schema which can
   804      * This helps in getting the underlying XML schema which can
   805      * be used as the basis for populating a <code>WebRowSet</code>.
   805      * be used as the basis for populating a {@code WebRowSet}.
   806      *
   806      *
   807      * @return a new <code>CachedRowSet</code> object that is a copy
   807      * @return a new {@code CachedRowSet} object that is a copy
   808      * of this <code>CachedRowSetImpl</code> object's schema and
   808      * of this {@code CachedRowSetImpl} object's schema and
   809      * retains all the constraints on the original rowset but contains
   809      * retains all the constraints on the original rowset but contains
   810      * no data
   810      * no data
   811      * @throws SQLException if an error occurs in generating the copy
   811      * @throws SQLException if an error occurs in generating the copy
   812      * of the <code>CachedRowSet</code> object
   812      * of the {@code CachedRowSet} object
   813      * @see #createShared
   813      * @see #createShared
   814      * @see #createCopy
   814      * @see #createCopy
   815      * @see #createCopyNoConstraints
   815      * @see #createCopyNoConstraints
   816      * @see javax.sql.RowSetEvent
   816      * @see javax.sql.RowSetEvent
   817      * @see javax.sql.RowSetListener
   817      * @see javax.sql.RowSetListener
   819     public CachedRowSet createCopySchema() throws SQLException {
   819     public CachedRowSet createCopySchema() throws SQLException {
   820         throw new UnsupportedOperationException();
   820         throw new UnsupportedOperationException();
   821     }
   821     }
   822 
   822 
   823     /**
   823     /**
   824      * Creates a <code>CachedRowSet</code> object that is a copy of
   824      * Creates a {@code CachedRowSet} object that is a copy of
   825      * this <code>CachedRowSetImpl</code> object's data only.
   825      * this {@code CachedRowSetImpl} object's data only.
   826      * All constraints set in this object will not be there
   826      * All constraints set in this object will not be there
   827      * in the returning object.  Updates made
   827      * in the returning object.  Updates made
   828      * on a copy are not visible to the original rowset.
   828      * on a copy are not visible to the original rowset.
   829      *
   829      *
   830      * @return a new <code>CachedRowSet</code> object that is a deep copy
   830      * @return a new {@code CachedRowSet} object that is a deep copy
   831      * of this <code>CachedRowSetImpl</code> object and is
   831      * of this {@code CachedRowSetImpl} object and is
   832      * completely independent from this <code>CachedRowSetImpl</code> object
   832      * completely independent from this {@code CachedRowSetImpl} object
   833      * @throws SQLException if an error occurs in generating the copy of the
   833      * @throws SQLException if an error occurs in generating the copy of the
   834      * of the <code>CachedRowSet</code>
   834      * of the {@code CachedRowSet}
   835      * @see #createShared
   835      * @see #createShared
   836      * @see #createCopy
   836      * @see #createCopy
   837      * @see #createCopySchema
   837      * @see #createCopySchema
   838      * @see javax.sql.RowSetEvent
   838      * @see javax.sql.RowSetEvent
   839      * @see javax.sql.RowSetListener
   839      * @see javax.sql.RowSetListener
   841     public CachedRowSet createCopyNoConstraints() throws SQLException {
   841     public CachedRowSet createCopyNoConstraints() throws SQLException {
   842         throw new UnsupportedOperationException();
   842         throw new UnsupportedOperationException();
   843     }
   843     }
   844 
   844 
   845     /**
   845     /**
   846      * Converts this <code>CachedRowSetImpl</code> object to a collection
   846      * Converts this {@code CachedRowSetImpl} object to a collection
   847      * of tables. The sample implementation utilitizes the <code>TreeMap</code>
   847      * of tables. The sample implementation utilitizes the {@code TreeMap}
   848      * collection type.
   848      * collection type.
   849      * This class guarantees that the map will be in ascending key order,
   849      * This class guarantees that the map will be in ascending key order,
   850      * sorted according to the natural order for the key's class.
   850      * sorted according to the natural order for the key's class.
   851      *
   851      *
   852      * @return a <code>Collection</code> object consisting of tables,
   852      * @return a {@code Collection} object consisting of tables,
   853      *         each of which is a copy of a row in this
   853      *         each of which is a copy of a row in this
   854      *         <code>CachedRowSetImpl</code> object
   854      *         {@code CachedRowSetImpl} object
   855      * @throws SQLException if an error occurs in generating the collection
   855      * @throws SQLException if an error occurs in generating the collection
   856      * @see #toCollection(int)
   856      * @see #toCollection(int)
   857      * @see #toCollection(String)
   857      * @see #toCollection(String)
   858      * @see java.util.TreeMap
   858      * @see java.util.TreeMap
   859      */
   859      */
   861     public Collection toCollection() throws SQLException {
   861     public Collection toCollection() throws SQLException {
   862        throw new UnsupportedOperationException();
   862        throw new UnsupportedOperationException();
   863     }
   863     }
   864 
   864 
   865     /**
   865     /**
   866      * Returns the specified column of this <code>CachedRowSetImpl</code> object
   866      * Returns the specified column of this {@code CachedRowSetImpl} object
   867      * as a <code>Collection</code> object.  This method makes a copy of the
   867      * as a {@code Collection} object.  This method makes a copy of the
   868      * column's data and utilitizes the <code>Vector</code> to establish the
   868      * column's data and utilitizes the {@code Vector} to establish the
   869      * collection. The <code>Vector</code> class implements a growable array
   869      * collection. The {@code Vector} class implements a growable array
   870      * objects allowing the individual components to be accessed using an
   870      * objects allowing the individual components to be accessed using an
   871      * an integer index similar to that of an array.
   871      * an integer index similar to that of an array.
   872      *
   872      *
   873      * @return a <code>Collection</code> object that contains the value(s)
   873      * @return a {@code Collection} object that contains the value(s)
   874      *         stored in the specified column of this
   874      *         stored in the specified column of this
   875      *         <code>CachedRowSetImpl</code>
   875      *         {@code CachedRowSetImpl}
   876      *         object
   876      *         object
   877      * @throws SQLException if an error occurs generated the collection; or
   877      * @throws SQLException if an error occurs generated the collection; or
   878      *          an invalid column is provided.
   878      *          an invalid column is provided.
   879      * @see #toCollection()
   879      * @see #toCollection()
   880      * @see #toCollection(String)
   880      * @see #toCollection(String)
   884     public Collection toCollection(int column) throws SQLException {
   884     public Collection toCollection(int column) throws SQLException {
   885        throw new UnsupportedOperationException();
   885        throw new UnsupportedOperationException();
   886     }
   886     }
   887 
   887 
   888     /**
   888     /**
   889      * Returns the specified column of this <code>CachedRowSetImpl</code> object
   889      * Returns the specified column of this {@code CachedRowSetImpl} object
   890      * as a <code>Collection</code> object.  This method makes a copy of the
   890      * as a {@code Collection} object.  This method makes a copy of the
   891      * column's data and utilitizes the <code>Vector</code> to establish the
   891      * column's data and utilitizes the {@code Vector} to establish the
   892      * collection. The <code>Vector</code> class implements a growable array
   892      * collection. The {@code Vector} class implements a growable array
   893      * objects allowing the individual components to be accessed using an
   893      * objects allowing the individual components to be accessed using an
   894      * an integer index similar to that of an array.
   894      * an integer index similar to that of an array.
   895      *
   895      *
   896      * @return a <code>Collection</code> object that contains the value(s)
   896      * @return a {@code Collection} object that contains the value(s)
   897      *         stored in the specified column of this
   897      *         stored in the specified column of this
   898      *         <code>CachedRowSetImpl</code>
   898      *         {@code CachedRowSetImpl}
   899      *         object
   899      *         object
   900      * @throws SQLException if an error occurs generated the collection; or
   900      * @throws SQLException if an error occurs generated the collection; or
   901      *          an invalid column is provided.
   901      *          an invalid column is provided.
   902      * @see #toCollection()
   902      * @see #toCollection()
   903      * @see #toCollection(int)
   903      * @see #toCollection(int)
   912     // Advanced features
   912     // Advanced features
   913     //--------------------------------------------------------------------
   913     //--------------------------------------------------------------------
   914 
   914 
   915 
   915 
   916     /**
   916     /**
   917      * Returns the <code>SyncProvider</code> implementation being used
   917      * Returns the {@code SyncProvider} implementation being used
   918      * with this <code>CachedRowSetImpl</code> implementation rowset.
   918      * with this {@code CachedRowSetImpl} implementation rowset.
   919      *
   919      *
   920      * @return the SyncProvider used by the rowset. If not provider was
   920      * @return the SyncProvider used by the rowset. If not provider was
   921      *          set when the rowset was instantiated, the reference
   921      *          set when the rowset was instantiated, the reference
   922      *          implementation (default) provider is returned.
   922      *          implementation (default) provider is returned.
   923      * @throws SQLException if error occurs while return the
   923      * @throws SQLException if error occurs while return the
   924      *          <code>SyncProvider</code> instance.
   924      *          {@code SyncProvider} instance.
   925      */
   925      */
   926     public SyncProvider getSyncProvider() throws SQLException {
   926     public SyncProvider getSyncProvider() throws SQLException {
   927       throw new UnsupportedOperationException();
   927       throw new UnsupportedOperationException();
   928     }
   928     }
   929 
   929 
   930     /**
   930     /**
   931      * Sets the active <code>SyncProvider</code> and attempts to load
   931      * Sets the active {@code SyncProvider} and attempts to load
   932      * load the new provider using the <code>SyncFactory</code> SPI.
   932      * load the new provider using the {@code SyncFactory} SPI.
   933      *
   933      *
   934      * @throws SQLException if an error occurs while resetting the
   934      * @throws SQLException if an error occurs while resetting the
   935      *          <code>SyncProvider</code>.
   935      *          {@code SyncProvider}.
   936      */
   936      */
   937     public void setSyncProvider(String providerStr) throws SQLException {
   937     public void setSyncProvider(String providerStr) throws SQLException {
   938         throw new UnsupportedOperationException();
   938         throw new UnsupportedOperationException();
   939     }
   939     }
   940 
   940 
   951     //---------------------------------------------------------------------
   951     //---------------------------------------------------------------------
   952     // Reading and writing data
   952     // Reading and writing data
   953     //---------------------------------------------------------------------
   953     //---------------------------------------------------------------------
   954 
   954 
   955     /**
   955     /**
   956      * Populates this <code>CachedRowSetImpl</code> object with data.
   956      * Populates this {@code CachedRowSetImpl} object with data.
   957      * This form of the method uses the rowset's user, password, and url or
   957      * This form of the method uses the rowset's user, password, and url or
   958      * data source name properties to create a database
   958      * data source name properties to create a database
   959      * connection.  If properties that are needed
   959      * connection.  If properties that are needed
   960      * have not been set, this method will throw an exception.
   960      * have not been set, this method will throw an exception.
   961      * <P>
   961      * <P>
   962      * Another form of this method uses an existing JDBC <code>Connection</code>
   962      * Another form of this method uses an existing JDBC {@code Connection}
   963      * object instead of creating a new one; therefore, it ignores the
   963      * object instead of creating a new one; therefore, it ignores the
   964      * properties used for establishing a new connection.
   964      * properties used for establishing a new connection.
   965      * <P>
   965      * <P>
   966      * The query specified by the command property is executed to create a
   966      * The query specified by the command property is executed to create a
   967      * <code>ResultSet</code> object from which to retrieve data.
   967      * {@code ResultSet} object from which to retrieve data.
   968      * The current contents of the rowset are discarded, and the
   968      * The current contents of the rowset are discarded, and the
   969      * rowset's metadata is also (re)set.  If there are outstanding updates,
   969      * rowset's metadata is also (re)set.  If there are outstanding updates,
   970      * they are also ignored.
   970      * they are also ignored.
   971      * <P>
   971      * <P>
   972      * The method <code>execute</code> closes any database connections that it
   972      * The method {@code execute} closes any database connections that it
   973      * creates.
   973      * creates.
   974      *
   974      *
   975      * @throws SQLException if an error occurs or the
   975      * @throws SQLException if an error occurs or the
   976      *                         necessary properties have not been set
   976      *                         necessary properties have not been set
   977      */
   977      */
   985     // Methods inherited from ResultSet
   985     // Methods inherited from ResultSet
   986     //-----------------------------------
   986     //-----------------------------------
   987 
   987 
   988     /**
   988     /**
   989      * Moves the cursor down one row from its current position and
   989      * Moves the cursor down one row from its current position and
   990      * returns <code>true</code> if the new cursor position is a
   990      * returns {@code true} if the new cursor position is a
   991      * valid row.
   991      * valid row.
   992      * The cursor for a new <code>ResultSet</code> object is initially
   992      * The cursor for a new {@code ResultSet} object is initially
   993      * positioned before the first row. The first call to the method
   993      * positioned before the first row. The first call to the method
   994      * <code>next</code> moves the cursor to the first row, making it
   994      * {@code next} moves the cursor to the first row, making it
   995      * the current row; the second call makes the second row the
   995      * the current row; the second call makes the second row the
   996      * current row, and so on.
   996      * current row, and so on.
   997      *
   997      *
   998      * <P>If an input stream from the previous row is open, it is
   998      * <P>If an input stream from the previous row is open, it is
   999      * implicitly closed. The <code>ResultSet</code> object's warning
   999      * implicitly closed. The {@code ResultSet} object's warning
  1000      * chain is cleared when a new row is read.
  1000      * chain is cleared when a new row is read.
  1001      *
  1001      *
  1002      * @return <code>true</code> if the new current row is valid;
  1002      * @return {@code true} if the new current row is valid;
  1003      *         <code>false</code> if there are no more rows
  1003      *         {@code false} if there are no more rows
  1004      * @throws SQLException if an error occurs or
  1004      * @throws SQLException if an error occurs or
  1005      *            the cursor is not positioned in the rowset, before
  1005      *            the cursor is not positioned in the rowset, before
  1006      *            the first row, or after the last row
  1006      *            the first row, or after the last row
  1007      */
  1007      */
  1008     public boolean next() throws SQLException {
  1008     public boolean next() throws SQLException {
  1009        throw new UnsupportedOperationException();
  1009        throw new UnsupportedOperationException();
  1010     }
  1010     }
  1011 
  1011 
  1012     /**
  1012     /**
  1013      * Moves this <code>CachedRowSetImpl</code> object's cursor to the next
  1013      * Moves this {@code CachedRowSetImpl} object's cursor to the next
  1014      * row and returns <code>true</code> if the cursor is still in the rowset;
  1014      * row and returns {@code true} if the cursor is still in the rowset;
  1015      * returns <code>false</code> if the cursor has moved to the position after
  1015      * returns {@code false} if the cursor has moved to the position after
  1016      * the last row.
  1016      * the last row.
  1017      * <P>
  1017      * <P>
  1018      * This method handles the cases where the cursor moves to a row that
  1018      * This method handles the cases where the cursor moves to a row that
  1019      * has been deleted.
  1019      * has been deleted.
  1020      * If this rowset shows deleted rows and the cursor moves to a row
  1020      * If this rowset shows deleted rows and the cursor moves to a row
  1021      * that has been deleted, this method moves the cursor to the next
  1021      * that has been deleted, this method moves the cursor to the next
  1022      * row until the cursor is on a row that has not been deleted.
  1022      * row until the cursor is on a row that has not been deleted.
  1023      * <P>
  1023      * <P>
  1024      * The method <code>internalNext</code> is called by methods such as
  1024      * The method {@code internalNext} is called by methods such as
  1025      * <code>next</code>, <code>absolute</code>, and <code>relative</code>,
  1025      * {@code next}, {@code absolute}, and {@code relative},
  1026      * and, as its name implies, is only called internally.
  1026      * and, as its name implies, is only called internally.
  1027      * <p>
  1027      * <p>
  1028      * This is a implementation only method and is not required as a standard
  1028      * This is a implementation only method and is not required as a standard
  1029      * implementation of the <code>CachedRowSet</code> interface.
  1029      * implementation of the {@code CachedRowSet} interface.
  1030      *
  1030      *
  1031      * @return <code>true</code> if the cursor is on a valid row in this
  1031      * @return {@code true} if the cursor is on a valid row in this
  1032      *         rowset; <code>false</code> if it is after the last row
  1032      *         rowset; {@code false} if it is after the last row
  1033      * @throws SQLException if an error occurs
  1033      * @throws SQLException if an error occurs
  1034      */
  1034      */
  1035     protected boolean internalNext() throws SQLException {
  1035     protected boolean internalNext() throws SQLException {
  1036         throw new UnsupportedOperationException();
  1036         throw new UnsupportedOperationException();
  1037     }
  1037     }
  1038 
  1038 
  1039     /**
  1039     /**
  1040      * Closes this <code>CachedRowSetImpl</code> objecy and releases any resources
  1040      * Closes this {@code CachedRowSetImpl} objecy and releases any resources
  1041      * it was using.
  1041      * it was using.
  1042      *
  1042      *
  1043      * @throws SQLException if an error occurs when releasing any resources in use
  1043      * @throws SQLException if an error occurs when releasing any resources in use
  1044      * by this <code>CachedRowSetImpl</code> object
  1044      * by this {@code CachedRowSetImpl} object
  1045      */
  1045      */
  1046     public void close() throws SQLException {
  1046     public void close() throws SQLException {
  1047         throw new UnsupportedOperationException();
  1047         throw new UnsupportedOperationException();
  1048     }
  1048     }
  1049 
  1049 
  1050     /**
  1050     /**
  1051      * Reports whether the last column read was SQL <code>NULL</code>.
  1051      * Reports whether the last column read was SQL {@code NULL}.
  1052      * Note that you must first call the method <code>getXXX</code>
  1052      * Note that you must first call the method {@code getXXX}
  1053      * on a column to try to read its value and then call the method
  1053      * on a column to try to read its value and then call the method
  1054      * <code>wasNull</code> to determine whether the value was
  1054      * {@code wasNull} to determine whether the value was
  1055      * SQL <code>NULL</code>.
  1055      * SQL {@code NULL}.
  1056      *
  1056      *
  1057      * @return <code>true</code> if the value in the last column read
  1057      * @return {@code true} if the value in the last column read
  1058      *         was SQL <code>NULL</code>; <code>false</code> otherwise
  1058      *         was SQL {@code NULL}; {@code false} otherwise
  1059      * @throws SQLException if an error occurs
  1059      * @throws SQLException if an error occurs
  1060      */
  1060      */
  1061     public boolean wasNull() throws SQLException {
  1061     public boolean wasNull() throws SQLException {
  1062         throw new UnsupportedOperationException();
  1062         throw new UnsupportedOperationException();
  1063     }
  1063     }
  1064 
  1064 
  1065     /**
  1065     /**
  1066      * Returns the insert row or the current row of this
  1066      * Returns the insert row or the current row of this
  1067      * <code>CachedRowSetImpl</code>object.
  1067      * {@code CachedRowSetImpl}object.
  1068      *
  1068      *
  1069      * @return the <code>Row</code> object on which this <code>CachedRowSetImpl</code>
  1069      * @return the {@code Row} object on which this {@code CachedRowSetImpl}
  1070      * objects's cursor is positioned
  1070      * objects's cursor is positioned
  1071      */
  1071      */
  1072     protected BaseRow getCurrentRow() {
  1072     protected BaseRow getCurrentRow() {
  1073         throw new UnsupportedOperationException();
  1073         throw new UnsupportedOperationException();
  1074     }
  1074     }
  1075 
  1075 
  1076     /**
  1076     /**
  1077      * Removes the row on which the cursor is positioned.
  1077      * Removes the row on which the cursor is positioned.
  1078      * <p>
  1078      * <p>
  1079      * This is a implementation only method and is not required as a standard
  1079      * This is a implementation only method and is not required as a standard
  1080      * implementation of the <code>CachedRowSet</code> interface.
  1080      * implementation of the {@code CachedRowSet} interface.
  1081      *
  1081      *
  1082      * @throws SQLException if the cursor is positioned on the insert
  1082      * @throws SQLException if the cursor is positioned on the insert
  1083      *            row
  1083      *            row
  1084      */
  1084      */
  1085     protected void removeCurrentRow() {
  1085     protected void removeCurrentRow() {
  1087     }
  1087     }
  1088 
  1088 
  1089 
  1089 
  1090     /**
  1090     /**
  1091      * Retrieves the value of the designated column in the current row
  1091      * Retrieves the value of the designated column in the current row
  1092      * of this <code>CachedRowSetImpl</code> object as a
  1092      * of this {@code CachedRowSetImpl} object as a
  1093      * <code>String</code> object.
  1093      * {@code String} object.
  1094      *
  1094      *
  1095      * @param columnIndex the first column is <code>1</code>, the second
  1095      * @param columnIndex the first column is {@code 1}, the second
  1096      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  1096      *        is {@code 2}, and so on; must be {@code 1} or larger
  1097      *        and equal to or less than the number of columns in the rowset
  1097      *        and equal to or less than the number of columns in the rowset
  1098      * @return the column value; if the value is SQL <code>NULL</code>, the
  1098      * @return the column value; if the value is SQL {@code NULL}, the
  1099      *         result is <code>null</code>
  1099      *         result is {@code null}
  1100      * @throws SQLException if (1) the given column index is out of bounds,
  1100      * @throws SQLException if (1) the given column index is out of bounds,
  1101      * (2) the cursor is not on one of this rowset's rows or its
  1101      * (2) the cursor is not on one of this rowset's rows or its
  1102      * insert row, or (3) the designated column does not store an
  1102      * insert row, or (3) the designated column does not store an
  1103      * SQL <code>TINYINT, SMALLINT, INTEGER, BIGINT, REAL,
  1103      * SQL {@code TINYINT, SMALLINT, INTEGER, BIGINT, REAL,
  1104      * FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, <b>CHAR</b>, <b>VARCHAR</b></code>
  1104      * FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT,} <b>{@code CHAR, VARCHAR}</b>
  1105      * or <code>LONGVARCHAR</code> value. The bold SQL type designates the
  1105      * or {@code LONGVARCHAR} value. The bold SQL type designates the
  1106      * recommended return type.
  1106      * recommended return type.
  1107      */
  1107      */
  1108     public String getString(int columnIndex) throws SQLException {
  1108     public String getString(int columnIndex) throws SQLException {
  1109         throw new UnsupportedOperationException();
  1109         throw new UnsupportedOperationException();
  1110     }
  1110     }
  1111 
  1111 
  1112     /**
  1112     /**
  1113      * Retrieves the value of the designated column in the current row
  1113      * Retrieves the value of the designated column in the current row
  1114      * of this <code>CachedRowSetImpl</code> object as a
  1114      * of this {@code CachedRowSetImpl} object as a
  1115      * <code>boolean</code> value.
  1115      * {@code boolean} value.
  1116      *
  1116      *
  1117      * @param columnIndex the first column is <code>1</code>, the second
  1117      * @param columnIndex the first column is {@code 1}, the second
  1118      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  1118      *        is {@code 2}, and so on; must be {@code 1} or larger
  1119      *        and equal to or less than the number of columns in the rowset
  1119      *        and equal to or less than the number of columns in the rowset
  1120      * @return the column value as a <code>boolean</code> in the Java progamming language;
  1120      * @return the column value as a {@code boolean} in the Java progamming language;
  1121      *        if the value is SQL <code>NULL</code>, the result is <code>false</code>
  1121      *        if the value is SQL {@code NULL}, the result is {@code false}
  1122      * @throws SQLException if (1) the given column index is out of bounds,
  1122      * @throws SQLException if (1) the given column index is out of bounds,
  1123      *            (2) the cursor is not on one of this rowset's rows or its
  1123      *            (2) the cursor is not on one of this rowset's rows or its
  1124      *            insert row, or (3) the designated column does not store an
  1124      *            insert row, or (3) the designated column does not store an
  1125      *            SQL <code>BOOLEAN</code> value
  1125      *            SQL {@code BOOLEAN} value
  1126      * @see #getBoolean(String)
  1126      * @see #getBoolean(String)
  1127      */
  1127      */
  1128     public boolean getBoolean(int columnIndex) throws SQLException {
  1128     public boolean getBoolean(int columnIndex) throws SQLException {
  1129         throw new UnsupportedOperationException();
  1129         throw new UnsupportedOperationException();
  1130     }
  1130     }
  1131 
  1131 
  1132     /**
  1132     /**
  1133      * Retrieves the value of the designated column in the current row
  1133      * Retrieves the value of the designated column in the current row
  1134      * of this <code>CachedRowSetImpl</code> object as a
  1134      * of this {@code CachedRowSetImpl} object as a
  1135      * <code>byte</code> value.
  1135      * {@code byte} value.
  1136      *
  1136      *
  1137      * @param columnIndex the first column is <code>1</code>, the second
  1137      * @param columnIndex the first column is {@code 1}, the second
  1138      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  1138      *        is {@code 2}, and so on; must be {@code 1} or larger
  1139      *        and equal to or less than the number of columns in the rowset
  1139      *        and equal to or less than the number of columns in the rowset
  1140      * @return the column value as a <code>byte</code> in the Java programming
  1140      * @return the column value as a {@code byte} in the Java programming
  1141      * language; if the value is SQL <code>NULL</code>, the result is <code>0</code>
  1141      * language; if the value is SQL {@code NULL}, the result is {@code 0}
  1142      * @throws SQLException if (1) the given column index is out of bounds,
  1142      * @throws SQLException if (1) the given column index is out of bounds,
  1143      *            (2) the cursor is not on one of this rowset's rows or its
  1143      *            (2) the cursor is not on one of this rowset's rows or its
  1144      *            insert row, or (3) the designated column does not store an
  1144      *            insert row, or (3) the designated column does not store an
  1145      *            SQL <code><b>TINYINT</b>, SMALLINT, INTEGER, BIGINT, REAL,
  1145      *            SQL <b>{@code TINYINT}</b>, {@code SMALLINT, INTEGER,
  1146      *            FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR, VARCHAR</code>
  1146      *            BIGINT, REAL, FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR,
  1147      *            or <code>LONGVARCHAR</code> value. The bold SQL type
  1147      *            VARCHAR} or {@code LONGVARCHAR} value. The bold SQL type
  1148      *            designates the recommended return type.
  1148      *            designates the recommended return type.
  1149      * @see #getByte(String)
  1149      * @see #getByte(String)
  1150      */
  1150      */
  1151     public byte getByte(int columnIndex) throws SQLException {
  1151     public byte getByte(int columnIndex) throws SQLException {
  1152         throw new UnsupportedOperationException();
  1152         throw new UnsupportedOperationException();
  1153     }
  1153     }
  1154 
  1154 
  1155     /**
  1155     /**
  1156      * Retrieves the value of the designated column in the current row
  1156      * Retrieves the value of the designated column in the current row
  1157      * of this <code>CachedRowSetImpl</code> object as a
  1157      * of this {@code CachedRowSetImpl} object as a
  1158      * <code>short</code> value.
  1158      * {@code short} value.
  1159      *
  1159      *
  1160      * @param columnIndex the first column is <code>1</code>, the second
  1160      * @param columnIndex the first column is {@code 1}, the second
  1161      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  1161      *        is {@code 2}, and so on; must be {@code 1} or larger
  1162      *        and equal to or less than the number of columns in the rowset
  1162      *        and equal to or less than the number of columns in the rowset
  1163      * @return the column value; if the value is SQL <code>NULL</code>, the
  1163      * @return the column value; if the value is SQL {@code NULL}, the
  1164      *         result is <code>0</code>
  1164      *         result is {@code 0}
  1165      * @throws SQLException if (1) the given column index is out of bounds,
  1165      * @throws SQLException if (1) the given column index is out of bounds,
  1166      * (2) the cursor is not on one of this rowset's rows or its
  1166      *         (2) the cursor is not on one of this rowset's rows or its
  1167      * insert row, or (3) the designated column does not store an
  1167      *         insert row, or (3) the designated column does not store an
  1168      * SQL <code>TINYINT, <b>SMALLINT</b>, INTEGER, BIGINT, REAL
  1168      *         SQL {@code TINYINT}, <b>{@code SMALLINT}</b>,
  1169      * FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR, VARCHAR</code>
  1169      *         {@code INTEGER, BIGINT, REAL, FLOAT, DOUBLE,
  1170      * or <code>LONGVARCHAR</code> value. The bold SQL type designates the
  1170      *         DECIMAL, NUMERIC, BIT, CHAR, VARCHAR}
  1171      * recommended return type.
  1171      *         or {@code LONGVARCHAR} value. The bold SQL type
       
  1172      *         designates the recommended return type.
  1172      * @see #getShort(String)
  1173      * @see #getShort(String)
  1173      */
  1174      */
  1174     public short getShort(int columnIndex) throws SQLException {
  1175     public short getShort(int columnIndex) throws SQLException {
  1175         throw new UnsupportedOperationException();
  1176         throw new UnsupportedOperationException();
  1176     }
  1177     }
  1177 
  1178 
  1178     /**
  1179     /**
  1179      * Retrieves the value of the designated column in the current row
  1180      * Retrieves the value of the designated column in the current row
  1180      * of this <code>CachedRowSetImpl</code> object as an
  1181      * of this {@code CachedRowSetImpl} object as an
  1181      * <code>int</code> value.
  1182      * {@code int} value.
  1182      *
  1183      *
  1183      * @param columnIndex the first column is <code>1</code>, the second
  1184      * @param columnIndex the first column is {@code 1}, the second
  1184      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  1185      *        is {@code 2}, and so on; must be {@code 1} or larger
  1185      *        and equal to or less than the number of columns in the rowset
  1186      *        and equal to or less than the number of columns in the rowset
  1186      * @return the column value; if the value is SQL <code>NULL</code>, the
  1187      * @return the column value; if the value is SQL {@code NULL}, the
  1187      *         result is <code>0</code>
  1188      *         result is {@code 0}
  1188      * @throws SQLException if (1) the given column index is out of bounds,
  1189      * @throws SQLException if (1) the given column index is out of bounds,
  1189      * (2) the cursor is not on one of this rowset's rows or its
  1190      *         (2) the cursor is not on one of this rowset's rows or its
  1190      * insert row, or (3) the designated column does not store an
  1191      *         insert row, or (3) the designated column does not store an
  1191      * SQL <code>TINYINT, SMALLINT, <b>INTEGER</b>, BIGINT, REAL
  1192      *         SQL {@code TINYINT, SMALLINT,} <b>{@code INTEGER}</b>,
  1192      * FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR, VARCHAR</code>
  1193      *         {@code BIGINT, REAL, FLOAT, DOUBLE, DECIMAL,
  1193      * or <code>LONGVARCHAR</code> value. The bold SQL type designates the
  1194      *         NUMERIC, BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.
  1194      * recommended return type.
  1195      *         The bold SQL type designates the
       
  1196      *         recommended return type.
  1195      */
  1197      */
  1196     public int getInt(int columnIndex) throws SQLException {
  1198     public int getInt(int columnIndex) throws SQLException {
  1197         throw new UnsupportedOperationException();
  1199         throw new UnsupportedOperationException();
  1198     }
  1200     }
  1199 
  1201 
  1200     /**
  1202     /**
  1201      * Retrieves the value of the designated column in the current row
  1203      * Retrieves the value of the designated column in the current row
  1202      * of this <code>CachedRowSetImpl</code> object as a
  1204      * of this {@code CachedRowSetImpl} object as a
  1203      * <code>long</code> value.
  1205      * {@code long} value.
  1204      *
  1206      *
  1205      * @param columnIndex the first column is <code>1</code>, the second
  1207      * @param columnIndex the first column is {@code 1}, the second
  1206      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  1208      *        is {@code 2}, and so on; must be {@code 1} or larger
  1207      *        and equal to or less than the number of columns in the rowset
  1209      *        and equal to or less than the number of columns in the rowset
  1208      * @return the column value; if the value is SQL <code>NULL</code>, the
  1210      * @return the column value; if the value is SQL {@code NULL}, the
  1209      *         result is <code>0</code>
  1211      *         result is {@code 0}
  1210      * @throws SQLException if (1) the given column index is out of bounds,
  1212      * @throws SQLException if (1) the given column index is out of bounds,
  1211      * (2) the cursor is not on one of this rowset's rows or its
  1213      *         (2) the cursor is not on one of this rowset's rows or its
  1212      * insert row, or (3) the designated column does not store an
  1214      *         insert row, or (3) the designated column does not store an
  1213      * SQL <code>TINYINT, SMALLINT, INTEGER, <b>BIGINT</b>, REAL
  1215      *         SQL {@code TINYINT, SMALLINT, INTEGER,}
  1214      * FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR, VARCHAR</code>
  1216      *         <b>{@code BIGINT}</b>, {@code REAL, FLOAT, DOUBLE,
  1215      * or <code>LONGVARCHAR</code> value. The bold SQL type designates the
  1217      *         DECIMAL, NUMERIC, BIT, CHAR, VARCHAR}
  1216      * recommended return type.
  1218      *         or {@code LONGVARCHAR} value. The bold SQL type
       
  1219      * designates the recommended return type.
  1217      * @see #getLong(String)
  1220      * @see #getLong(String)
  1218      */
  1221      */
  1219     public long getLong(int columnIndex) throws SQLException {
  1222     public long getLong(int columnIndex) throws SQLException {
  1220         throw new UnsupportedOperationException();
  1223         throw new UnsupportedOperationException();
  1221     }
  1224     }
  1222 
  1225 
  1223     /**
  1226     /**
  1224      * Retrieves the value of the designated column in the current row
  1227      * Retrieves the value of the designated column in the current row
  1225      * of this <code>CachedRowSetImpl</code> object as a
  1228      * of this {@code CachedRowSetImpl} object as a
  1226      * <code>float</code> value.
  1229      * {@code float} value.
  1227      *
  1230      *
  1228      * @param columnIndex the first column is <code>1</code>, the second
  1231      * @param columnIndex the first column is {@code 1}, the second
  1229      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  1232      *        is {@code 2}, and so on; must be {@code 1} or larger
  1230      *        and equal to or less than the number of columns in the rowset
  1233      *        and equal to or less than the number of columns in the rowset
  1231      * @return the column value; if the value is SQL <code>NULL</code>, the
  1234      * @return the column value; if the value is SQL {@code NULL}, the
  1232      *         result is <code>0</code>
  1235      *         result is {@code 0}
  1233      * @throws SQLException if (1) the given column index is out of bounds,
  1236      * @throws SQLException if (1) the given column index is out of bounds,
  1234      * (2) the cursor is not on one of this rowset's rows or its
  1237      *         (2) the cursor is not on one of this rowset's rows or its
  1235      * insert row, or (3) the designated column does not store an
  1238      *         insert row, or (3) the designated column does not store an
  1236      * SQL <code>TINYINT, SMALLINT, INTEGER, BIGINT, <b>REAL</b>,
  1239      *         SQL {@code TINYINT, SMALLINT, INTEGER, BIGINT,}
  1237      * FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR, VARCHAR</code>
  1240      *         <b>{@code REAL}</b>, {@code FLOAT, DOUBLE, DECIMAL, NUMERIC,
  1238      * or <code>LONGVARCHAR</code> value. The bold SQL type designates the
  1241      *         BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.
  1239      * recommended return type.
  1242      *         The bold SQL type designates the recommended return type.
  1240      * @see #getFloat(String)
  1243      * @see #getFloat(String)
  1241      */
  1244      */
  1242     public float getFloat(int columnIndex) throws SQLException {
  1245     public float getFloat(int columnIndex) throws SQLException {
  1243         throw new UnsupportedOperationException();
  1246         throw new UnsupportedOperationException();
  1244     }
  1247     }
  1245 
  1248 
  1246     /**
  1249     /**
  1247      * Retrieves the value of the designated column in the current row
  1250      * Retrieves the value of the designated column in the current row
  1248      * of this <code>CachedRowSetImpl</code> object as a
  1251      * of this {@code CachedRowSetImpl} object as a
  1249      * <code>double</code> value.
  1252      * {@code double} value.
  1250      *
  1253      *
  1251      * @param columnIndex the first column is <code>1</code>, the second
  1254      * @param columnIndex the first column is {@code 1}, the second
  1252      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  1255      *        is {@code 2}, and so on; must be {@code 1} or larger
  1253      *        and equal to or less than the number of columns in the rowset
  1256      *        and equal to or less than the number of columns in the rowset
  1254      * @return the column value; if the value is SQL <code>NULL</code>, the
  1257      * @return the column value; if the value is SQL {@code NULL}, the
  1255      *         result is <code>0</code>
  1258      *         result is {@code 0}
  1256      * @throws SQLException if (1) the given column index is out of bounds,
  1259      * @throws SQLException if (1) the given column index is out of bounds,
  1257      * (2) the cursor is not on one of this rowset's rows or its
  1260      *         (2) the cursor is not on one of this rowset's rows or its
  1258      * insert row, or (3) the designated column does not store an
  1261      *         insert row, or (3) the designated column does not store an
  1259      * SQL <code>TINYINT, SMALLINT, INTEGER, BIGINT, REAL,
  1262      *         SQL {@code TINYINT, SMALLINT, INTEGER, BIGINT, REAL,}
  1260      * <b>FLOAT</b>, <b>DOUBLE</b>, DECIMAL, NUMERIC, BIT, CHAR, VARCHAR</code>
  1263      *         <b>{@code FLOAT, DOUBLE}</b>,
  1261      * or <code>LONGVARCHAR</code> value. The bold SQL type designates the
  1264      *         {@code DECIMAL, NUMERIC, BIT, CHAR, VARCHAR}
  1262      * recommended return type.
  1265      *         or {@code LONGVARCHAR} value. The bold SQL type
       
  1266      *         designates the recommended return type.
  1263      * @see #getDouble(String)
  1267      * @see #getDouble(String)
  1264      *
  1268      *
  1265      */
  1269      */
  1266     public double getDouble(int columnIndex) throws SQLException {
  1270     public double getDouble(int columnIndex) throws SQLException {
  1267         throw new UnsupportedOperationException();
  1271         throw new UnsupportedOperationException();
  1268     }
  1272     }
  1269 
  1273 
  1270     /**
  1274     /**
  1271      * Retrieves the value of the designated column in the current row
  1275      * Retrieves the value of the designated column in the current row
  1272      * of this <code>CachedRowSetImpl</code> object as a
  1276      * of this {@code CachedRowSetImpl} object as a
  1273      * <code>java.math.BigDecimal</code> object.
  1277      * {@code java.math.BigDecimal} object.
  1274      * <P>
  1278      * <P>
  1275      * This method is deprecated; use the version of <code>getBigDecimal</code>
  1279      * This method is deprecated; use the version of {@code getBigDecimal}
  1276      * that does not take a scale parameter and returns a value with full
  1280      * that does not take a scale parameter and returns a value with full
  1277      * precision.
  1281      * precision.
  1278      *
  1282      *
  1279      * @param columnIndex the first column is <code>1</code>, the second
  1283      * @param columnIndex the first column is {@code 1}, the second
  1280      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  1284      *        is {@code 2}, and so on; must be {@code 1} or larger
  1281      *        and equal to or less than the number of columns in the rowset
  1285      *        and equal to or less than the number of columns in the rowset
  1282      * @param scale the number of digits to the right of the decimal point in the
  1286      * @param scale the number of digits to the right of the decimal point in the
  1283      *        value returned
  1287      *        value returned
  1284      * @return the column value with the specified number of digits to the right
  1288      * @return the column value with the specified number of digits to the right
  1285      *         of the decimal point; if the value is SQL <code>NULL</code>, the
  1289      *         of the decimal point; if the value is SQL {@code NULL}, the
  1286      *         result is <code>null</code>
  1290      *         result is {@code null}
  1287      * @throws SQLException if the given column index is out of bounds,
  1291      * @throws SQLException if the given column index is out of bounds,
  1288      *            the cursor is not on a valid row, or this method fails
  1292      *            the cursor is not on a valid row, or this method fails
  1289      * @deprecated
  1293      * @deprecated
  1290      */
  1294      */
  1291     @Deprecated
  1295     @Deprecated
  1293        throw new UnsupportedOperationException();
  1297        throw new UnsupportedOperationException();
  1294     }
  1298     }
  1295 
  1299 
  1296     /**
  1300     /**
  1297      * Retrieves the value of the designated column in the current row
  1301      * Retrieves the value of the designated column in the current row
  1298      * of this <code>CachedRowSetImpl</code> object as a
  1302      * of this {@code CachedRowSetImpl} object as a
  1299      * <code>byte</code> array value.
  1303      * {@code byte} array value.
  1300      *
  1304      *
  1301      * @param columnIndex the first column is <code>1</code>, the second
  1305      * @param columnIndex the first column is {@code 1}, the second
  1302      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  1306      *        is {@code 2}, and so on; must be {@code 1} or larger
  1303      *        and equal to or less than the number of columns in the rowset
  1307      *        and equal to or less than the number of columns in the rowset
  1304      * @return the column value as a <code>byte</code> array in the Java programming
  1308      * @return the column value as a {@code byte} array in the Java programming
  1305      * language; if the value is SQL <code>NULL</code>, the
  1309      * language; if the value is SQL {@code NULL}, the
  1306      * result is <code>null</code>
  1310      * result is {@code null}
  1307      *
  1311      *
  1308      * @throws SQLException if (1) the given column index is out of bounds,
  1312      * @throws SQLException if (1) the given column index is out of bounds,
  1309      * (2) the cursor is not on one of this rowset's rows or its
  1313      *         (2) the cursor is not on one of this rowset's rows or its
  1310      * insert row, or (3) the designated column does not store an
  1314      *         insert row, or (3) the designated column does not store an
  1311      * SQL <code><b>BINARY</b>, <b>VARBINARY</b> or
  1315      *         SQL <b>{@code BINARY, VARBINARY}</b> or
  1312      * LONGVARBINARY</code> value.
  1316      *         {@code LONGVARBINARY} value.
  1313      * The bold SQL type designates the recommended return type.
  1317      *         The bold SQL type designates the recommended return type.
  1314      * @see #getBytes(String)
  1318      * @see #getBytes(String)
  1315      */
  1319      */
  1316     public byte[] getBytes(int columnIndex) throws SQLException {
  1320     public byte[] getBytes(int columnIndex) throws SQLException {
  1317         throw new UnsupportedOperationException();
  1321         throw new UnsupportedOperationException();
  1318     }
  1322     }
  1319 
  1323 
  1320     /**
  1324     /**
  1321      * Retrieves the value of the designated column in the current row
  1325      * Retrieves the value of the designated column in the current row
  1322      * of this <code>CachedRowSetImpl</code> object as a
  1326      * of this {@code CachedRowSetImpl} object as a
  1323      * <code>java.sql.Date</code> object.
  1327      * {@code java.sql.Date} object.
  1324      *
  1328      *
  1325      * @param columnIndex the first column is <code>1</code>, the second
  1329      * @param columnIndex the first column is {@code 1}, the second
  1326      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  1330      *        is {@code 2}, and so on; must be {@code 1} or larger
  1327      *        and equal to or less than the number of columns in the rowset
  1331      *        and equal to or less than the number of columns in the rowset
  1328      * @return the column value as a <code>java.sql.Data</code> object; if
  1332      * @return the column value as a {@code java.sql.Data} object; if
  1329      *        the value is SQL <code>NULL</code>, the
  1333      *        the value is SQL {@code NULL}, the
  1330      *        result is <code>null</code>
  1334      *        result is {@code null}
       
  1335      * @throws SQLException if the given column index is out of bounds,
       
  1336      *         the cursor is not on a valid row, or this method fails
       
  1337      */
       
  1338     public java.sql.Date getDate(int columnIndex) throws SQLException {
       
  1339         throw new UnsupportedOperationException();
       
  1340     }
       
  1341 
       
  1342     /**
       
  1343      * Retrieves the value of the designated column in the current row
       
  1344      * of this {@code CachedRowSetImpl} object as a
       
  1345      * {@code java.sql.Time} object.
       
  1346      *
       
  1347      * @param columnIndex the first column is {@code 1}, the second
       
  1348      *        is {@code 2}, and so on; must be {@code 1} or larger
       
  1349      *        and equal to or less than the number of columns in the rowset
       
  1350      * @return the column value; if the value is SQL {@code NULL}, the
       
  1351      *         result is {@code null}
       
  1352      * @throws SQLException if the given column index is out of bounds,
       
  1353      *         the cursor is not on a valid row, or this method fails
       
  1354      */
       
  1355     public java.sql.Time getTime(int columnIndex) throws SQLException {
       
  1356         throw new UnsupportedOperationException();
       
  1357     }
       
  1358 
       
  1359     /**
       
  1360      * Retrieves the value of the designated column in the current row
       
  1361      * of this {@code CachedRowSetImpl} object as a
       
  1362      * {@code java.sql.Timestamp} object.
       
  1363      *
       
  1364      * @param columnIndex the first column is {@code 1}, the second
       
  1365      *        is {@code 2}, and so on; must be {@code 1} or larger
       
  1366      *        and equal to or less than the number of columns in the rowset
       
  1367      * @return the column value; if the value is SQL {@code NULL}, the
       
  1368      *         result is {@code null}
  1331      * @throws SQLException if the given column index is out of bounds,
  1369      * @throws SQLException if the given column index is out of bounds,
  1332      *            the cursor is not on a valid row, or this method fails
  1370      *            the cursor is not on a valid row, or this method fails
  1333      */
  1371      */
  1334     public java.sql.Date getDate(int columnIndex) throws SQLException {
       
  1335         throw new UnsupportedOperationException();
       
  1336     }
       
  1337 
       
  1338     /**
       
  1339      * Retrieves the value of the designated column in the current row
       
  1340      * of this <code>CachedRowSetImpl</code> object as a
       
  1341      * <code>java.sql.Time</code> object.
       
  1342      *
       
  1343      * @param columnIndex the first column is <code>1</code>, the second
       
  1344      *        is <code>2</code>, and so on; must be <code>1</code> or larger
       
  1345      *        and equal to or less than the number of columns in the rowset
       
  1346      * @return the column value; if the value is SQL <code>NULL</code>, the
       
  1347      *         result is <code>null</code>
       
  1348      * @throws SQLException if the given column index is out of bounds,
       
  1349      *         the cursor is not on a valid row, or this method fails
       
  1350      */
       
  1351     public java.sql.Time getTime(int columnIndex) throws SQLException {
       
  1352         throw new UnsupportedOperationException();
       
  1353     }
       
  1354 
       
  1355     /**
       
  1356      * Retrieves the value of the designated column in the current row
       
  1357      * of this <code>CachedRowSetImpl</code> object as a
       
  1358      * <code>java.sql.Timestamp</code> object.
       
  1359      *
       
  1360      * @param columnIndex the first column is <code>1</code>, the second
       
  1361      *        is <code>2</code>, and so on; must be <code>1</code> or larger
       
  1362      *        and equal to or less than the number of columns in the rowset
       
  1363      * @return the column value; if the value is SQL <code>NULL</code>, the
       
  1364      *         result is <code>null</code>
       
  1365      * @throws SQLException if the given column index is out of bounds,
       
  1366      *            the cursor is not on a valid row, or this method fails
       
  1367      */
       
  1368     public java.sql.Timestamp getTimestamp(int columnIndex) throws SQLException {
  1372     public java.sql.Timestamp getTimestamp(int columnIndex) throws SQLException {
  1369         throw new UnsupportedOperationException();
  1373         throw new UnsupportedOperationException();
  1370     }
  1374     }
  1371 
  1375 
  1372     /**
  1376     /**
  1373      * Retrieves the value of the designated column in the current row of this
  1377      * Retrieves the value of the designated column in the current row of this
  1374      * <code>CachedRowSetImpl</code> object as a <code>java.io.InputStream</code>
  1378      * {@code CachedRowSetImpl} object as a {@code java.io.InputStream}
  1375      * object.
  1379      * object.
  1376      *
  1380      *
  1377      * A column value can be retrieved as a stream of ASCII characters
  1381      * A column value can be retrieved as a stream of ASCII characters
  1378      * and then read in chunks from the stream.  This method is particularly
  1382      * and then read in chunks from the stream.  This method is particularly
  1379      * suitable for retrieving large <code>LONGVARCHAR</code> values.  The JDBC
  1383      * suitable for retrieving large {@code LONGVARCHAR} values.  The JDBC
  1380      * driver will do any necessary conversion from the database format into ASCII.
  1384      * driver will do any necessary conversion from the database format into ASCII.
  1381      *
  1385      *
  1382      * <P><B>Note:</B> All the data in the returned stream must be
  1386      * <P><B>Note:</B> All the data in the returned stream must be
  1383      * read prior to getting the value of any other column. The next
  1387      * read prior to getting the value of any other column. The next
  1384      * call to a get method implicitly closes the stream. . Also, a
  1388      * call to a get method implicitly closes the stream. . Also, a
  1385      * stream may return <code>0</code> for <code>CachedRowSetImpl.available()</code>
  1389      * stream may return {@code 0} for {@code CachedRowSetImpl.available()}
  1386      * whether there is data available or not.
  1390      * whether there is data available or not.
  1387      *
  1391      *
  1388      * @param columnIndex the first column is <code>1</code>, the second
  1392      * @param columnIndex the first column is {@code 1}, the second
  1389      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  1393      *        is {@code 2}, and so on; must be {@code 1} or larger
  1390      *        and equal to or less than the number of columns in this rowset
  1394      *        and equal to or less than the number of columns in this rowset
  1391      * @return a Java input stream that delivers the database column value
  1395      * @return a Java input stream that delivers the database column value
  1392      *         as a stream of one-byte ASCII characters.  If the value is SQL
  1396      *         as a stream of one-byte ASCII characters.  If the value is SQL
  1393      *         <code>NULL</code>, the result is <code>null</code>.
  1397      *         {@code NULL}, the result is {@code null}.
  1394      * @throws SQLException if (1) the given column index is out of bounds,
  1398      * @throws SQLException if (1) the given column index is out of bounds,
  1395      * (2) the cursor is not on one of this rowset's rows or its
  1399      *         (2) the cursor is not on one of this rowset's rows or its
  1396      * insert row, or (3) the designated column does not store an
  1400      *         insert row, or (3) the designated column does not store an
  1397      * SQL <code>CHAR, VARCHAR</code>, <code><b>LONGVARCHAR</b></code>
  1401      *         SQL {@code CHAR, VARCHAR}, <b>{@code LONGVARCHAR}</b>,
  1398      * <code>BINARY, VARBINARY</code> or <code>LONGVARBINARY</code> value. The
  1402      *         {@code BINARY, VARBINARY} or {@code LONGVARBINARY} value. The
  1399      * bold SQL type designates the recommended return types that this method is
  1403      *         bold SQL type designates the recommended return types
  1400      * used to retrieve.
  1404      *         that this method is used to retrieve.
  1401      * @see #getAsciiStream(String)
  1405      * @see #getAsciiStream(String)
  1402      */
  1406      */
  1403     public java.io.InputStream getAsciiStream(int columnIndex) throws SQLException {
  1407     public java.io.InputStream getAsciiStream(int columnIndex) throws SQLException {
  1404        throw new UnsupportedOperationException();
  1408        throw new UnsupportedOperationException();
  1405     }
  1409     }
  1414      * read prior to getting the value of any other column. The next
  1418      * read prior to getting the value of any other column. The next
  1415      * call to a get method implicitly closes the stream. . Also, a
  1419      * call to a get method implicitly closes the stream. . Also, a
  1416      * stream may return 0 for available() whether there is data
  1420      * stream may return 0 for available() whether there is data
  1417      * available or not.
  1421      * available or not.
  1418      *
  1422      *
  1419      * @param columnIndex the first column is <code>1</code>, the second
  1423      * @param columnIndex the first column is {@code 1}, the second
  1420      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  1424      *        is {@code 2}, and so on; must be {@code 1} or larger
  1421      *        and equal to or less than the number of columns in this rowset
  1425      *        and equal to or less than the number of columns in this rowset
  1422      * @return a Java input stream that delivers the database column value
  1426      * @return a Java input stream that delivers the database column value
  1423      * as a stream of two byte Unicode characters.  If the value is SQL NULL
  1427      * as a stream of two byte Unicode characters.  If the value is SQL NULL
  1424      * then the result is null.
  1428      * then the result is null.
  1425      * @throws SQLException if an error occurs
  1429      * @throws SQLException if an error occurs
  1430        throw new UnsupportedOperationException();
  1434        throw new UnsupportedOperationException();
  1431     }
  1435     }
  1432 
  1436 
  1433     /**
  1437     /**
  1434      * Retrieves the value of the designated column in the current row of this
  1438      * Retrieves the value of the designated column in the current row of this
  1435      * <code>CachedRowSetImpl</code> object as a <code>java.io.InputStream</code>
  1439      * {@code CachedRowSetImpl} object as a {@code java.io.InputStream}
  1436      * object.
  1440      * object.
  1437      * <P>
  1441      * <P>
  1438      * A column value can be retrieved as a stream of uninterpreted bytes
  1442      * A column value can be retrieved as a stream of uninterpreted bytes
  1439      * and then read in chunks from the stream.  This method is particularly
  1443      * and then read in chunks from the stream.  This method is particularly
  1440      * suitable for retrieving large <code>LONGVARBINARY</code> values.
  1444      * suitable for retrieving large {@code LONGVARBINARY} values.
  1441      *
  1445      *
  1442      * <P><B>Note:</B> All the data in the returned stream must be
  1446      * <P><B>Note:</B> All the data in the returned stream must be
  1443      * read prior to getting the value of any other column. The next
  1447      * read prior to getting the value of any other column. The next
  1444      * call to a get method implicitly closes the stream. Also, a
  1448      * call to a get method implicitly closes the stream. Also, a
  1445      * stream may return <code>0</code> for
  1449      * stream may return {@code 0} for
  1446      * <code>CachedRowSetImpl.available()</code> whether there is data
  1450      * {@code CachedRowSetImpl.available()} whether there is data
  1447      * available or not.
  1451      * available or not.
  1448      *
  1452      *
  1449      * @param columnIndex the first column is <code>1</code>, the second
  1453      * @param columnIndex the first column is {@code 1}, the second
  1450      * is <code>2</code>, and so on; must be <code>1</code> or larger
  1454      * is {@code 2}, and so on; must be {@code 1} or larger
  1451      * and equal to or less than the number of columns in the rowset
  1455      * and equal to or less than the number of columns in the rowset
  1452      * @return a Java input stream that delivers the database column value
  1456      * @return a Java input stream that delivers the database column value
  1453      * as a stream of uninterpreted bytes.  If the value is SQL <code>NULL</code>
  1457      * as a stream of uninterpreted bytes.  If the value is SQL {@code NULL}
  1454      * then the result is <code>null</code>.
  1458      * then the result is {@code null}.
  1455      * @throws SQLException if (1) the given column index is out of bounds,
  1459      * @throws SQLException if (1) the given column index is out of bounds,
  1456      * (2) the cursor is not on one of this rowset's rows or its
  1460      * (2) the cursor is not on one of this rowset's rows or its
  1457      * insert row, or (3) the designated column does not store an
  1461      * insert row, or (3) the designated column does not store an
  1458      * SQL <code>BINARY, VARBINARY</code> or <code><b>LONGVARBINARY</b></code>
  1462      * SQL {@code BINARY, VARBINARY} or <b>{@code LONGVARBINARY}</b>.
  1459      * The bold type indicates the SQL type that this method is recommened
  1463      * The bold type indicates the SQL type that this method is recommened
  1460      * to retrieve.
  1464      * to retrieve.
  1461      * @see #getBinaryStream(String)
  1465      * @see #getBinaryStream(String)
  1462      */
  1466      */
  1463     public java.io.InputStream getBinaryStream(int columnIndex) throws SQLException {
  1467     public java.io.InputStream getBinaryStream(int columnIndex) throws SQLException {
  1470     // Methods for accessing results by column name
  1474     // Methods for accessing results by column name
  1471     //======================================================================
  1475     //======================================================================
  1472 
  1476 
  1473     /**
  1477     /**
  1474      * Retrieves the value stored in the designated column
  1478      * Retrieves the value stored in the designated column
  1475      * of the current row as a <code>String</code> object.
  1479      * of the current row as a {@code String} object.
  1476      *
  1480      *
  1477      * @param columnName a <code>String</code> object giving the SQL name of
  1481      * @param columnName a {@code String} object giving the SQL name of
  1478      *        a column in this <code>CachedRowSetImpl</code> object
  1482      *        a column in this {@code CachedRowSetImpl} object
  1479      * @return the column value; if the value is SQL <code>NULL</code>,
  1483      * @return the column value; if the value is SQL {@code NULL},
  1480      *         the result is <code>null</code>
  1484      *         the result is {@code null}
  1481      * @throws SQLException if (1) the given column name is not the name of
  1485      * @throws SQLException if (1) the given column name is not the name of
  1482      * a column in this rowset, (2) the cursor is not on one of
  1486      *         a column in this rowset, (2) the cursor is not on one of
  1483      * this rowset's rows or its insert row, or (3) the designated
  1487      *         this rowset's rows or its insert row, or (3) the designated
  1484      * column does not store an SQL <code>TINYINT, SMALLINT, INTEGER
  1488      *         column does not store an SQL {@code TINYINT, SMALLINT, INTEGER,
  1485      * BIGINT, REAL, FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, <b>CHAR</b>,
  1489      *         BIGINT, REAL, FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT,}
  1486      * <b>VARCHAR</b></code> or <code>LONGVARCHAR<</code> value. The bold SQL type
  1490      *         <b>{@code CHAR, VARCHAR}</b> or {@code LONGVARCHAR} value.
  1487      * designates the recommended return type.
  1491      *         The bold SQL type designates the recommended return type.
  1488      */
  1492      */
  1489     public String getString(String columnName) throws SQLException {
  1493     public String getString(String columnName) throws SQLException {
  1490         throw new UnsupportedOperationException();
  1494         throw new UnsupportedOperationException();
  1491     }
  1495     }
  1492 
  1496 
  1493     /**
  1497     /**
  1494      * Retrieves the value stored in the designated column
  1498      * Retrieves the value stored in the designated column
  1495      * of the current row as a <code>boolean</code> value.
  1499      * of the current row as a {@code boolean} value.
  1496      *
  1500      *
  1497      * @param columnName a <code>String</code> object giving the SQL name of
  1501      * @param columnName a {@code String} object giving the SQL name of
  1498      *        a column in this <code>CachedRowSetImpl</code> object
  1502      *        a column in this {@code CachedRowSetImpl} object
  1499      * @return the column value as a <code>boolean</code> in the Java programming
  1503      * @return the column value as a {@code boolean} in the Java programming
  1500      *        language; if the value is SQL <code>NULL</code>,
  1504      *        language; if the value is SQL {@code NULL},
  1501      *        the result is <code>false</code>
  1505      *        the result is {@code false}
       
  1506      * @throws SQLException if (1) the given column name is not the name of
       
  1507      *         a column in this rowset, (2) the cursor is not on one of
       
  1508      *         this rowset's rows or its insert row, or (3) the designated
       
  1509      *         column does not store an SQL {@code BOOLEAN} value
       
  1510      * @see #getBoolean(int)
       
  1511      */
       
  1512     public boolean getBoolean(String columnName) throws SQLException {
       
  1513         throw new UnsupportedOperationException();
       
  1514     }
       
  1515 
       
  1516     /**
       
  1517      * Retrieves the value stored in the designated column
       
  1518      * of the current row as a {@code byte} value.
       
  1519      *
       
  1520      * @param columnName a {@code String} object giving the SQL name of
       
  1521      *        a column in this {@code CachedRowSetImpl} object
       
  1522      * @return the column value as a {@code byte} in the Java programming
       
  1523      * language; if the value is SQL {@code NULL}, the result is {@code 0}
       
  1524      * @throws SQLException if (1) the given column name is not the name of
       
  1525      *         a column in this rowset, (2) the cursor is not on one of
       
  1526      *         this rowset's rows or its insert row, or (3) the designated
       
  1527      *         column does not store an SQL <b>{@code TINYINT}</b>,
       
  1528      *         {@code SMALLINT, INTEGER, BIGINT, REAL, FLOAT, DOUBLE,
       
  1529      *         DECIMAL, NUMERIC, BIT, CHAR, VARCHAR} or {@code LONGVARCHAR}
       
  1530      *         value. The bold type designates the recommended return type.
       
  1531      */
       
  1532     public byte getByte(String columnName) throws SQLException {
       
  1533         throw new UnsupportedOperationException();
       
  1534     }
       
  1535 
       
  1536     /**
       
  1537      * Retrieves the value stored in the designated column
       
  1538      * of the current row as a {@code short} value.
       
  1539      *
       
  1540      * @param columnName a {@code String} object giving the SQL name of
       
  1541      *        a column in this {@code CachedRowSetImpl} object
       
  1542      * @return the column value; if the value is SQL {@code NULL},
       
  1543      *         the result is {@code 0}
       
  1544      * @throws SQLException if (1) the given column name is not the name of
       
  1545      *         a column in this rowset, (2) the cursor is not on one of
       
  1546      *         this rowset's rows or its insert row, or (3) the designated
       
  1547      *         column does not store an SQL {@code TINYINT,}
       
  1548      *         <b>{@code SMALLINT}</b>, {@code INTEGER,
       
  1549      *         BIGINT, REAL, FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR,
       
  1550      *         VARCHAR} or {@code LONGVARCHAR} value. The bold SQL type
       
  1551      *         designates the recommended return type.
       
  1552      * @see #getShort(int)
       
  1553      */
       
  1554     public short getShort(String columnName) throws SQLException {
       
  1555        throw new UnsupportedOperationException();
       
  1556     }
       
  1557 
       
  1558     /**
       
  1559      * Retrieves the value stored in the designated column
       
  1560      * of the current row as an {@code int} value.
       
  1561      *
       
  1562      * @param columnName a {@code String} object giving the SQL name of
       
  1563      *        a column in this {@code CachedRowSetImpl} object
       
  1564      * @return the column value; if the value is SQL {@code NULL},
       
  1565      *         the result is {@code 0}
       
  1566      * @throws SQLException if (1) the given column name is not the name
       
  1567      *         of a column in this rowset,
       
  1568      *         (2) the cursor is not on one of this rowset's rows or its
       
  1569      *         insert row, or (3) the designated column does not store an
       
  1570      *         SQL {@code TINYINT, SMALLINT,} <b>{@code INTEGER}</b>,
       
  1571      *         {@code BIGINT, REAL, FLOAT, DOUBLE, DECIMAL,
       
  1572      *         NUMERIC, BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.
       
  1573      *         The bold SQL type designates the
       
  1574      *         recommended return type.
       
  1575      */
       
  1576     public int getInt(String columnName) throws SQLException {
       
  1577         throw new UnsupportedOperationException();
       
  1578     }
       
  1579 
       
  1580     /**
       
  1581      * Retrieves the value stored in the designated column
       
  1582      * of the current row as a {@code long} value.
       
  1583      *
       
  1584      * @param columnName a {@code String} object giving the SQL name of
       
  1585      *        a column in this {@code CachedRowSetImpl} object
       
  1586      * @return the column value; if the value is SQL {@code NULL},
       
  1587      *         the result is {@code 0}
       
  1588      * @throws SQLException if (1) the given column name is not the name of
       
  1589      *         a column in this rowset, (2) the cursor is not on one of
       
  1590      *         this rowset's rows or its insert row, or (3) the designated
       
  1591      *         column does not store an SQL {@code TINYINT, SMALLINT, INTEGER,}
       
  1592      *         <b>{@code BIGINT}</b>, {@code REAL, FLOAT, DOUBLE, DECIMAL,
       
  1593      *         NUMERIC, BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.
       
  1594      *         The bold SQL type designates the recommended return type.
       
  1595      * @see #getLong(int)
       
  1596      */
       
  1597     public long getLong(String columnName) throws SQLException {
       
  1598         throw new UnsupportedOperationException();
       
  1599     }
       
  1600 
       
  1601     /**
       
  1602      * Retrieves the value stored in the designated column
       
  1603      * of the current row as a {@code float} value.
       
  1604      *
       
  1605      * @param columnName a {@code String} object giving the SQL name of
       
  1606      *        a column in this {@code CachedRowSetImpl} object
       
  1607      * @return the column value; if the value is SQL {@code NULL},
       
  1608      *         the result is {@code 0}
       
  1609      * @throws SQLException if (1) the given column name is not the name of
       
  1610      *         a column in this rowset, (2) the cursor is not on one of
       
  1611      *         this rowset's rows or its insert row, or (3) the designated
       
  1612      *         column does not store an SQL {@code TINYINT, SMALLINT, INTEGER,
       
  1613      *         BIGINT,} <b>{@code REAL}</b>, {@code FLOAT, DOUBLE, DECIMAL,
       
  1614      *         NUMERIC, BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.
       
  1615      *         The bold SQL type designates the recommended return type.
       
  1616      * @see #getFloat(String)
       
  1617      */
       
  1618     public float getFloat(String columnName) throws SQLException {
       
  1619        throw new UnsupportedOperationException();
       
  1620     }
       
  1621 
       
  1622     /**
       
  1623      * Retrieves the value stored in the designated column
       
  1624      * of the current row of this {@code CachedRowSetImpl} object
       
  1625      * as a {@code double} value.
       
  1626      *
       
  1627      * @param columnName a {@code String} object giving the SQL name of
       
  1628      *        a column in this {@code CachedRowSetImpl} object
       
  1629      * @return the column value; if the value is SQL {@code NULL},
       
  1630      *         the result is {@code 0}
       
  1631      * @throws SQLException if (1) the given column name is not the name of
       
  1632      *         a column in this rowset, (2) the cursor is not on one of
       
  1633      *         this rowset's rows or its insert row, or (3) the designated
       
  1634      *         column does not store an SQL {@code TINYINT, SMALLINT, INTEGER,
       
  1635      *         BIGINT, REAL,} <b>{@code FLOAT, DOUBLE}</b>, {@code DECIMAL,
       
  1636      *         NUMERIC, BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.
       
  1637      *         The bold SQL type designates the recommended return types.
       
  1638      * @see #getDouble(int)
       
  1639      */
       
  1640     public double getDouble(String columnName) throws SQLException {
       
  1641         throw new UnsupportedOperationException();
       
  1642     }
       
  1643 
       
  1644     /**
       
  1645      * Retrieves the value stored in the designated column
       
  1646      * of the current row as a {@code java.math.BigDecimal} object.
       
  1647      *
       
  1648      * @param columnName a {@code String} object giving the SQL name of
       
  1649      *        a column in this {@code CachedRowSetImpl} object
       
  1650      * @param scale the number of digits to the right of the decimal point
       
  1651      * @return a java.math.BugDecimal object with <i>{@code scale}</i>
       
  1652      *         number of digits to the right of the decimal point.
       
  1653      * @throws SQLException if (1) the given column name is not the name of
       
  1654      *         a column in this rowset, (2) the cursor is not on one of
       
  1655      *         this rowset's rows or its insert row, or (3) the designated
       
  1656      *         column does not store an SQL {@code TINYINT, SMALLINT, INTEGER,
       
  1657      *         BIGINT, REAL, FLOAT, DOUBLE,} <b>{@code DECIMAL, NUMERIC}</b>,
       
  1658      *         {@code BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.
       
  1659      *         The bold SQL type designates the recommended return type
       
  1660      *         that this method is used to retrieve.
       
  1661      * @deprecated Use the {@code getBigDecimal(String columnName)}
       
  1662      *             method instead
       
  1663      */
       
  1664     @Deprecated
       
  1665     public BigDecimal getBigDecimal(String columnName, int scale) throws SQLException {
       
  1666         throw new UnsupportedOperationException();
       
  1667     }
       
  1668 
       
  1669     /**
       
  1670      * Retrieves the value stored in the designated column
       
  1671      * of the current row as a {@code byte} array.
       
  1672      * The bytes represent the raw values returned by the driver.
       
  1673      *
       
  1674      * @param columnName a {@code String} object giving the SQL name of
       
  1675      *        a column in this {@code CachedRowSetImpl} object
       
  1676      * @return the column value as a {@code byte} array in the Java programming
       
  1677      *         language; if the value is SQL {@code NULL}, the result is {@code null}
       
  1678      * @throws SQLException if (1) the given column name is not the name of
       
  1679      *         a column in this rowset, (2) the cursor is not on one of
       
  1680      *         this rowset's rows or its insert row, or (3) the designated
       
  1681      *         column does not store an SQL <b>{@code BINARY, VARBINARY}</b>
       
  1682      *         or {@code LONGVARBINARY} values.
       
  1683      *         The bold SQL type designates the recommended return type.
       
  1684      * @see #getBytes(int)
       
  1685      */
       
  1686     public byte[] getBytes(String columnName) throws SQLException {
       
  1687         throw new UnsupportedOperationException();
       
  1688     }
       
  1689 
       
  1690     /**
       
  1691      * Retrieves the value stored in the designated column
       
  1692      * of the current row as a {@code java.sql.Date} object.
       
  1693      *
       
  1694      * @param columnName a {@code String} object giving the SQL name of
       
  1695      *        a column in this {@code CachedRowSetImpl} object
       
  1696      * @return the column value; if the value is SQL {@code NULL},
       
  1697      *         the result is {@code null}
  1502      * @throws SQLException if (1) the given column name is not the name of
  1698      * @throws SQLException if (1) the given column name is not the name of
  1503      *            a column in this rowset, (2) the cursor is not on one of
  1699      *            a column in this rowset, (2) the cursor is not on one of
  1504      *            this rowset's rows or its insert row, or (3) the designated
  1700      *            this rowset's rows or its insert row, or (3) the designated
  1505      *            column does not store an SQL <code>BOOLEAN</code> value
  1701      *            column does not store an SQL {@code DATE} or
  1506      * @see #getBoolean(int)
  1702      *            {@code TIMESTAMP} value
  1507      */
  1703      */
  1508     public boolean getBoolean(String columnName) throws SQLException {
  1704     public java.sql.Date getDate(String columnName) throws SQLException {
  1509         throw new UnsupportedOperationException();
  1705         throw new UnsupportedOperationException();
  1510     }
  1706     }
  1511 
  1707 
  1512     /**
  1708     /**
  1513      * Retrieves the value stored in the designated column
  1709      * Retrieves the value stored in the designated column
  1514      * of the current row as a <code>byte</code> value.
  1710      * of the current row as a {@code java.sql.Time} object.
  1515      *
  1711      *
  1516      * @param columnName a <code>String</code> object giving the SQL name of
  1712      * @param columnName a {@code String} object giving the SQL name of
  1517      *        a column in this <code>CachedRowSetImpl</code> object
  1713      *        a column in this {@code CachedRowSetImpl} object
  1518      * @return the column value as a <code>byte</code> in the Java programming
  1714      * @return the column value; if the value is SQL {@code NULL},
  1519      * language; if the value is SQL <code>NULL</code>, the result is <code>0</code>
  1715      *         the result is {@code null}
  1520      * @throws SQLException if (1) the given column name is not the name of
       
  1521      * a column in this rowset, (2) the cursor is not on one of
       
  1522      * this rowset's rows or its insert row, or (3) the designated
       
  1523      * column does not store an SQL <code><B>TINYINT</B>, SMALLINT, INTEGER,
       
  1524      * BIGINT, REAL, FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR,
       
  1525      * VARCHAR</code> or <code>LONGVARCHAR</code> value. The
       
  1526      * bold type designates the recommended return type
       
  1527      */
       
  1528     public byte getByte(String columnName) throws SQLException {
       
  1529         throw new UnsupportedOperationException();
       
  1530     }
       
  1531 
       
  1532     /**
       
  1533      * Retrieves the value stored in the designated column
       
  1534      * of the current row as a <code>short</code> value.
       
  1535      *
       
  1536      * @param columnName a <code>String</code> object giving the SQL name of
       
  1537      *        a column in this <code>CachedRowSetImpl</code> object
       
  1538      * @return the column value; if the value is SQL <code>NULL</code>,
       
  1539      *         the result is <code>0</code>
       
  1540      * @throws SQLException if (1) the given column name is not the name of
       
  1541      * a column in this rowset, (2) the cursor is not on one of
       
  1542      * this rowset's rows or its insert row, or (3) the designated
       
  1543      * column does not store an SQL <code>TINYINT, <b>SMALLINT</b>, INTEGER
       
  1544      * BIGINT, REAL, FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR,
       
  1545      * VARCHAR</code> or <code>LONGVARCHAR</code> value. The bold SQL type
       
  1546      * designates the recommended return type.
       
  1547      * @see #getShort(int)
       
  1548      */
       
  1549     public short getShort(String columnName) throws SQLException {
       
  1550        throw new UnsupportedOperationException();
       
  1551     }
       
  1552 
       
  1553     /**
       
  1554      * Retrieves the value stored in the designated column
       
  1555      * of the current row as an <code>int</code> value.
       
  1556      *
       
  1557      * @param columnName a <code>String</code> object giving the SQL name of
       
  1558      *        a column in this <code>CachedRowSetImpl</code> object
       
  1559      * @return the column value; if the value is SQL <code>NULL</code>,
       
  1560      *         the result is <code>0</code>
       
  1561      * @throws SQLException if (1) the given column name is not the name
       
  1562      * of a column in this rowset,
       
  1563      * (2) the cursor is not on one of this rowset's rows or its
       
  1564      * insert row, or (3) the designated column does not store an
       
  1565      * SQL <code>TINYINT, SMALLINT, <b>INTEGER</b>, BIGINT, REAL
       
  1566      * FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR, VARCHAR</code>
       
  1567      * or <code>LONGVARCHAR</code> value. The bold SQL type designates the
       
  1568      * recommended return type.
       
  1569      */
       
  1570     public int getInt(String columnName) throws SQLException {
       
  1571         throw new UnsupportedOperationException();
       
  1572     }
       
  1573 
       
  1574     /**
       
  1575      * Retrieves the value stored in the designated column
       
  1576      * of the current row as a <code>long</code> value.
       
  1577      *
       
  1578      * @param columnName a <code>String</code> object giving the SQL name of
       
  1579      *        a column in this <code>CachedRowSetImpl</code> object
       
  1580      * @return the column value; if the value is SQL <code>NULL</code>,
       
  1581      *         the result is <code>0</code>
       
  1582      * @throws SQLException if (1) the given column name is not the name of
       
  1583      * a column in this rowset, (2) the cursor is not on one of
       
  1584      * this rowset's rows or its insert row, or (3) the designated
       
  1585      * column does not store an SQL <code>TINYINT, SMALLINT, INTEGER
       
  1586      * <b>BIGINT</b>, REAL, FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR,
       
  1587      * VARCHAR</code> or <code>LONGVARCHAR</code> value. The bold SQL type
       
  1588      * designates the recommended return type.
       
  1589      * @see #getLong(int)
       
  1590      */
       
  1591     public long getLong(String columnName) throws SQLException {
       
  1592         throw new UnsupportedOperationException();
       
  1593     }
       
  1594 
       
  1595     /**
       
  1596      * Retrieves the value stored in the designated column
       
  1597      * of the current row as a <code>float</code> value.
       
  1598      *
       
  1599      * @param columnName a <code>String</code> object giving the SQL name of
       
  1600      *        a column in this <code>CachedRowSetImpl</code> object
       
  1601      * @return the column value; if the value is SQL <code>NULL</code>,
       
  1602      *         the result is <code>0</code>
       
  1603      * @throws SQLException if (1) the given column name is not the name of
       
  1604      * a column in this rowset, (2) the cursor is not on one of
       
  1605      * this rowset's rows or its insert row, or (3) the designated
       
  1606      * column does not store an SQL <code>TINYINT, SMALLINT, INTEGER
       
  1607      * BIGINT, <b>REAL</b>, FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR,
       
  1608      * VARCHAR</code> or <code>LONGVARCHAR</code> value. The bold SQL type
       
  1609      * designates the recommended return type.
       
  1610      * @see #getFloat(String)
       
  1611      */
       
  1612     public float getFloat(String columnName) throws SQLException {
       
  1613        throw new UnsupportedOperationException();
       
  1614     }
       
  1615 
       
  1616     /**
       
  1617      * Retrieves the value stored in the designated column
       
  1618      * of the current row of this <code>CachedRowSetImpl</code> object
       
  1619      * as a <code>double</code> value.
       
  1620      *
       
  1621      * @param columnName a <code>String</code> object giving the SQL name of
       
  1622      *        a column in this <code>CachedRowSetImpl</code> object
       
  1623      * @return the column value; if the value is SQL <code>NULL</code>,
       
  1624      *         the result is <code>0</code>
       
  1625      * @throws SQLException if (1) the given column name is not the name of
       
  1626      * a column in this rowset, (2) the cursor is not on one of
       
  1627      * this rowset's rows or its insert row, or (3) the designated
       
  1628      * column does not store an SQL <code>TINYINT, SMALLINT, INTEGER
       
  1629      * BIGINT, REAL, <b>FLOAT</b>, <b>DOUBLE</b>, DECIMAL, NUMERIC, BIT, CHAR,
       
  1630      * VARCHAR</code> or <code>LONGVARCHAR</code> value. The bold SQL type
       
  1631      * designates the recommended return types.
       
  1632      * @see #getDouble(int)
       
  1633      */
       
  1634     public double getDouble(String columnName) throws SQLException {
       
  1635         throw new UnsupportedOperationException();
       
  1636     }
       
  1637 
       
  1638     /**
       
  1639      * Retrieves the value stored in the designated column
       
  1640      * of the current row as a <code>java.math.BigDecimal</code> object.
       
  1641      *
       
  1642      * @param columnName a <code>String</code> object giving the SQL name of
       
  1643      *        a column in this <code>CachedRowSetImpl</code> object
       
  1644      * @param scale the number of digits to the right of the decimal point
       
  1645      * @return a java.math.BugDecimal object with <code><i>scale</i></code>
       
  1646      * number of digits to the right of the decimal point.
       
  1647      * @throws SQLException if (1) the given column name is not the name of
       
  1648      * a column in this rowset, (2) the cursor is not on one of
       
  1649      * this rowset's rows or its insert row, or (3) the designated
       
  1650      * column does not store an SQL <code>TINYINT, SMALLINT, INTEGER
       
  1651      * BIGINT, REAL, FLOAT, DOUBLE, <b>DECIMAL</b>, <b>NUMERIC</b>, BIT CHAR,
       
  1652      * VARCHAR</code> or <code>LONGVARCHAR</code> value. The bold SQL type
       
  1653      * designates the recommended return type that this method is used to
       
  1654      * retrieve.
       
  1655      * @deprecated Use the <code>getBigDecimal(String columnName)</code>
       
  1656      *             method instead
       
  1657      */
       
  1658     @Deprecated
       
  1659     public BigDecimal getBigDecimal(String columnName, int scale) throws SQLException {
       
  1660         throw new UnsupportedOperationException();
       
  1661     }
       
  1662 
       
  1663     /**
       
  1664      * Retrieves the value stored in the designated column
       
  1665      * of the current row as a <code>byte</code> array.
       
  1666      * The bytes represent the raw values returned by the driver.
       
  1667      *
       
  1668      * @param columnName a <code>String</code> object giving the SQL name of
       
  1669      *        a column in this <code>CachedRowSetImpl</code> object
       
  1670      * @return the column value as a <code>byte</code> array in the Java programming
       
  1671      * language; if the value is SQL <code>NULL</code>, the result is <code>null</code>
       
  1672      * @throws SQLException if (1) the given column name is not the name of
       
  1673      * a column in this rowset, (2) the cursor is not on one of
       
  1674      * this rowset's rows or its insert row, or (3) the designated
       
  1675      * column does not store an SQL <code><b>BINARY</b>, <b>VARBINARY</b>
       
  1676      * </code> or <code>LONGVARBINARY</code> values
       
  1677      * The bold SQL type designates the recommended return type.
       
  1678      * @see #getBytes(int)
       
  1679      */
       
  1680     public byte[] getBytes(String columnName) throws SQLException {
       
  1681         throw new UnsupportedOperationException();
       
  1682     }
       
  1683 
       
  1684     /**
       
  1685      * Retrieves the value stored in the designated column
       
  1686      * of the current row as a <code>java.sql.Date</code> object.
       
  1687      *
       
  1688      * @param columnName a <code>String</code> object giving the SQL name of
       
  1689      *        a column in this <code>CachedRowSetImpl</code> object
       
  1690      * @return the column value; if the value is SQL <code>NULL</code>,
       
  1691      *         the result is <code>null</code>
       
  1692      * @throws SQLException if (1) the given column name is not the name of
       
  1693      *            a column in this rowset, (2) the cursor is not on one of
       
  1694      *            this rowset's rows or its insert row, or (3) the designated
       
  1695      *            column does not store an SQL <code>DATE</code> or
       
  1696      *            <code>TIMESTAMP</code> value
       
  1697      */
       
  1698     public java.sql.Date getDate(String columnName) throws SQLException {
       
  1699         throw new UnsupportedOperationException();
       
  1700     }
       
  1701 
       
  1702     /**
       
  1703      * Retrieves the value stored in the designated column
       
  1704      * of the current row as a <code>java.sql.Time</code> object.
       
  1705      *
       
  1706      * @param columnName a <code>String</code> object giving the SQL name of
       
  1707      *        a column in this <code>CachedRowSetImpl</code> object
       
  1708      * @return the column value; if the value is SQL <code>NULL</code>,
       
  1709      *         the result is <code>null</code>
       
  1710      * @throws SQLException if the given column name does not match one of
  1716      * @throws SQLException if the given column name does not match one of
  1711      *            this rowset's column names or the cursor is not on one of
  1717      *            this rowset's column names or the cursor is not on one of
  1712      *            this rowset's rows or its insert row
  1718      *            this rowset's rows or its insert row
  1713      */
  1719      */
  1714     public java.sql.Time getTime(String columnName) throws SQLException {
  1720     public java.sql.Time getTime(String columnName) throws SQLException {
  1715         throw new UnsupportedOperationException();
  1721         throw new UnsupportedOperationException();
  1716     }
  1722     }
  1717 
  1723 
  1718     /**
  1724     /**
  1719      * Retrieves the value stored in the designated column
  1725      * Retrieves the value stored in the designated column
  1720      * of the current row as a <code>java.sql.Timestamp</code> object.
  1726      * of the current row as a {@code java.sql.Timestamp} object.
  1721      *
  1727      *
  1722      * @param columnName a <code>String</code> object giving the SQL name of
  1728      * @param columnName a {@code String} object giving the SQL name of
  1723      *        a column in this <code>CachedRowSetImpl</code> object
  1729      *        a column in this {@code CachedRowSetImpl} object
  1724      * @return the column value; if the value is SQL <code>NULL</code>,
  1730      * @return the column value; if the value is SQL {@code NULL},
  1725      *         the result is <code>null</code>
  1731      *         the result is {@code null}
  1726      * @throws SQLException if the given column name does not match one of
  1732      * @throws SQLException if the given column name does not match one of
  1727      *            this rowset's column names or the cursor is not on one of
  1733      *            this rowset's column names or the cursor is not on one of
  1728      *            this rowset's rows or its insert row
  1734      *            this rowset's rows or its insert row
  1729      */
  1735      */
  1730     public java.sql.Timestamp getTimestamp(String columnName) throws SQLException {
  1736     public java.sql.Timestamp getTimestamp(String columnName) throws SQLException {
  1731         throw new UnsupportedOperationException();
  1737         throw new UnsupportedOperationException();
  1732     }
  1738     }
  1733 
  1739 
  1734     /**
  1740     /**
  1735      * Retrieves the value of the designated column in the current row of this
  1741      * Retrieves the value of the designated column in the current row of this
  1736      * <code>CachedRowSetImpl</code> object as a <code>java.io.InputStream</code>
  1742      * {@code CachedRowSetImpl} object as a {@code java.io.InputStream}
  1737      * object.
  1743      * object.
  1738      *
  1744      *
  1739      * A column value can be retrieved as a stream of ASCII characters
  1745      * A column value can be retrieved as a stream of ASCII characters
  1740      * and then read in chunks from the stream. This method is particularly
  1746      * and then read in chunks from the stream. This method is particularly
  1741      * suitable for retrieving large <code>LONGVARCHAR</code> values. The
  1747      * suitable for retrieving large {@code LONGVARCHAR} values. The
  1742      * <code>SyncProvider</code> will rely on the JDBC driver to do any necessary
  1748      * {@code SyncProvider} will rely on the JDBC driver to do any necessary
  1743      * conversion from the database format into ASCII format.
  1749      * conversion from the database format into ASCII format.
  1744      *
  1750      *
  1745      * <P><B>Note:</B> All the data in the returned stream must
  1751      * <P><B>Note:</B> All the data in the returned stream must
  1746      * be read prior to getting the value of any other column. The
  1752      * be read prior to getting the value of any other column. The
  1747      * next call to a <code>getXXX</code> method implicitly closes the stream.
  1753      * next call to a {@code getXXX} method implicitly closes the stream.
  1748      *
  1754      *
  1749      * @param columnName a <code>String</code> object giving the SQL name of
  1755      * @param columnName a {@code String} object giving the SQL name of
  1750      *        a column in this <code>CachedRowSetImpl</code> object
  1756      *        a column in this {@code CachedRowSetImpl} object
  1751      * @return a Java input stream that delivers the database column value
  1757      * @return a Java input stream that delivers the database column value
  1752      *         as a stream of one-byte ASCII characters.  If the value is SQL
  1758      *         as a stream of one-byte ASCII characters.  If the value is SQL
  1753      *         <code>NULL</code>, the result is <code>null</code>.
  1759      *         {@code NULL}, the result is {@code null}.
  1754      * @throws SQLException if (1) the given column name is not the name of
  1760      * @throws SQLException if (1) the given column name is not the name of
  1755      * a column in this rowset
  1761      *         a column in this rowset
  1756      * (2) the cursor is not on one of this rowset's rows or its
  1762      *         (2) the cursor is not on one of this rowset's rows or its
  1757      * insert row, or (3) the designated column does not store an
  1763      *         insert row, or (3) the designated column does not store an
  1758      * SQL <code>CHAR, VARCHAR</code>, <code><b>LONGVARCHAR</b></code>
  1764      *         SQL {@code CHAR, VARCHAR}, <b>{@code LONGVARCHAR}</b>,
  1759      * <code>BINARY, VARBINARY</code> or <code>LONGVARBINARY</code> value. The
  1765      *         {@code BINARY, VARBINARY} or {@code LONGVARBINARY} value. The
  1760      * bold SQL type designates the recommended return types that this method is
  1766      *         bold SQL type designates the recommended return types
  1761      * used to retrieve.
  1767      *         that this method is used to retrieve.
  1762      * @see #getAsciiStream(int)
  1768      * @see #getAsciiStream(int)
  1763      */
  1769      */
  1764     public java.io.InputStream getAsciiStream(String columnName) throws SQLException {
  1770     public java.io.InputStream getAsciiStream(String columnName) throws SQLException {
  1765         throw new UnsupportedOperationException();
  1771         throw new UnsupportedOperationException();
  1766 
  1772 
  1767     }
  1773     }
  1768 
  1774 
  1769     /**
  1775     /**
  1770      * A column value can be retrieved as a stream of Unicode characters
  1776      * A column value can be retrieved as a stream of Unicode characters
  1771      * and then read in chunks from the stream.  This method is particularly
  1777      * and then read in chunks from the stream.  This method is particularly
  1772      * suitable for retrieving large <code>LONGVARCHAR</code> values.
  1778      * suitable for retrieving large {@code LONGVARCHAR} values.
  1773      * The JDBC driver will do any necessary conversion from the database
  1779      * The JDBC driver will do any necessary conversion from the database
  1774      * format into Unicode.
  1780      * format into Unicode.
  1775      *
  1781      *
  1776      * <P><B>Note:</B> All the data in the returned stream must
  1782      * <P><B>Note:</B> All the data in the returned stream must
  1777      * be read prior to getting the value of any other column. The
  1783      * be read prior to getting the value of any other column. The
  1778      * next call to a <code>getXXX</code> method implicitly closes the stream.
  1784      * next call to a {@code getXXX} method implicitly closes the stream.
  1779      *
  1785      *
  1780      * @param columnName a <code>String</code> object giving the SQL name of
  1786      * @param columnName a {@code String} object giving the SQL name of
  1781      *        a column in this <code>CachedRowSetImpl</code> object
  1787      *        a column in this {@code CachedRowSetImpl} object
  1782      * @return a Java input stream that delivers the database column value
  1788      * @return a Java input stream that delivers the database column value
  1783      *         as a stream of two-byte Unicode characters.  If the value is
  1789      *         as a stream of two-byte Unicode characters.  If the value is
  1784      *         SQL <code>NULL</code>, the result is <code>null</code>.
  1790      *         SQL {@code NULL}, the result is {@code null}.
  1785      * @throws SQLException if the given column name does not match one of
  1791      * @throws SQLException if the given column name does not match one of
  1786      *            this rowset's column names or the cursor is not on one of
  1792      *            this rowset's column names or the cursor is not on one of
  1787      *            this rowset's rows or its insert row
  1793      *            this rowset's rows or its insert row
  1788      * @deprecated use the method <code>getCharacterStream</code> instead
  1794      * @deprecated use the method {@code getCharacterStream} instead
  1789      */
  1795      */
  1790     @Deprecated
  1796     @Deprecated
  1791     public java.io.InputStream getUnicodeStream(String columnName) throws SQLException {
  1797     public java.io.InputStream getUnicodeStream(String columnName) throws SQLException {
  1792         throw new UnsupportedOperationException();
  1798         throw new UnsupportedOperationException();
  1793     }
  1799     }
  1794 
  1800 
  1795     /**
  1801     /**
  1796      * Retrieves the value of the designated column in the current row of this
  1802      * Retrieves the value of the designated column in the current row of this
  1797      * <code>CachedRowSetImpl</code> object as a <code>java.io.InputStream</code>
  1803      * {@code CachedRowSetImpl} object as a {@code java.io.InputStream}
  1798      * object.
  1804      * object.
  1799      * <P>
  1805      * <P>
  1800      * A column value can be retrieved as a stream of uninterpreted bytes
  1806      * A column value can be retrieved as a stream of uninterpreted bytes
  1801      * and then read in chunks from the stream.  This method is particularly
  1807      * and then read in chunks from the stream.  This method is particularly
  1802      * suitable for retrieving large <code>LONGVARBINARY</code> values.
  1808      * suitable for retrieving large {@code LONGVARBINARY} values.
  1803      *
  1809      *
  1804      * <P><B>Note:</B> All the data in the returned stream must be
  1810      * <P><B>Note:</B> All the data in the returned stream must be
  1805      * read prior to getting the value of any other column. The next
  1811      * read prior to getting the value of any other column. The next
  1806      * call to a get method implicitly closes the stream. Also, a
  1812      * call to a get method implicitly closes the stream. Also, a
  1807      * stream may return <code>0</code> for <code>CachedRowSetImpl.available()</code>
  1813      * stream may return {@code 0} for {@code CachedRowSetImpl.available()}
  1808      * whether there is data available or not.
  1814      * whether there is data available or not.
  1809      *
  1815      *
  1810      * @param columnName a <code>String</code> object giving the SQL name of
  1816      * @param columnName a {@code String} object giving the SQL name of
  1811      *        a column in this <code>CachedRowSetImpl</code> object
  1817      *        a column in this {@code CachedRowSetImpl} object
  1812      * @return a Java input stream that delivers the database column value
  1818      * @return a Java input stream that delivers the database column value
  1813      *         as a stream of uninterpreted bytes.  If the value is SQL
  1819      *         as a stream of uninterpreted bytes.  If the value is SQL
  1814      *         <code>NULL</code>, the result is <code>null</code>.
  1820      *         {@code NULL}, the result is {@code null}.
  1815      * @throws SQLException if (1) the given column name is unknown,
  1821      * @throws SQLException if (1) the given column name is unknown,
  1816      * (2) the cursor is not on one of this rowset's rows or its
  1822      *         (2) the cursor is not on one of this rowset's rows or its
  1817      * insert row, or (3) the designated column does not store an
  1823      *         insert row, or (3) the designated column does not store an
  1818      * SQL <code>BINARY, VARBINARY</code> or <code><b>LONGVARBINARY</b></code>
  1824      *         SQL {@code BINARY, VARBINARY} or <b>{@code LONGVARBINARY}</b>
  1819      * The bold type indicates the SQL type that this method is recommened
  1825      *         The bold type indicates the SQL type that this method is recommened
  1820      * to retrieve.
  1826      *         to retrieve.
  1821      * @see #getBinaryStream(int)
  1827      * @see #getBinaryStream(int)
  1822      *
  1828      *
  1823      */
  1829      */
  1824     public java.io.InputStream getBinaryStream(String columnName) throws SQLException {
  1830     public java.io.InputStream getBinaryStream(String columnName) throws SQLException {
  1825         throw new UnsupportedOperationException();
  1831         throw new UnsupportedOperationException();
  1829     //=====================================================================
  1835     //=====================================================================
  1830     // Advanced features:
  1836     // Advanced features:
  1831     //=====================================================================
  1837     //=====================================================================
  1832 
  1838 
  1833     /**
  1839     /**
  1834      * The first warning reported by calls on this <code>CachedRowSetImpl</code>
  1840      * The first warning reported by calls on this {@code CachedRowSetImpl}
  1835      * object is returned. Subsequent <code>CachedRowSetImpl</code> warnings will
  1841      * object is returned. Subsequent {@code CachedRowSetImpl} warnings will
  1836      * be chained to this <code>SQLWarning</code>.
  1842      * be chained to this {@code SQLWarning}.
  1837      *
  1843      *
  1838      * <P>The warning chain is automatically cleared each time a new
  1844      * <P>The warning chain is automatically cleared each time a new
  1839      * row is read.
  1845      * row is read.
  1840      *
  1846      *
  1841      * <P><B>Note:</B> This warning chain only covers warnings caused
  1847      * <P><B>Note:</B> This warning chain only covers warnings caused
  1842      * by <code>ResultSet</code> methods.  Any warning caused by statement
  1848      * by {@code ResultSet} methods.  Any warning caused by statement
  1843      * methods (such as reading OUT parameters) will be chained on the
  1849      * methods (such as reading OUT parameters) will be chained on the
  1844      * <code>Statement</code> object.
  1850      * {@code Statement} object.
  1845      *
  1851      *
  1846      * @return the first SQLWarning or null
  1852      * @return the first SQLWarning or null
  1847      */
  1853      */
  1848     public SQLWarning getWarnings() {
  1854     public SQLWarning getWarnings() {
  1849         throw new UnsupportedOperationException();
  1855         throw new UnsupportedOperationException();
  1850     }
  1856     }
  1851 
  1857 
  1852     /**
  1858     /**
  1853      * Clears all the warnings reporeted for the <code>CachedRowSetImpl</code>
  1859      * Clears all the warnings reporeted for the {@code CachedRowSetImpl}
  1854      * object. After a call to this method, the <code>getWarnings</code> method
  1860      * object. After a call to this method, the {@code getWarnings} method
  1855      * returns <code>null</code> until a new warning is reported for this
  1861      * returns {@code null} until a new warning is reported for this
  1856      * <code>CachedRowSetImpl</code> object.
  1862      * {@code CachedRowSetImpl} object.
  1857      */
  1863      */
  1858     public void clearWarnings() {
  1864     public void clearWarnings() {
  1859        throw new UnsupportedOperationException();
  1865        throw new UnsupportedOperationException();
  1860     }
  1866     }
  1861 
  1867 
  1862     /**
  1868     /**
  1863      * Retrieves the name of the SQL cursor used by this
  1869      * Retrieves the name of the SQL cursor used by this
  1864      * <code>CachedRowSetImpl</code> object.
  1870      * {@code CachedRowSetImpl} object.
  1865      *
  1871      *
  1866      * <P>In SQL, a result table is retrieved through a cursor that is
  1872      * <P>In SQL, a result table is retrieved through a cursor that is
  1867      * named. The current row of a <code>ResultSet</code> can be updated or deleted
  1873      * named. The current row of a {@code ResultSet} can be updated or deleted
  1868      * using a positioned update/delete statement that references the
  1874      * using a positioned update/delete statement that references the
  1869      * cursor name. To ensure that the cursor has the proper isolation
  1875      * cursor name. To ensure that the cursor has the proper isolation
  1870      * level to support an update operation, the cursor's <code>SELECT</code>
  1876      * level to support an update operation, the cursor's {@code SELECT}
  1871      * statement should be of the form <code>select for update</code>.
  1877      * statement should be of the form {@code select for update}.
  1872      * If the <code>for update</code> clause
  1878      * If the {@code for update} clause
  1873      * is omitted, positioned updates may fail.
  1879      * is omitted, positioned updates may fail.
  1874      *
  1880      *
  1875      * <P>JDBC supports this SQL feature by providing the name of the
  1881      * <P>JDBC supports this SQL feature by providing the name of the
  1876      * SQL cursor used by a <code>ResultSet</code> object. The current row
  1882      * SQL cursor used by a {@code ResultSet} object. The current row
  1877      * of a result set is also the current row of this SQL cursor.
  1883      * of a result set is also the current row of this SQL cursor.
  1878      *
  1884      *
  1879      * <P><B>Note:</B> If positioned updates are not supported, an
  1885      * <P><B>Note:</B> If positioned updates are not supported, an
  1880      * <code>SQLException</code> is thrown.
  1886      * {@code SQLException} is thrown.
  1881      *
  1887      *
  1882      * @return the SQL cursor name for this <code>CachedRowSetImpl</code> object's
  1888      * @return the SQL cursor name for this {@code CachedRowSetImpl} object's
  1883      *         cursor
  1889      *         cursor
  1884      * @throws SQLException if an error occurs
  1890      * @throws SQLException if an error occurs
  1885      */
  1891      */
  1886     public String getCursorName() throws SQLException {
  1892     public String getCursorName() throws SQLException {
  1887         throw new UnsupportedOperationException();
  1893         throw new UnsupportedOperationException();
  1888     }
  1894     }
  1889 
  1895 
  1890     /**
  1896     /**
  1891      * Retrieves a <code>ResultSetMetaData</code> object instance that
  1897      * Retrieves a {@code ResultSetMetaData} object instance that
  1892      * contains information about the <code>CachedRowSet</code> object.
  1898      * contains information about the {@code CachedRowSet} object.
  1893      * However, applications should cast the returned object to a
  1899      * However, applications should cast the returned object to a
  1894      * <code>RowSetMetaData</code> interface implementation. In the
  1900      * {@code RowSetMetaData} interface implementation. In the
  1895      * reference implementation, this cast can be done on the
  1901      * reference implementation, this cast can be done on the
  1896      * <code>RowSetMetaDataImpl</code> class.
  1902      * {@code RowSetMetaDataImpl} class.
  1897      * <P>
  1903      * <P>
  1898      * For example:
  1904      * For example:
  1899      * <pre>
  1905      * <pre>
  1900      * CachedRowSet crs = new CachedRowSetImpl();
  1906      * CachedRowSet crs = new CachedRowSetImpl();
  1901      * RowSetMetaDataImpl metaData =
  1907      * RowSetMetaDataImpl metaData =
  1905      * // given number.
  1911      * // given number.
  1906      * metaData.setColumnCount(3);
  1912      * metaData.setColumnCount(3);
  1907      * crs.setMetaData(metaData);
  1913      * crs.setMetaData(metaData);
  1908      * </pre>
  1914      * </pre>
  1909      *
  1915      *
  1910      * @return the <code>ResultSetMetaData</code> object that describes this
  1916      * @return the {@code ResultSetMetaData} object that describes this
  1911      *         <code>CachedRowSetImpl</code> object's columns
  1917      *         {@code CachedRowSetImpl} object's columns
  1912      * @throws SQLException if an error occurs in generating the RowSet
  1918      * @throws SQLException if an error occurs in generating the RowSet
  1913      * meta data; or if the <code>CachedRowSetImpl</code> is empty.
  1919      * meta data; or if the {@code CachedRowSetImpl} is empty.
  1914      * @see javax.sql.RowSetMetaData
  1920      * @see javax.sql.RowSetMetaData
  1915      */
  1921      */
  1916     public ResultSetMetaData getMetaData() throws SQLException {
  1922     public ResultSetMetaData getMetaData() throws SQLException {
  1917         throw new UnsupportedOperationException();
  1923         throw new UnsupportedOperationException();
  1918     }
  1924     }
  1919 
  1925 
  1920 
  1926 
  1921     /**
  1927     /**
  1922      * Retrieves the value of the designated column in the current row
  1928      * Retrieves the value of the designated column in the current row
  1923      * of this <code>CachedRowSetImpl</code> object as an
  1929      * of this {@code CachedRowSetImpl} object as an
  1924      * <code>Object</code> value.
  1930      * {@code Object} value.
  1925      * <P>
  1931      * <P>
  1926      * The type of the <code>Object</code> will be the default
  1932      * The type of the {@code Object} will be the default
  1927      * Java object type corresponding to the column's SQL type,
  1933      * Java object type corresponding to the column's SQL type,
  1928      * following the mapping for built-in types specified in the JDBC 3.0
  1934      * following the mapping for built-in types specified in the JDBC 3.0
  1929      * specification.
  1935      * specification.
  1930      * <P>
  1936      * <P>
  1931      * This method may also be used to read datatabase-specific
  1937      * This method may also be used to read datatabase-specific
  1932      * abstract data types.
  1938      * abstract data types.
  1933      * <P>
  1939      * <P>
  1934      * This implementation of the method <code>getObject</code> extends its
  1940      * This implementation of the method {@code getObject} extends its
  1935      * behavior so that it gets the attributes of an SQL structured type
  1941      * behavior so that it gets the attributes of an SQL structured type
  1936      * as an array of <code>Object</code> values.  This method also custom
  1942      * as an array of {@code Object} values.  This method also custom
  1937      * maps SQL user-defined types to classes in the Java programming language.
  1943      * maps SQL user-defined types to classes in the Java programming language.
  1938      * When the specified column contains
  1944      * When the specified column contains
  1939      * a structured or distinct value, the behavior of this method is as
  1945      * a structured or distinct value, the behavior of this method is as
  1940      * if it were a call to the method <code>getObject(columnIndex,
  1946      * if it were a call to the method {@code getObject(columnIndex,
  1941      * this.getStatement().getConnection().getTypeMap())</code>.
  1947      * this.getStatement().getConnection().getTypeMap())}.
  1942      *
  1948      *
  1943      * @param columnIndex the first column is <code>1</code>, the second
  1949      * @param columnIndex the first column is {@code 1}, the second
  1944      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  1950      *        is {@code 2}, and so on; must be {@code 1} or larger
  1945      *        and equal to or less than the number of columns in the rowset
  1951      *        and equal to or less than the number of columns in the rowset
  1946      * @return a <code>java.lang.Object</code> holding the column value;
  1952      * @return a {@code java.lang.Object} holding the column value;
  1947      *         if the value is SQL <code>NULL</code>, the result is <code>null</code>
  1953      *         if the value is SQL {@code NULL}, the result is {@code null}
  1948      * @throws SQLException if the given column index is out of bounds,
  1954      * @throws SQLException if the given column index is out of bounds,
  1949      *            the cursor is not on a valid row, or there is a problem getting
  1955      *            the cursor is not on a valid row, or there is a problem getting
  1950      *            the <code>Class</code> object for a custom mapping
  1956      *            the {@code Class} object for a custom mapping
  1951      * @see #getObject(String)
  1957      * @see #getObject(String)
  1952      */
  1958      */
  1953     public Object getObject(int columnIndex) throws SQLException {
  1959     public Object getObject(int columnIndex) throws SQLException {
  1954         throw new UnsupportedOperationException();
  1960         throw new UnsupportedOperationException();
  1955     }
  1961     }
  1956 
  1962 
  1957     /**
  1963     /**
  1958      * Retrieves the value of the designated column in the current row
  1964      * Retrieves the value of the designated column in the current row
  1959      * of this <code>CachedRowSetImpl</code> object as an
  1965      * of this {@code CachedRowSetImpl} object as an
  1960      * <code>Object</code> value.
  1966      * {@code Object} value.
  1961      * <P>
  1967      * <P>
  1962      * The type of the <code>Object</code> will be the default
  1968      * The type of the {@code Object} will be the default
  1963      * Java object type corresponding to the column's SQL type,
  1969      * Java object type corresponding to the column's SQL type,
  1964      * following the mapping for built-in types specified in the JDBC 3.0
  1970      * following the mapping for built-in types specified in the JDBC 3.0
  1965      * specification.
  1971      * specification.
  1966      * <P>
  1972      * <P>
  1967      * This method may also be used to read datatabase-specific
  1973      * This method may also be used to read datatabase-specific
  1968      * abstract data types.
  1974      * abstract data types.
  1969      * <P>
  1975      * <P>
  1970      * This implementation of the method <code>getObject</code> extends its
  1976      * This implementation of the method {@code getObject} extends its
  1971      * behavior so that it gets the attributes of an SQL structured type
  1977      * behavior so that it gets the attributes of an SQL structured type
  1972      * as an array of <code>Object</code> values.  This method also custom
  1978      * as an array of {@code Object} values.  This method also custom
  1973      * maps SQL user-defined types to classes
  1979      * maps SQL user-defined types to classes
  1974      * in the Java programming language. When the specified column contains
  1980      * in the Java programming language. When the specified column contains
  1975      * a structured or distinct value, the behavior of this method is as
  1981      * a structured or distinct value, the behavior of this method is as
  1976      * if it were a call to the method <code>getObject(columnIndex,
  1982      * if it were a call to the method {@code getObject(columnIndex,
  1977      * this.getStatement().getConnection().getTypeMap())</code>.
  1983      * this.getStatement().getConnection().getTypeMap())}.
  1978      *
  1984      *
  1979      * @param columnName a <code>String</code> object that must match the
  1985      * @param columnName a {@code String} object that must match the
  1980      *        SQL name of a column in this rowset, ignoring case
  1986      *        SQL name of a column in this rowset, ignoring case
  1981      * @return a <code>java.lang.Object</code> holding the column value;
  1987      * @return a {@code java.lang.Object} holding the column value;
  1982      *         if the value is SQL <code>NULL</code>, the result is <code>null</code>
  1988      *         if the value is SQL {@code NULL}, the result is {@code null}
  1983      * @throws SQLException if (1) the given column name does not match one of
  1989      * @throws SQLException if (1) the given column name does not match one of
  1984      *            this rowset's column names, (2) the cursor is not
  1990      *            this rowset's column names, (2) the cursor is not
  1985      *            on a valid row, or (3) there is a problem getting
  1991      *            on a valid row, or (3) there is a problem getting
  1986      *            the <code>Class</code> object for a custom mapping
  1992      *            the {@code Class} object for a custom mapping
  1987      * @see #getObject(int)
  1993      * @see #getObject(int)
  1988      */
  1994      */
  1989     public Object getObject(String columnName) throws SQLException {
  1995     public Object getObject(String columnName) throws SQLException {
  1990        throw new UnsupportedOperationException();
  1996        throw new UnsupportedOperationException();
  1991     }
  1997     }
  1992 
  1998 
  1993     //----------------------------------------------------------------
  1999     //----------------------------------------------------------------
  1994 
  2000 
  1995     /**
  2001     /**
  1996      * Maps the given column name for one of this <code>CachedRowSetImpl</code>
  2002      * Maps the given column name for one of this {@code CachedRowSetImpl}
  1997      * object's columns to its column number.
  2003      * object's columns to its column number.
  1998      *
  2004      *
  1999      * @param columnName a <code>String</code> object that must match the
  2005      * @param columnName a {@code String} object that must match the
  2000      *        SQL name of a column in this rowset, ignoring case
  2006      *        SQL name of a column in this rowset, ignoring case
  2001      * @return the column index of the given column name
  2007      * @return the column index of the given column name
  2002      * @throws SQLException if the given column name does not match one
  2008      * @throws SQLException if the given column name does not match one
  2003      *            of this rowset's column names
  2009      *            of this rowset's column names
  2004      */
  2010      */
  2012     // Getter's and Setter's
  2018     // Getter's and Setter's
  2013     //---------------------------------------------------------------------
  2019     //---------------------------------------------------------------------
  2014 
  2020 
  2015     /**
  2021     /**
  2016      * Retrieves the value stored in the designated column
  2022      * Retrieves the value stored in the designated column
  2017      * of the current row as a <code>java.io.Reader</code> object.
  2023      * of the current row as a {@code java.io.Reader} object.
  2018      *
  2024      *
  2019      * <P><B>Note:</B> All the data in the returned stream must
  2025      * <P><B>Note:</B> All the data in the returned stream must
  2020      * be read prior to getting the value of any other column. The
  2026      * be read prior to getting the value of any other column. The
  2021      * next call to a <code>getXXX</code> method implicitly closes the stream.
  2027      * next call to a {@code getXXX} method implicitly closes the stream.
  2022      *
  2028      *
  2023      * @param columnIndex the first column is <code>1</code>, the second
  2029      * @param columnIndex the first column is {@code 1}, the second
  2024      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2030      *        is {@code 2}, and so on; must be {@code 1} or larger
  2025      *        and equal to or less than the number of columns in the rowset
  2031      *        and equal to or less than the number of columns in the rowset
  2026      * @return a Java character stream that delivers the database column value
  2032      * @return a Java character stream that delivers the database column value
  2027      * as a stream of two-byte unicode characters in a
  2033      * as a stream of two-byte unicode characters in a
  2028      * <code>java.io.Reader</code> object.  If the value is
  2034      * {@code java.io.Reader} object.  If the value is
  2029      * SQL <code>NULL</code>, the result is <code>null</code>.
  2035      * SQL {@code NULL}, the result is {@code null}.
  2030      * @throws SQLException if (1) the given column index is out of bounds,
  2036      * @throws SQLException if (1) the given column index is out of bounds,
  2031      * (2) the cursor is not on one of this rowset's rows or its
  2037      *         (2) the cursor is not on one of this rowset's rows or its
  2032      * insert row, or (3) the designated column does not store an
  2038      *         insert row, or (3) the designated column does not store an
  2033      * SQL <code>CHAR, VARCHAR, <b>LONGVARCHAR</b>, BINARY, VARBINARY</code> or
  2039      *         SQL {@code CHAR, VARCHAR,} <b>{@code LONGVARCHAR}</b>,
  2034      * <code>LONGVARBINARY</code> value.
  2040      *         {@code BINARY, VARBINARY} or {@code LONGVARBINARY} value.
  2035      * The bold SQL type designates the recommended return type.
  2041      *         The bold SQL type designates the recommended return type.
  2036      * @see #getCharacterStream(String)
  2042      * @see #getCharacterStream(String)
  2037      */
  2043      */
  2038     public java.io.Reader getCharacterStream(int columnIndex) throws SQLException{
  2044     public java.io.Reader getCharacterStream(int columnIndex) throws SQLException{
  2039         throw new UnsupportedOperationException();
  2045         throw new UnsupportedOperationException();
  2040     }
  2046     }
  2041 
  2047 
  2042     /**
  2048     /**
  2043      * Retrieves the value stored in the designated column
  2049      * Retrieves the value stored in the designated column
  2044      * of the current row as a <code>java.io.Reader</code> object.
  2050      * of the current row as a {@code java.io.Reader} object.
  2045      *
  2051      *
  2046      * <P><B>Note:</B> All the data in the returned stream must
  2052      * <P><B>Note:</B> All the data in the returned stream must
  2047      * be read prior to getting the value of any other column. The
  2053      * be read prior to getting the value of any other column. The
  2048      * next call to a <code>getXXX</code> method implicitly closes the stream.
  2054      * next call to a {@code getXXX} method implicitly closes the stream.
  2049      *
  2055      *
  2050      * @param columnName a <code>String</code> object giving the SQL name of
  2056      * @param columnName a {@code String} object giving the SQL name of
  2051      *        a column in this <code>CachedRowSetImpl</code> object
  2057      *        a column in this {@code CachedRowSetImpl} object
  2052      * @return a Java input stream that delivers the database column value
  2058      * @return a Java input stream that delivers the database column value
  2053      *         as a stream of two-byte Unicode characters.  If the value is
  2059      *         as a stream of two-byte Unicode characters.  If the value is
  2054      *         SQL <code>NULL</code>, the result is <code>null</code>.
  2060      *         SQL {@code NULL}, the result is {@code null}.
  2055      * @throws SQLException if (1) the given column name is not the name of
  2061      * @throws SQLException if (1) the given column name is not the name of
  2056      * a column in this rowset, (2) the cursor is not on one of
  2062      *         a column in this rowset, (2) the cursor is not on one of
  2057      * this rowset's rows or its insert row, or (3) the designated
  2063      *         this rowset's rows or its insert row, or (3) the designated
  2058      * column does not store an SQL <code>CHAR, VARCHAR, <b>LONGVARCHAR</b>,
  2064      *         column does not store an SQL {@code CHAR, VARCHAR,}
  2059      * BINARY, VARYBINARY</code> or <code>LONGVARBINARY</code> value.
  2065      *         <b>{@code LONGVARCHAR}</b>,
  2060      * The bold SQL type designates the recommended return type.
  2066      *         {@code BINARY, VARYBINARY} or {@code LONGVARBINARY} value.
       
  2067      *         The bold SQL type designates the recommended return type.
  2061      */
  2068      */
  2062     public java.io.Reader getCharacterStream(String columnName) throws SQLException {
  2069     public java.io.Reader getCharacterStream(String columnName) throws SQLException {
  2063         throw new UnsupportedOperationException();
  2070         throw new UnsupportedOperationException();
  2064     }
  2071     }
  2065 
  2072 
  2066     /**
  2073     /**
  2067      * Retrieves the value of the designated column in the current row
  2074      * Retrieves the value of the designated column in the current row
  2068      * of this <code>CachedRowSetImpl</code> object as a
  2075      * of this {@code CachedRowSetImpl} object as a
  2069      * <code>java.math.BigDecimal</code> object.
  2076      * {@code java.math.BigDecimal} object.
  2070      *
  2077      *
  2071      * @param columnIndex the first column is <code>1</code>, the second
  2078      * @param columnIndex the first column is {@code 1}, the second
  2072      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2079      *        is {@code 2}, and so on; must be {@code 1} or larger
  2073      *        and equal to or less than the number of columns in the rowset
  2080      *        and equal to or less than the number of columns in the rowset
  2074      * @return a <code>java.math.BigDecimal</code> value with full precision;
  2081      * @return a {@code java.math.BigDecimal} value with full precision;
  2075      *         if the value is SQL <code>NULL</code>, the result is <code>null</code>
  2082      *         if the value is SQL {@code NULL}, the result is {@code null}
  2076      * @throws SQLException if (1) the given column index is out of bounds,
  2083      * @throws SQLException if (1) the given column index is out of bounds,
  2077      * (2) the cursor is not on one of this rowset's rows or its
  2084      *         (2) the cursor is not on one of this rowset's rows or its
  2078      * insert row, or (3) the designated column does not store an
  2085      *         insert row, or (3) the designated column does not store an
  2079      * SQL <code>TINYINT, SMALLINT, INTEGER, BIGINT, REAL,
  2086      *         SQL {@code TINYINT, SMALLINT, INTEGER, BIGINT, REAL,
  2080      * FLOAT, DOUBLE, <b>DECIMAL</b>, <b>NUMERIC</b>, BIT, CHAR, VARCHAR</code>
  2087      *         FLOAT, DOUBLE,} <b>{@code DECIMAL, NUMERIC}</b>,
  2081      * or <code>LONGVARCHAR</code> value. The bold SQL type designates the
  2088      *         {@code BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.
  2082      * recommended return types that this method is used to retrieve.
  2089      *         The bold SQL type designates the
       
  2090      *         recommended return types that this method is used to retrieve.
  2083      * @see #getBigDecimal(String)
  2091      * @see #getBigDecimal(String)
  2084      */
  2092      */
  2085     public BigDecimal getBigDecimal(int columnIndex) throws SQLException {
  2093     public BigDecimal getBigDecimal(int columnIndex) throws SQLException {
  2086         throw new UnsupportedOperationException();
  2094         throw new UnsupportedOperationException();
  2087     }
  2095     }
  2088 
  2096 
  2089     /**
  2097     /**
  2090      * Retrieves the value of the designated column in the current row
  2098      * Retrieves the value of the designated column in the current row
  2091      * of this <code>CachedRowSetImpl</code> object as a
  2099      * of this {@code CachedRowSetImpl} object as a
  2092      * <code>java.math.BigDecimal</code> object.
  2100      * {@code java.math.BigDecimal} object.
  2093      *
  2101      *
  2094      * @param columnName a <code>String</code> object that must match the
  2102      * @param columnName a {@code String} object that must match the
  2095      *        SQL name of a column in this rowset, ignoring case
  2103      *        SQL name of a column in this rowset, ignoring case
  2096      * @return a <code>java.math.BigDecimal</code> value with full precision;
  2104      * @return a {@code java.math.BigDecimal} value with full precision;
  2097      *         if the value is SQL <code>NULL</code>, the result is <code>null</code>
  2105      *         if the value is SQL {@code NULL}, the result is {@code null}
  2098      * @throws SQLException if (1) the given column name is not the name of
  2106      * @throws SQLException if (1) the given column name is not the name of
  2099      * a column in this rowset, (2) the cursor is not on one of
  2107      *         a column in this rowset, (2) the cursor is not on one of
  2100      * this rowset's rows or its insert row, or (3) the designated
  2108      *         this rowset's rows or its insert row, or (3) the designated
  2101      * column does not store an SQL <code>TINYINT, SMALLINT, INTEGER
  2109      *         column does not store an SQL {@code TINYINT, SMALLINT, INTEGER,
  2102      * BIGINT, REAL, FLOAT, DOUBLE, <b>DECIMAL</b>, <b>NUMERIC</b>, BIT CHAR,
  2110      *         BIGINT, REAL, FLOAT, DOUBLE,} <b>{@code DECIMAL, NUMERIC}</b>,
  2103      * VARCHAR</code> or <code>LONGVARCHAR</code> value. The bold SQL type
  2111      *         {@code BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.
  2104      * designates the recommended return type that this method is used to
  2112      *         The bold SQL type designates the recommended return type
  2105      * retrieve
  2113      *         that this method is used to retrieve.
  2106      * @see #getBigDecimal(int)
  2114      * @see #getBigDecimal(int)
  2107      */
  2115      */
  2108     public BigDecimal getBigDecimal(String columnName) throws SQLException {
  2116     public BigDecimal getBigDecimal(String columnName) throws SQLException {
  2109         throw new UnsupportedOperationException();
  2117         throw new UnsupportedOperationException();
  2110     }
  2118     }
  2112     //---------------------------------------------------------------------
  2120     //---------------------------------------------------------------------
  2113     // Traversal/Positioning
  2121     // Traversal/Positioning
  2114     //---------------------------------------------------------------------
  2122     //---------------------------------------------------------------------
  2115 
  2123 
  2116     /**
  2124     /**
  2117      * Returns the number of rows in this <code>CachedRowSetImpl</code> object.
  2125      * Returns the number of rows in this {@code CachedRowSetImpl} object.
  2118      *
  2126      *
  2119      * @return number of rows in the rowset
  2127      * @return number of rows in the rowset
  2120      */
  2128      */
  2121     public int size() {
  2129     public int size() {
  2122         throw new UnsupportedOperationException();
  2130         throw new UnsupportedOperationException();
  2123     }
  2131     }
  2124 
  2132 
  2125     /**
  2133     /**
  2126      * Indicates whether the cursor is before the first row in this
  2134      * Indicates whether the cursor is before the first row in this
  2127      * <code>CachedRowSetImpl</code> object.
  2135      * {@code CachedRowSetImpl} object.
  2128      *
  2136      *
  2129      * @return <code>true</code> if the cursor is before the first row;
  2137      * @return {@code true} if the cursor is before the first row;
  2130      *         <code>false</code> otherwise or if the rowset contains no rows
  2138      *         {@code false} otherwise or if the rowset contains no rows
  2131      * @throws SQLException if an error occurs
  2139      * @throws SQLException if an error occurs
  2132      */
  2140      */
  2133     public boolean isBeforeFirst() throws SQLException {
  2141     public boolean isBeforeFirst() throws SQLException {
  2134         throw new UnsupportedOperationException();
  2142         throw new UnsupportedOperationException();
  2135     }
  2143     }
  2136 
  2144 
  2137     /**
  2145     /**
  2138      * Indicates whether the cursor is after the last row in this
  2146      * Indicates whether the cursor is after the last row in this
  2139      * <code>CachedRowSetImpl</code> object.
  2147      * {@code CachedRowSetImpl} object.
  2140      *
  2148      *
  2141      * @return <code>true</code> if the cursor is after the last row;
  2149      * @return {@code true} if the cursor is after the last row;
  2142      *         <code>false</code> otherwise or if the rowset contains no rows
  2150      *         {@code false} otherwise or if the rowset contains no rows
  2143      * @throws SQLException if an error occurs
  2151      * @throws SQLException if an error occurs
  2144      */
  2152      */
  2145     public boolean isAfterLast() throws SQLException {
  2153     public boolean isAfterLast() throws SQLException {
  2146         throw new UnsupportedOperationException();
  2154         throw new UnsupportedOperationException();
  2147     }
  2155     }
  2148 
  2156 
  2149     /**
  2157     /**
  2150      * Indicates whether the cursor is on the first row in this
  2158      * Indicates whether the cursor is on the first row in this
  2151      * <code>CachedRowSetImpl</code> object.
  2159      * {@code CachedRowSetImpl} object.
  2152      *
  2160      *
  2153      * @return <code>true</code> if the cursor is on the first row;
  2161      * @return {@code true} if the cursor is on the first row;
  2154      *         <code>false</code> otherwise or if the rowset contains no rows
  2162      *         {@code false} otherwise or if the rowset contains no rows
  2155      * @throws SQLException if an error occurs
  2163      * @throws SQLException if an error occurs
  2156      */
  2164      */
  2157     public boolean isFirst() throws SQLException {
  2165     public boolean isFirst() throws SQLException {
  2158         throw new UnsupportedOperationException();
  2166         throw new UnsupportedOperationException();
  2159     }
  2167     }
  2160 
  2168 
  2161     /**
  2169     /**
  2162      * Indicates whether the cursor is on the last row in this
  2170      * Indicates whether the cursor is on the last row in this
  2163      * <code>CachedRowSetImpl</code> object.
  2171      * {@code CachedRowSetImpl} object.
  2164      * <P>
  2172      * <P>
  2165      * Note: Calling the method <code>isLast</code> may be expensive
  2173      * Note: Calling the method {@code isLast} may be expensive
  2166      * because the JDBC driver might need to fetch ahead one row in order
  2174      * because the JDBC driver might need to fetch ahead one row in order
  2167      * to determine whether the current row is the last row in this rowset.
  2175      * to determine whether the current row is the last row in this rowset.
  2168      *
  2176      *
  2169      * @return <code>true</code> if the cursor is on the last row;
  2177      * @return {@code true} if the cursor is on the last row;
  2170      *         <code>false</code> otherwise or if this rowset contains no rows
  2178      *         {@code false} otherwise or if this rowset contains no rows
  2171      * @throws SQLException if an error occurs
  2179      * @throws SQLException if an error occurs
  2172      */
  2180      */
  2173     public boolean isLast() throws SQLException {
  2181     public boolean isLast() throws SQLException {
  2174         throw new UnsupportedOperationException();
  2182         throw new UnsupportedOperationException();
  2175     }
  2183     }
  2176 
  2184 
  2177     /**
  2185     /**
  2178      * Moves this <code>CachedRowSetImpl</code> object's cursor to the front of
  2186      * Moves this {@code CachedRowSetImpl} object's cursor to the front of
  2179      * the rowset, just before the first row. This method has no effect if
  2187      * the rowset, just before the first row. This method has no effect if
  2180      * this rowset contains no rows.
  2188      * this rowset contains no rows.
  2181      *
  2189      *
  2182      * @throws SQLException if an error occurs or the type of this rowset
  2190      * @throws SQLException if an error occurs or the type of this rowset
  2183      *            is <code>ResultSet.TYPE_FORWARD_ONLY</code>
  2191      *            is {@code ResultSet.TYPE_FORWARD_ONLY}
  2184      */
  2192      */
  2185     public void beforeFirst() throws SQLException {
  2193     public void beforeFirst() throws SQLException {
  2186         throw new UnsupportedOperationException();
  2194         throw new UnsupportedOperationException();
  2187     }
  2195     }
  2188 
  2196 
  2189     /**
  2197     /**
  2190      * Moves this <code>CachedRowSetImpl</code> object's cursor to the end of
  2198      * Moves this {@code CachedRowSetImpl} object's cursor to the end of
  2191      * the rowset, just after the last row. This method has no effect if
  2199      * the rowset, just after the last row. This method has no effect if
  2192      * this rowset contains no rows.
  2200      * this rowset contains no rows.
  2193      *
  2201      *
  2194      * @throws SQLException if an error occurs
  2202      * @throws SQLException if an error occurs
  2195      */
  2203      */
  2196     public void afterLast() throws SQLException {
  2204     public void afterLast() throws SQLException {
  2197         throw new UnsupportedOperationException();
  2205         throw new UnsupportedOperationException();
  2198     }
  2206     }
  2199 
  2207 
  2200     /**
  2208     /**
  2201      * Moves this <code>CachedRowSetImpl</code> object's cursor to the first row
  2209      * Moves this {@code CachedRowSetImpl} object's cursor to the first row
  2202      * and returns <code>true</code> if the operation was successful.  This
  2210      * and returns {@code true} if the operation was successful.  This
  2203      * method also notifies registered listeners that the cursor has moved.
  2211      * method also notifies registered listeners that the cursor has moved.
  2204      *
  2212      *
  2205      * @return <code>true</code> if the cursor is on a valid row;
  2213      * @return {@code true} if the cursor is on a valid row;
  2206      *         <code>false</code> otherwise or if there are no rows in this
  2214      *         {@code false} otherwise or if there are no rows in this
  2207      *         <code>CachedRowSetImpl</code> object
  2215      *         {@code CachedRowSetImpl} object
  2208      * @throws SQLException if the type of this rowset
  2216      * @throws SQLException if the type of this rowset
  2209      *            is <code>ResultSet.TYPE_FORWARD_ONLY</code>
  2217      *            is {@code ResultSet.TYPE_FORWARD_ONLY}
  2210      */
  2218      */
  2211     public boolean first() throws SQLException {
  2219     public boolean first() throws SQLException {
  2212         throw new UnsupportedOperationException();
  2220         throw new UnsupportedOperationException();
  2213     }
  2221     }
  2214 
  2222 
  2215     /**
  2223     /**
  2216      * Moves this <code>CachedRowSetImpl</code> object's cursor to the first
  2224      * Moves this {@code CachedRowSetImpl} object's cursor to the first
  2217      * row and returns <code>true</code> if the operation is successful.
  2225      * row and returns {@code true} if the operation is successful.
  2218      * <P>
  2226      * <P>
  2219      * This method is called internally by the methods <code>first</code>,
  2227      * This method is called internally by the methods {@code first},
  2220      * <code>isFirst</code>, and <code>absolute</code>.
  2228      * {@code isFirst}, and {@code absolute}.
  2221      * It in turn calls the method <code>internalNext</code> in order to
  2229      * It in turn calls the method {@code internalNext} in order to
  2222      * handle the case where the first row is a deleted row that is not visible.
  2230      * handle the case where the first row is a deleted row that is not visible.
  2223      * <p>
  2231      * <p>
  2224      * This is a implementation only method and is not required as a standard
  2232      * This is a implementation only method and is not required as a standard
  2225      * implementation of the <code>CachedRowSet</code> interface.
  2233      * implementation of the {@code CachedRowSet} interface.
  2226      *
  2234      *
  2227      * @return <code>true</code> if the cursor moved to the first row;
  2235      * @return {@code true} if the cursor moved to the first row;
  2228      *         <code>false</code> otherwise
  2236      *         {@code false} otherwise
  2229      * @throws SQLException if an error occurs
  2237      * @throws SQLException if an error occurs
  2230      */
  2238      */
  2231     protected boolean internalFirst() throws SQLException {
  2239     protected boolean internalFirst() throws SQLException {
  2232         throw new UnsupportedOperationException();
  2240         throw new UnsupportedOperationException();
  2233     }
  2241     }
  2234 
  2242 
  2235     /**
  2243     /**
  2236      * Moves this <code>CachedRowSetImpl</code> object's cursor to the last row
  2244      * Moves this {@code CachedRowSetImpl} object's cursor to the last row
  2237      * and returns <code>true</code> if the operation was successful.  This
  2245      * and returns {@code true} if the operation was successful.  This
  2238      * method also notifies registered listeners that the cursor has moved.
  2246      * method also notifies registered listeners that the cursor has moved.
  2239      *
  2247      *
  2240      * @return <code>true</code> if the cursor is on a valid row;
  2248      * @return {@code true} if the cursor is on a valid row;
  2241      *         <code>false</code> otherwise or if there are no rows in this
  2249      *         {@code false} otherwise or if there are no rows in this
  2242      *         <code>CachedRowSetImpl</code> object
  2250      *         {@code CachedRowSetImpl} object
  2243      * @throws SQLException if the type of this rowset
  2251      * @throws SQLException if the type of this rowset
  2244      *            is <code>ResultSet.TYPE_FORWARD_ONLY</code>
  2252      *            is {@code ResultSet.TYPE_FORWARD_ONLY}
  2245      */
  2253      */
  2246     public boolean last() throws SQLException {
  2254     public boolean last() throws SQLException {
  2247         throw new UnsupportedOperationException();
  2255         throw new UnsupportedOperationException();
  2248     }
  2256     }
  2249 
  2257 
  2250     /**
  2258     /**
  2251      * Moves this <code>CachedRowSetImpl</code> object's cursor to the last
  2259      * Moves this {@code CachedRowSetImpl} object's cursor to the last
  2252      * row and returns <code>true</code> if the operation is successful.
  2260      * row and returns {@code true} if the operation is successful.
  2253      * <P>
  2261      * <P>
  2254      * This method is called internally by the method <code>last</code>
  2262      * This method is called internally by the method {@code last}
  2255      * when rows have been deleted and the deletions are not visible.
  2263      * when rows have been deleted and the deletions are not visible.
  2256      * The method <code>internalLast</code> handles the case where the
  2264      * The method {@code internalLast} handles the case where the
  2257      * last row is a deleted row that is not visible by in turn calling
  2265      * last row is a deleted row that is not visible by in turn calling
  2258      * the method <code>internalPrevious</code>.
  2266      * the method {@code internalPrevious}.
  2259      * <p>
  2267      * <p>
  2260      * This is a implementation only method and is not required as a standard
  2268      * This is a implementation only method and is not required as a standard
  2261      * implementation of the <code>CachedRowSet</code> interface.
  2269      * implementation of the {@code CachedRowSet} interface.
  2262      *
  2270      *
  2263      * @return <code>true</code> if the cursor moved to the last row;
  2271      * @return {@code true} if the cursor moved to the last row;
  2264      *         <code>false</code> otherwise
  2272      *         {@code false} otherwise
  2265      * @throws SQLException if an error occurs
  2273      * @throws SQLException if an error occurs
  2266      */
  2274      */
  2267     protected boolean internalLast() throws SQLException {
  2275     protected boolean internalLast() throws SQLException {
  2268         throw new UnsupportedOperationException();
  2276         throw new UnsupportedOperationException();
  2269     }
  2277     }
  2270 
  2278 
  2271     /**
  2279     /**
  2272      * Returns the number of the current row in this <code>CachedRowSetImpl</code>
  2280      * Returns the number of the current row in this {@code CachedRowSetImpl}
  2273      * object. The first row is number 1, the second number 2, and so on.
  2281      * object. The first row is number 1, the second number 2, and so on.
  2274      *
  2282      *
  2275      * @return the number of the current row;  <code>0</code> if there is no
  2283      * @return the number of the current row;  {@code 0} if there is no
  2276      *         current row
  2284      *         current row
  2277      * @throws SQLException if an error occurs; or if the <code>CacheRowSetImpl</code>
  2285      * @throws SQLException if an error occurs; or if the {@code CacheRowSetImpl}
  2278      *         is empty
  2286      *         is empty
  2279      */
  2287      */
  2280     public int getRow() throws SQLException {
  2288     public int getRow() throws SQLException {
  2281         return crsSync.getRow();
  2289         return crsSync.getRow();
  2282     }
  2290     }
  2283 
  2291 
  2284     /**
  2292     /**
  2285      * Moves this <code>CachedRowSetImpl</code> object's cursor to the row number
  2293      * Moves this {@code CachedRowSetImpl} object's cursor to the row number
  2286      * specified.
  2294      * specified.
  2287      *
  2295      *
  2288      * <p>If the number is positive, the cursor moves to an absolute row with
  2296      * <p>If the number is positive, the cursor moves to an absolute row with
  2289      * respect to the beginning of the rowset.  The first row is row 1, the second
  2297      * respect to the beginning of the rowset.  The first row is row 1, the second
  2290      * is row 2, and so on.  For example, the following command, in which
  2298      * is row 2, and so on.  For example, the following command, in which
  2291      * <code>crs</code> is a <code>CachedRowSetImpl</code> object, moves the cursor
  2299      * {@code crs} is a {@code CachedRowSetImpl} object, moves the cursor
  2292      * to the fourth row, starting from the beginning of the rowset.
  2300      * to the fourth row, starting from the beginning of the rowset.
  2293      * <PRE><code>
  2301      * <PRE>{@code
  2294      *
  2302      *
  2295      *    crs.absolute(4);
  2303      *    crs.absolute(4);
  2296      *
  2304      *
  2297      * </code> </PRE>
  2305      * }</PRE>
  2298      * <P>
  2306      * <P>
  2299      * If the number is negative, the cursor moves to an absolute row position
  2307      * If the number is negative, the cursor moves to an absolute row position
  2300      * with respect to the end of the rowset.  For example, calling
  2308      * with respect to the end of the rowset.  For example, calling
  2301      * <code>absolute(-1)</code> positions the cursor on the last row,
  2309      * {@code absolute(-1)} positions the cursor on the last row,
  2302      * <code>absolute(-2)</code> moves it on the next-to-last row, and so on.
  2310      * {@code absolute(-2)} moves it on the next-to-last row, and so on.
  2303      * If the <code>CachedRowSetImpl</code> object <code>crs</code> has five rows,
  2311      * If the {@code CachedRowSetImpl} object {@code crs} has five rows,
  2304      * the following command moves the cursor to the fourth-to-last row, which
  2312      * the following command moves the cursor to the fourth-to-last row, which
  2305      * in the case of a  rowset with five rows, is also the second row, counting
  2313      * in the case of a  rowset with five rows, is also the second row, counting
  2306      * from the beginning.
  2314      * from the beginning.
  2307      * <PRE><code>
  2315      * <PRE>{@code
  2308      *
  2316      *
  2309      *    crs.absolute(-4);
  2317      *    crs.absolute(-4);
  2310      *
  2318      *
  2311      * </code> </PRE>
  2319      * }</PRE>
  2312      *
  2320      *
  2313      * If the number specified is larger than the number of rows, the cursor
  2321      * If the number specified is larger than the number of rows, the cursor
  2314      * will move to the position after the last row. If the number specified
  2322      * will move to the position after the last row. If the number specified
  2315      * would move the cursor one or more rows before the first row, the cursor
  2323      * would move the cursor one or more rows before the first row, the cursor
  2316      * moves to the position before the first row.
  2324      * moves to the position before the first row.
  2317      * <P>
  2325      * <P>
  2318      * Note: Calling <code>absolute(1)</code> is the same as calling the
  2326      * Note: Calling {@code absolute(1)} is the same as calling the
  2319      * method <code>first()</code>.  Calling <code>absolute(-1)</code> is the
  2327      * method {@code first()}.  Calling {@code absolute(-1)} is the
  2320      * same as calling <code>last()</code>.
  2328      * same as calling {@code last()}.
  2321      *
  2329      *
  2322      * @param row a positive number to indicate the row, starting row numbering from
  2330      * @param row a positive number to indicate the row, starting row numbering from
  2323      *        the first row, which is <code>1</code>; a negative number to indicate
  2331      *        the first row, which is {@code 1}; a negative number to indicate
  2324      *        the row, starting row numbering from the last row, which is
  2332      *        the row, starting row numbering from the last row, which is
  2325      *        <code>-1</code>; it must not be <code>0</code>
  2333      *        {@code -1}; it must not be {@code 0}
  2326      * @return <code>true</code> if the cursor is on the rowset; <code>false</code>
  2334      * @return {@code true} if the cursor is on the rowset; {@code false}
  2327      *         otherwise
  2335      *         otherwise
  2328      * @throws SQLException if the given cursor position is <code>0</code> or the
  2336      * @throws SQLException if the given cursor position is {@code 0} or the
  2329      *            type of this rowset is <code>ResultSet.TYPE_FORWARD_ONLY</code>
  2337      *            type of this rowset is {@code ResultSet.TYPE_FORWARD_ONLY}
  2330      */
  2338      */
  2331     public boolean absolute( int row ) throws SQLException {
  2339     public boolean absolute( int row ) throws SQLException {
  2332         throw new UnsupportedOperationException();
  2340         throw new UnsupportedOperationException();
  2333     }
  2341     }
  2334 
  2342 
  2338      * negative number moving it backward.
  2346      * negative number moving it backward.
  2339      * <P>
  2347      * <P>
  2340      * If the number is positive, the cursor moves the specified number of
  2348      * If the number is positive, the cursor moves the specified number of
  2341      * rows toward the end of the rowset, starting at the current row.
  2349      * rows toward the end of the rowset, starting at the current row.
  2342      * For example, the following command, in which
  2350      * For example, the following command, in which
  2343      * <code>crs</code> is a <code>CachedRowSetImpl</code> object with 100 rows,
  2351      * {@code crs} is a {@code CachedRowSetImpl} object with 100 rows,
  2344      * moves the cursor forward four rows from the current row.  If the
  2352      * moves the cursor forward four rows from the current row.  If the
  2345      * current row is 50, the cursor would move to row 54.
  2353      * current row is 50, the cursor would move to row 54.
  2346      * <PRE><code>
  2354      * <PRE>{@code
  2347      *
  2355      *
  2348      *    crs.relative(4);
  2356      *    crs.relative(4);
  2349      *
  2357      *
  2350      * </code> </PRE>
  2358      * }</PRE>
  2351      * <P>
  2359      * <P>
  2352      * If the number is negative, the cursor moves back toward the beginning
  2360      * If the number is negative, the cursor moves back toward the beginning
  2353      * the specified number of rows, starting at the current row.
  2361      * the specified number of rows, starting at the current row.
  2354      * For example, calling the method
  2362      * For example, calling the method
  2355      * <code>absolute(-1)</code> positions the cursor on the last row,
  2363      * {@code absolute(-1)} positions the cursor on the last row,
  2356      * <code>absolute(-2)</code> moves it on the next-to-last row, and so on.
  2364      * {@code absolute(-2)} moves it on the next-to-last row, and so on.
  2357      * If the <code>CachedRowSetImpl</code> object <code>crs</code> has five rows,
  2365      * If the {@code CachedRowSetImpl} object {@code crs} has five rows,
  2358      * the following command moves the cursor to the fourth-to-last row, which
  2366      * the following command moves the cursor to the fourth-to-last row, which
  2359      * in the case of a  rowset with five rows, is also the second row
  2367      * in the case of a  rowset with five rows, is also the second row
  2360      * from the beginning.
  2368      * from the beginning.
  2361      * <PRE><code>
  2369      * <PRE>{@code
  2362      *
  2370      *
  2363      *    crs.absolute(-4);
  2371      *    crs.absolute(-4);
  2364      *
  2372      *
  2365      * </code> </PRE>
  2373      * }</PRE>
  2366      *
  2374      *
  2367      * If the number specified is larger than the number of rows, the cursor
  2375      * If the number specified is larger than the number of rows, the cursor
  2368      * will move to the position after the last row. If the number specified
  2376      * will move to the position after the last row. If the number specified
  2369      * would move the cursor one or more rows before the first row, the cursor
  2377      * would move the cursor one or more rows before the first row, the cursor
  2370      * moves to the position before the first row. In both cases, this method
  2378      * moves to the position before the first row. In both cases, this method
  2371      * throws an <code>SQLException</code>.
  2379      * throws an {@code SQLException}.
  2372      * <P>
  2380      * <P>
  2373      * Note: Calling <code>absolute(1)</code> is the same as calling the
  2381      * Note: Calling {@code absolute(1)} is the same as calling the
  2374      * method <code>first()</code>.  Calling <code>absolute(-1)</code> is the
  2382      * method {@code first()}.  Calling {@code absolute(-1)} is the
  2375      * same as calling <code>last()</code>.  Calling <code>relative(0)</code>
  2383      * same as calling {@code last()}.  Calling {@code relative(0)}
  2376      * is valid, but it does not change the cursor position.
  2384      * is valid, but it does not change the cursor position.
  2377      *
  2385      *
  2378      * @param rows an <code>int</code> indicating the number of rows to move
  2386      * @param rows an {@code int} indicating the number of rows to move
  2379      *             the cursor, starting at the current row; a positive number
  2387      *             the cursor, starting at the current row; a positive number
  2380      *             moves the cursor forward; a negative number moves the cursor
  2388      *             moves the cursor forward; a negative number moves the cursor
  2381      *             backward; must not move the cursor past the valid
  2389      *             backward; must not move the cursor past the valid
  2382      *             rows
  2390      *             rows
  2383      * @return <code>true</code> if the cursor is on a row in this
  2391      * @return {@code true} if the cursor is on a row in this
  2384      *         <code>CachedRowSetImpl</code> object; <code>false</code>
  2392      *         {@code CachedRowSetImpl} object; {@code false}
  2385      *         otherwise
  2393      *         otherwise
  2386      * @throws SQLException if there are no rows in this rowset, the cursor is
  2394      * @throws SQLException if there are no rows in this rowset, the cursor is
  2387      *         positioned either before the first row or after the last row, or
  2395      *         positioned either before the first row or after the last row, or
  2388      *         the rowset is type <code>ResultSet.TYPE_FORWARD_ONLY</code>
  2396      *         the rowset is type {@code ResultSet.TYPE_FORWARD_ONLY}
  2389      */
  2397      */
  2390     public boolean relative(int rows) throws SQLException {
  2398     public boolean relative(int rows) throws SQLException {
  2391         throw new UnsupportedOperationException();
  2399         throw new UnsupportedOperationException();
  2392     }
  2400     }
  2393 
  2401 
  2394     /**
  2402     /**
  2395      * Moves this <code>CachedRowSetImpl</code> object's cursor to the
  2403      * Moves this {@code CachedRowSetImpl} object's cursor to the
  2396      * previous row and returns <code>true</code> if the cursor is on
  2404      * previous row and returns {@code true} if the cursor is on
  2397      * a valid row or <code>false</code> if it is not.
  2405      * a valid row or {@code false} if it is not.
  2398      * This method also notifies all listeners registered with this
  2406      * This method also notifies all listeners registered with this
  2399      * <code>CachedRowSetImpl</code> object that its cursor has moved.
  2407      * {@code CachedRowSetImpl} object that its cursor has moved.
  2400      * <P>
  2408      * <P>
  2401      * Note: calling the method <code>previous()</code> is not the same
  2409      * Note: calling the method {@code previous()} is not the same
  2402      * as calling the method <code>relative(-1)</code>.  This is true
  2410      * as calling the method {@code relative(-1)}.  This is true
  2403      * because it is possible to call <code>previous()</code> from the insert
  2411      * because it is possible to call {@code previous()} from the insert
  2404      * row, from after the last row, or from the current row, whereas
  2412      * row, from after the last row, or from the current row, whereas
  2405      * <code>relative</code> may only be called from the current row.
  2413      * {@code relative} may only be called from the current row.
  2406      * <P>
  2414      * <P>
  2407      * The method <code>previous</code> may used in a <code>while</code>
  2415      * The method {@code previous} may used in a {@code while}
  2408      * loop to iterate through a rowset starting after the last row
  2416      * loop to iterate through a rowset starting after the last row
  2409      * and moving toward the beginning. The loop ends when <code>previous</code>
  2417      * and moving toward the beginning. The loop ends when {@code previous}
  2410      * returns <code>false</code>, meaning that there are no more rows.
  2418      * returns {@code false}, meaning that there are no more rows.
  2411      * For example, the following code fragment retrieves all the data in
  2419      * For example, the following code fragment retrieves all the data in
  2412      * the <code>CachedRowSetImpl</code> object <code>crs</code>, which has
  2420      * the {@code CachedRowSetImpl} object {@code crs}, which has
  2413      * three columns.  Note that the cursor must initially be positioned
  2421      * three columns.  Note that the cursor must initially be positioned
  2414      * after the last row so that the first call to the method
  2422      * after the last row so that the first call to the method
  2415      * <code>previous</code> places the cursor on the last line.
  2423      * {@code previous} places the cursor on the last line.
  2416      * <PRE> <code>
  2424      * <PRE>{@code
  2417      *
  2425      *
  2418      *     crs.afterLast();
  2426      *     crs.afterLast();
  2419      *     while (previous()) {
  2427      *     while (previous()) {
  2420      *         String name = crs.getString(1);
  2428      *         String name = crs.getString(1);
  2421      *         int age = crs.getInt(2);
  2429      *         int age = crs.getInt(2);
  2422      *         short ssn = crs.getShort(3);
  2430      *         short ssn = crs.getShort(3);
  2423      *         System.out.println(name + "   " + age + "   " + ssn);
  2431      *         System.out.println(name + "   " + age + "   " + ssn);
  2424      *     }
  2432      *     }
  2425      *
  2433      *
  2426      * </code> </PRE>
  2434      * }</PRE>
  2427      * This method throws an <code>SQLException</code> if the cursor is not
  2435      * This method throws an {@code SQLException} if the cursor is not
  2428      * on a row in the rowset, before the first row, or after the last row.
  2436      * on a row in the rowset, before the first row, or after the last row.
  2429      *
  2437      *
  2430      * @return <code>true</code> if the cursor is on a valid row;
  2438      * @return {@code true} if the cursor is on a valid row;
  2431      *         <code>false</code> if it is before the first row or after the
  2439      *         {@code false} if it is before the first row or after the
  2432      *         last row
  2440      *         last row
  2433      * @throws SQLException if the cursor is not on a valid position or the
  2441      * @throws SQLException if the cursor is not on a valid position or the
  2434      *           type of this rowset is <code>ResultSet.TYPE_FORWARD_ONLY</code>
  2442      *           type of this rowset is {@code ResultSet.TYPE_FORWARD_ONLY}
  2435      */
  2443      */
  2436     public boolean previous() throws SQLException {
  2444     public boolean previous() throws SQLException {
  2437         throw new UnsupportedOperationException();
  2445         throw new UnsupportedOperationException();
  2438     }
  2446     }
  2439 
  2447 
  2440     /**
  2448     /**
  2441      * Moves the cursor to the previous row in this <code>CachedRowSetImpl</code>
  2449      * Moves the cursor to the previous row in this {@code CachedRowSetImpl}
  2442      * object, skipping past deleted rows that are not visible; returns
  2450      * object, skipping past deleted rows that are not visible; returns
  2443      * <code>true</code> if the cursor is on a row in this rowset and
  2451      * {@code true} if the cursor is on a row in this rowset and
  2444      * <code>false</code> when the cursor goes before the first row.
  2452      * {@code false} when the cursor goes before the first row.
  2445      * <P>
  2453      * <P>
  2446      * This method is called internally by the method <code>previous</code>.
  2454      * This method is called internally by the method {@code previous}.
  2447      * <P>
  2455      * <P>
  2448      * This is a implementation only method and is not required as a standard
  2456      * This is a implementation only method and is not required as a standard
  2449      * implementation of the <code>CachedRowSet</code> interface.
  2457      * implementation of the {@code CachedRowSet} interface.
  2450      *
  2458      *
  2451      * @return <code>true</code> if the cursor is on a row in this rowset;
  2459      * @return {@code true} if the cursor is on a row in this rowset;
  2452      *         <code>false</code> when the cursor reaches the position before
  2460      *         {@code false} when the cursor reaches the position before
  2453      *         the first row
  2461      *         the first row
  2454      * @throws SQLException if an error occurs
  2462      * @throws SQLException if an error occurs
  2455      */
  2463      */
  2456     protected boolean internalPrevious() throws SQLException {
  2464     protected boolean internalPrevious() throws SQLException {
  2457         throw new UnsupportedOperationException();
  2465         throw new UnsupportedOperationException();
  2461     //---------------------------------------------------------------------
  2469     //---------------------------------------------------------------------
  2462     // Updates
  2470     // Updates
  2463     //---------------------------------------------------------------------
  2471     //---------------------------------------------------------------------
  2464 
  2472 
  2465     /**
  2473     /**
  2466      * Indicates whether the current row of this <code>CachedRowSetImpl</code>
  2474      * Indicates whether the current row of this {@code CachedRowSetImpl}
  2467      * object has been updated.  The value returned
  2475      * object has been updated.  The value returned
  2468      * depends on whether this rowset can detect updates: <code>false</code>
  2476      * depends on whether this rowset can detect updates: {@code false}
  2469      * will always be returned if it does not detect updates.
  2477      * will always be returned if it does not detect updates.
  2470      *
  2478      *
  2471      * @return <code>true</code> if the row has been visibly updated
  2479      * @return {@code true} if the row has been visibly updated
  2472      *         by the owner or another and updates are detected;
  2480      *         by the owner or another and updates are detected;
  2473      *         <code>false</code> otherwise
  2481      *         {@code false} otherwise
  2474      * @throws SQLException if the cursor is on the insert row or not
  2482      * @throws SQLException if the cursor is on the insert row or not
  2475      *            not on a valid row
  2483      *            not on a valid row
  2476      *
  2484      *
  2477      * @see DatabaseMetaData#updatesAreDetected
  2485      * @see DatabaseMetaData#updatesAreDetected
  2478      */
  2486      */
  2480         throw new UnsupportedOperationException();
  2488         throw new UnsupportedOperationException();
  2481     }
  2489     }
  2482 
  2490 
  2483     /**
  2491     /**
  2484      * Indicates whether the designated column of the current row of
  2492      * Indicates whether the designated column of the current row of
  2485      * this <code>CachedRowSetImpl</code> object has been updated. The
  2493      * this {@code CachedRowSetImpl} object has been updated. The
  2486      * value returned depends on whether this rowset can detcted updates:
  2494      * value returned depends on whether this rowset can detcted updates:
  2487      * <code>false</code> will always be returned if it does not detect updates.
  2495      * {@code false} will always be returned if it does not detect updates.
  2488      *
  2496      *
  2489      * @param idx the index identifier of the column that may be have been updated.
  2497      * @param idx the index identifier of the column that may be have been updated.
  2490      * @return <code>true</code> is the designated column has been updated
  2498      * @return {@code true} is the designated column has been updated
  2491      * and the rowset detects updates; <code>false</code> if the rowset has not
  2499      * and the rowset detects updates; {@code false} if the rowset has not
  2492      * been updated or the rowset does not detect updates
  2500      * been updated or the rowset does not detect updates
  2493      * @throws SQLException if the cursor is on the insert row or not
  2501      * @throws SQLException if the cursor is on the insert row or not
  2494      *          on a valid row
  2502      *          on a valid row
  2495      * @see DatabaseMetaData#updatesAreDetected
  2503      * @see DatabaseMetaData#updatesAreDetected
  2496      */
  2504      */
  2498         throw new UnsupportedOperationException();
  2506         throw new UnsupportedOperationException();
  2499     }
  2507     }
  2500 
  2508 
  2501     /**
  2509     /**
  2502      * Indicates whether the designated column of the current row of
  2510      * Indicates whether the designated column of the current row of
  2503      * this <code>CachedRowSetImpl</code> object has been updated. The
  2511      * this {@code CachedRowSetImpl} object has been updated. The
  2504      * value returned depends on whether this rowset can detcted updates:
  2512      * value returned depends on whether this rowset can detcted updates:
  2505      * <code>false</code> will always be returned if it does not detect updates.
  2513      * {@code false} will always be returned if it does not detect updates.
  2506      *
  2514      *
  2507      * @param columnName the <code>String</code> column name column that may be have
  2515      * @param columnName the {@code String} column name column that may be have
  2508      * been updated.
  2516      * been updated.
  2509      * @return <code>true</code> is the designated column has been updated
  2517      * @return {@code true} is the designated column has been updated
  2510      * and the rowset detects updates; <code>false</code> if the rowset has not
  2518      * and the rowset detects updates; {@code false} if the rowset has not
  2511      * been updated or the rowset does not detect updates
  2519      * been updated or the rowset does not detect updates
  2512      * @throws SQLException if the cursor is on the insert row or not
  2520      * @throws SQLException if the cursor is on the insert row or not
  2513      *          on a valid row
  2521      *          on a valid row
  2514      * @see DatabaseMetaData#updatesAreDetected
  2522      * @see DatabaseMetaData#updatesAreDetected
  2515      */
  2523      */
  2519 
  2527 
  2520     /**
  2528     /**
  2521      * Indicates whether the current row has been inserted.  The value returned
  2529      * Indicates whether the current row has been inserted.  The value returned
  2522      * depends on whether or not the rowset can detect visible inserts.
  2530      * depends on whether or not the rowset can detect visible inserts.
  2523      *
  2531      *
  2524      * @return <code>true</code> if a row has been inserted and inserts are detected;
  2532      * @return {@code true} if a row has been inserted and inserts are detected;
  2525      *         <code>false</code> otherwise
  2533      *         {@code false} otherwise
  2526      * @throws SQLException if the cursor is on the insert row or not
  2534      * @throws SQLException if the cursor is on the insert row or not
  2527      *            not on a valid row
  2535      *            not on a valid row
  2528      *
  2536      *
  2529      * @see DatabaseMetaData#insertsAreDetected
  2537      * @see DatabaseMetaData#insertsAreDetected
  2530      */
  2538      */
  2534 
  2542 
  2535     /**
  2543     /**
  2536      * Indicates whether the current row has been deleted.  A deleted row
  2544      * Indicates whether the current row has been deleted.  A deleted row
  2537      * may leave a visible "hole" in a rowset.  This method can be used to
  2545      * may leave a visible "hole" in a rowset.  This method can be used to
  2538      * detect such holes if the rowset can detect deletions. This method
  2546      * detect such holes if the rowset can detect deletions. This method
  2539      * will always return <code>false</code> if this rowset cannot detect
  2547      * will always return {@code false} if this rowset cannot detect
  2540      * deletions.
  2548      * deletions.
  2541      *
  2549      *
  2542      * @return <code>true</code> if (1)the current row is blank, indicating that
  2550      * @return {@code true} if (1)the current row is blank, indicating that
  2543      *         the row has been deleted, and (2)deletions are detected;
  2551      *         the row has been deleted, and (2)deletions are detected;
  2544      *         <code>false</code> otherwise
  2552      *         {@code false} otherwise
  2545      * @throws SQLException if the cursor is on a valid row in this rowset
  2553      * @throws SQLException if the cursor is on a valid row in this rowset
  2546      * @see DatabaseMetaData#deletesAreDetected
  2554      * @see DatabaseMetaData#deletesAreDetected
  2547      */
  2555      */
  2548     public boolean rowDeleted() throws SQLException {
  2556     public boolean rowDeleted() throws SQLException {
  2549         throw new UnsupportedOperationException();
  2557         throw new UnsupportedOperationException();
  2550     }
  2558     }
  2551 
  2559 
  2552     /**
  2560     /**
  2553      * Sets the designated nullable column in the current row or the
  2561      * Sets the designated nullable column in the current row or the
  2554      * insert row of this <code>CachedRowSetImpl</code> object with
  2562      * insert row of this {@code CachedRowSetImpl} object with
  2555      * <code>null</code> value.
  2563      * {@code null} value.
  2556      * <P>
  2564      * <P>
  2557      * This method updates a column value in the current row or the insert
  2565      * This method updates a column value in the current row or the insert
  2558      * row of this rowset; however, another method must be called to complete
  2566      * row of this rowset; however, another method must be called to complete
  2559      * the update process. If the cursor is on a row in the rowset, the
  2567      * the update process. If the cursor is on a row in the rowset, the
  2560      * method {@link #updateRow} must be called to mark the row as updated
  2568      * method {@link #updateRow} must be called to mark the row as updated
  2563      * must be called to insert the new row into this rowset and to notify
  2571      * must be called to insert the new row into this rowset and to notify
  2564      * listeners that a row has changed.
  2572      * listeners that a row has changed.
  2565      * <P>
  2573      * <P>
  2566      * In order to propagate updates in this rowset to the underlying
  2574      * In order to propagate updates in this rowset to the underlying
  2567      * data source, an application must call the method {@link #acceptChanges}
  2575      * data source, an application must call the method {@link #acceptChanges}
  2568      * after it calls either <code>updateRow</code> or <code>insertRow</code>.
  2576      * after it calls either {@code updateRow} or {@code insertRow}.
  2569      *
  2577      *
  2570      * @param columnIndex the first column is <code>1</code>, the second
  2578      * @param columnIndex the first column is {@code 1}, the second
  2571      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2579      *        is {@code 2}, and so on; must be {@code 1} or larger
  2572      *        and equal to or less than the number of columns in this rowset
  2580      *        and equal to or less than the number of columns in this rowset
  2573      * @throws SQLException if (1) the given column index is out of bounds,
  2581      * @throws SQLException if (1) the given column index is out of bounds,
  2574      *            (2) the cursor is not on one of this rowset's rows or its
  2582      *            (2) the cursor is not on one of this rowset's rows or its
  2575      *            insert row, or (3) this rowset is
  2583      *            insert row, or (3) this rowset is
  2576      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  2584      *            {@code ResultSet.CONCUR_READ_ONLY}
  2577      */
  2585      */
  2578     public void updateNull(int columnIndex) throws SQLException {
  2586     public void updateNull(int columnIndex) throws SQLException {
  2579         throw new UnsupportedOperationException();
  2587         throw new UnsupportedOperationException();
  2580     }
  2588     }
  2581 
  2589 
  2582     /**
  2590     /**
  2583      * Sets the designated column in either the current row or the insert
  2591      * Sets the designated column in either the current row or the insert
  2584      * row of this <code>CachedRowSetImpl</code> object with the given
  2592      * row of this {@code CachedRowSetImpl} object with the given
  2585      * <code>boolean</code> value.
  2593      * {@code boolean} value.
  2586      * <P>
  2594      * <P>
  2587      * This method updates a column value in the current row or the insert
  2595      * This method updates a column value in the current row or the insert
  2588      * row of this rowset, but it does not update the database.
  2596      * row of this rowset, but it does not update the database.
  2589      * If the cursor is on a row in the rowset, the
  2597      * If the cursor is on a row in the rowset, the
  2590      * method {@link #updateRow} must be called to update the database.
  2598      * method {@link #updateRow} must be called to update the database.
  2591      * If the cursor is on the insert row, the method {@link #insertRow}
  2599      * If the cursor is on the insert row, the method {@link #insertRow}
  2592      * must be called, which will insert the new row into both this rowset
  2600      * must be called, which will insert the new row into both this rowset
  2593      * and the database. Both of these methods must be called before the
  2601      * and the database. Both of these methods must be called before the
  2594      * cursor moves to another row.
  2602      * cursor moves to another row.
  2595      *
  2603      *
  2596      * @param columnIndex the first column is <code>1</code>, the second
  2604      * @param columnIndex the first column is {@code 1}, the second
  2597      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2605      *        is {@code 2}, and so on; must be {@code 1} or larger
  2598      *        and equal to or less than the number of columns in this rowset
  2606      *        and equal to or less than the number of columns in this rowset
  2599      * @param x the new column value
  2607      * @param x the new column value
  2600      * @throws SQLException if (1) the given column index is out of bounds,
  2608      * @throws SQLException if (1) the given column index is out of bounds,
  2601      *            (2) the cursor is not on one of this rowset's rows or its
  2609      *            (2) the cursor is not on one of this rowset's rows or its
  2602      *            insert row, or (3) this rowset is
  2610      *            insert row, or (3) this rowset is
  2603      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  2611      *            {@code ResultSet.CONCUR_READ_ONLY}
  2604      */
  2612      */
  2605     public void updateBoolean(int columnIndex, boolean x) throws SQLException {
  2613     public void updateBoolean(int columnIndex, boolean x) throws SQLException {
  2606         throw new UnsupportedOperationException();
  2614         throw new UnsupportedOperationException();
  2607     }
  2615     }
  2608 
  2616 
  2609     /**
  2617     /**
  2610      * Sets the designated column in either the current row or the insert
  2618      * Sets the designated column in either the current row or the insert
  2611      * row of this <code>CachedRowSetImpl</code> object with the given
  2619      * row of this {@code CachedRowSetImpl} object with the given
  2612      * <code>byte</code> value.
  2620      * {@code byte} value.
  2613      * <P>
  2621      * <P>
  2614      * This method updates a column value in the current row or the insert
  2622      * This method updates a column value in the current row or the insert
  2615      * row of this rowset, but it does not update the database.
  2623      * row of this rowset, but it does not update the database.
  2616      * If the cursor is on a row in the rowset, the
  2624      * If the cursor is on a row in the rowset, the
  2617      * method {@link #updateRow} must be called to update the database.
  2625      * method {@link #updateRow} must be called to update the database.
  2618      * If the cursor is on the insert row, the method {@link #insertRow}
  2626      * If the cursor is on the insert row, the method {@link #insertRow}
  2619      * must be called, which will insert the new row into both this rowset
  2627      * must be called, which will insert the new row into both this rowset
  2620      * and the database. Both of these methods must be called before the
  2628      * and the database. Both of these methods must be called before the
  2621      * cursor moves to another row.
  2629      * cursor moves to another row.
  2622      *
  2630      *
  2623      * @param columnIndex the first column is <code>1</code>, the second
  2631      * @param columnIndex the first column is {@code 1}, the second
  2624      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2632      *        is {@code 2}, and so on; must be {@code 1} or larger
  2625      *        and equal to or less than the number of columns in this rowset
  2633      *        and equal to or less than the number of columns in this rowset
  2626      * @param x the new column value
  2634      * @param x the new column value
  2627      * @throws SQLException if (1) the given column index is out of bounds,
  2635      * @throws SQLException if (1) the given column index is out of bounds,
  2628      *            (2) the cursor is not on one of this rowset's rows or its
  2636      *            (2) the cursor is not on one of this rowset's rows or its
  2629      *            insert row, or (3) this rowset is
  2637      *            insert row, or (3) this rowset is
  2630      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  2638      *            {@code ResultSet.CONCUR_READ_ONLY}
  2631      */
  2639      */
  2632     public void updateByte(int columnIndex, byte x) throws SQLException {
  2640     public void updateByte(int columnIndex, byte x) throws SQLException {
  2633         throw new UnsupportedOperationException();
  2641         throw new UnsupportedOperationException();
  2634     }
  2642     }
  2635 
  2643 
  2636     /**
  2644     /**
  2637      * Sets the designated column in either the current row or the insert
  2645      * Sets the designated column in either the current row or the insert
  2638      * row of this <code>CachedRowSetImpl</code> object with the given
  2646      * row of this {@code CachedRowSetImpl} object with the given
  2639      * <code>short</code> value.
  2647      * {@code short} value.
  2640      * <P>
  2648      * <P>
  2641      * This method updates a column value in the current row or the insert
  2649      * This method updates a column value in the current row or the insert
  2642      * row of this rowset, but it does not update the database.
  2650      * row of this rowset, but it does not update the database.
  2643      * If the cursor is on a row in the rowset, the
  2651      * If the cursor is on a row in the rowset, the
  2644      * method {@link #updateRow} must be called to update the database.
  2652      * method {@link #updateRow} must be called to update the database.
  2645      * If the cursor is on the insert row, the method {@link #insertRow}
  2653      * If the cursor is on the insert row, the method {@link #insertRow}
  2646      * must be called, which will insert the new row into both this rowset
  2654      * must be called, which will insert the new row into both this rowset
  2647      * and the database. Both of these methods must be called before the
  2655      * and the database. Both of these methods must be called before the
  2648      * cursor moves to another row.
  2656      * cursor moves to another row.
  2649      *
  2657      *
  2650      * @param columnIndex the first column is <code>1</code>, the second
  2658      * @param columnIndex the first column is {@code 1}, the second
  2651      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2659      *        is {@code 2}, and so on; must be {@code 1} or larger
  2652      *        and equal to or less than the number of columns in this rowset
  2660      *        and equal to or less than the number of columns in this rowset
  2653      * @param x the new column value
  2661      * @param x the new column value
  2654      * @throws SQLException if (1) the given column index is out of bounds,
  2662      * @throws SQLException if (1) the given column index is out of bounds,
  2655      *            (2) the cursor is not on one of this rowset's rows or its
  2663      *            (2) the cursor is not on one of this rowset's rows or its
  2656      *            insert row, or (3) this rowset is
  2664      *            insert row, or (3) this rowset is
  2657      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  2665      *            {@code ResultSet.CONCUR_READ_ONLY}
  2658      */
  2666      */
  2659     public void updateShort(int columnIndex, short x) throws SQLException {
  2667     public void updateShort(int columnIndex, short x) throws SQLException {
  2660         throw new UnsupportedOperationException();
  2668         throw new UnsupportedOperationException();
  2661     }
  2669     }
  2662 
  2670 
  2663     /**
  2671     /**
  2664      * Sets the designated column in either the current row or the insert
  2672      * Sets the designated column in either the current row or the insert
  2665      * row of this <code>CachedRowSetImpl</code> object with the given
  2673      * row of this {@code CachedRowSetImpl} object with the given
  2666      * <code>int</code> value.
  2674      * {@code int} value.
  2667      * <P>
  2675      * <P>
  2668      * This method updates a column value in the current row or the insert
  2676      * This method updates a column value in the current row or the insert
  2669      * row of this rowset, but it does not update the database.
  2677      * row of this rowset, but it does not update the database.
  2670      * If the cursor is on a row in the rowset, the
  2678      * If the cursor is on a row in the rowset, the
  2671      * method {@link #updateRow} must be called to update the database.
  2679      * method {@link #updateRow} must be called to update the database.
  2672      * If the cursor is on the insert row, the method {@link #insertRow}
  2680      * If the cursor is on the insert row, the method {@link #insertRow}
  2673      * must be called, which will insert the new row into both this rowset
  2681      * must be called, which will insert the new row into both this rowset
  2674      * and the database. Both of these methods must be called before the
  2682      * and the database. Both of these methods must be called before the
  2675      * cursor moves to another row.
  2683      * cursor moves to another row.
  2676      *
  2684      *
  2677      * @param columnIndex the first column is <code>1</code>, the second
  2685      * @param columnIndex the first column is {@code 1}, the second
  2678      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2686      *        is {@code 2}, and so on; must be {@code 1} or larger
  2679      *        and equal to or less than the number of columns in this rowset
  2687      *        and equal to or less than the number of columns in this rowset
  2680      * @param x the new column value
  2688      * @param x the new column value
  2681      * @throws SQLException if (1) the given column index is out of bounds,
  2689      * @throws SQLException if (1) the given column index is out of bounds,
  2682      *            (2) the cursor is not on one of this rowset's rows or its
  2690      *            (2) the cursor is not on one of this rowset's rows or its
  2683      *            insert row, or (3) this rowset is
  2691      *            insert row, or (3) this rowset is
  2684      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  2692      *            {@code ResultSet.CONCUR_READ_ONLY}
  2685      */
  2693      */
  2686     public void updateInt(int columnIndex, int x) throws SQLException {
  2694     public void updateInt(int columnIndex, int x) throws SQLException {
  2687         throw new UnsupportedOperationException();
  2695         throw new UnsupportedOperationException();
  2688     }
  2696     }
  2689 
  2697 
  2690     /**
  2698     /**
  2691      * Sets the designated column in either the current row or the insert
  2699      * Sets the designated column in either the current row or the insert
  2692      * row of this <code>CachedRowSetImpl</code> object with the given
  2700      * row of this {@code CachedRowSetImpl} object with the given
  2693      * <code>long</code> value.
  2701      * {@code long} value.
  2694      * <P>
  2702      * <P>
  2695      * This method updates a column value in the current row or the insert
  2703      * This method updates a column value in the current row or the insert
  2696      * row of this rowset, but it does not update the database.
  2704      * row of this rowset, but it does not update the database.
  2697      * If the cursor is on a row in the rowset, the
  2705      * If the cursor is on a row in the rowset, the
  2698      * method {@link #updateRow} must be called to update the database.
  2706      * method {@link #updateRow} must be called to update the database.
  2699      * If the cursor is on the insert row, the method {@link #insertRow}
  2707      * If the cursor is on the insert row, the method {@link #insertRow}
  2700      * must be called, which will insert the new row into both this rowset
  2708      * must be called, which will insert the new row into both this rowset
  2701      * and the database. Both of these methods must be called before the
  2709      * and the database. Both of these methods must be called before the
  2702      * cursor moves to another row.
  2710      * cursor moves to another row.
  2703      *
  2711      *
  2704      * @param columnIndex the first column is <code>1</code>, the second
  2712      * @param columnIndex the first column is {@code 1}, the second
  2705      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2713      *        is {@code 2}, and so on; must be {@code 1} or larger
  2706      *        and equal to or less than the number of columns in this rowset
  2714      *        and equal to or less than the number of columns in this rowset
  2707      * @param x the new column value
  2715      * @param x the new column value
  2708      * @throws SQLException if (1) the given column index is out of bounds,
  2716      * @throws SQLException if (1) the given column index is out of bounds,
  2709      *            (2) the cursor is not on one of this rowset's rows or its
  2717      *            (2) the cursor is not on one of this rowset's rows or its
  2710      *            insert row, or (3) this rowset is
  2718      *            insert row, or (3) this rowset is
  2711      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  2719      *            {@code ResultSet.CONCUR_READ_ONLY}
  2712      */
  2720      */
  2713     public void updateLong(int columnIndex, long x) throws SQLException {
  2721     public void updateLong(int columnIndex, long x) throws SQLException {
  2714        throw new UnsupportedOperationException();
  2722        throw new UnsupportedOperationException();
  2715 
  2723 
  2716     }
  2724     }
  2717 
  2725 
  2718     /**
  2726     /**
  2719      * Sets the designated column in either the current row or the insert
  2727      * Sets the designated column in either the current row or the insert
  2720      * row of this <code>CachedRowSetImpl</code> object with the given
  2728      * row of this {@code CachedRowSetImpl} object with the given
  2721      * <code>float</code> value.
  2729      * {@code float} value.
  2722      * <P>
  2730      * <P>
  2723      * This method updates a column value in the current row or the insert
  2731      * This method updates a column value in the current row or the insert
  2724      * row of this rowset, but it does not update the database.
  2732      * row of this rowset, but it does not update the database.
  2725      * If the cursor is on a row in the rowset, the
  2733      * If the cursor is on a row in the rowset, the
  2726      * method {@link #updateRow} must be called to update the database.
  2734      * method {@link #updateRow} must be called to update the database.
  2727      * If the cursor is on the insert row, the method {@link #insertRow}
  2735      * If the cursor is on the insert row, the method {@link #insertRow}
  2728      * must be called, which will insert the new row into both this rowset
  2736      * must be called, which will insert the new row into both this rowset
  2729      * and the database. Both of these methods must be called before the
  2737      * and the database. Both of these methods must be called before the
  2730      * cursor moves to another row.
  2738      * cursor moves to another row.
  2731      *
  2739      *
  2732      * @param columnIndex the first column is <code>1</code>, the second
  2740      * @param columnIndex the first column is {@code 1}, the second
  2733      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2741      *        is {@code 2}, and so on; must be {@code 1} or larger
  2734      *        and equal to or less than the number of columns in this rowset
  2742      *        and equal to or less than the number of columns in this rowset
  2735      * @param x the new column value
  2743      * @param x the new column value
  2736      * @throws SQLException if (1) the given column index is out of bounds,
  2744      * @throws SQLException if (1) the given column index is out of bounds,
  2737      *            (2) the cursor is not on one of this rowset's rows or its
  2745      *            (2) the cursor is not on one of this rowset's rows or its
  2738      *            insert row, or (3) this rowset is
  2746      *            insert row, or (3) this rowset is
  2739      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  2747      *            {@code ResultSet.CONCUR_READ_ONLY}
  2740      */
  2748      */
  2741     public void updateFloat(int columnIndex, float x) throws SQLException {
  2749     public void updateFloat(int columnIndex, float x) throws SQLException {
  2742         throw new UnsupportedOperationException();
  2750         throw new UnsupportedOperationException();
  2743     }
  2751     }
  2744 
  2752 
  2745     /**
  2753     /**
  2746      * Sets the designated column in either the current row or the insert
  2754      * Sets the designated column in either the current row or the insert
  2747      * row of this <code>CachedRowSetImpl</code> object with the given
  2755      * row of this {@code CachedRowSetImpl} object with the given
  2748      * <code>double</code> value.
  2756      * {@code double} value.
  2749      *
  2757      *
  2750      * This method updates a column value in either the current row or
  2758      * This method updates a column value in either the current row or
  2751      * the insert row of this rowset, but it does not update the
  2759      * the insert row of this rowset, but it does not update the
  2752      * database.  If the cursor is on a row in the rowset, the
  2760      * database.  If the cursor is on a row in the rowset, the
  2753      * method {@link #updateRow} must be called to update the database.
  2761      * method {@link #updateRow} must be called to update the database.
  2754      * If the cursor is on the insert row, the method {@link #insertRow}
  2762      * If the cursor is on the insert row, the method {@link #insertRow}
  2755      * must be called, which will insert the new row into both this rowset
  2763      * must be called, which will insert the new row into both this rowset
  2756      * and the database. Both of these methods must be called before the
  2764      * and the database. Both of these methods must be called before the
  2757      * cursor moves to another row.
  2765      * cursor moves to another row.
  2758      *
  2766      *
  2759      * @param columnIndex the first column is <code>1</code>, the second
  2767      * @param columnIndex the first column is {@code 1}, the second
  2760      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2768      *        is {@code 2}, and so on; must be {@code 1} or larger
  2761      *        and equal to or less than the number of columns in this rowset
  2769      *        and equal to or less than the number of columns in this rowset
  2762      * @param x the new column value
  2770      * @param x the new column value
  2763      * @throws SQLException if (1) the given column index is out of bounds,
  2771      * @throws SQLException if (1) the given column index is out of bounds,
  2764      *            (2) the cursor is not on one of this rowset's rows or its
  2772      *            (2) the cursor is not on one of this rowset's rows or its
  2765      *            insert row, or (3) this rowset is
  2773      *            insert row, or (3) this rowset is
  2766      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  2774      *            {@code ResultSet.CONCUR_READ_ONLY}
  2767      */
  2775      */
  2768     public void updateDouble(int columnIndex, double x) throws SQLException {
  2776     public void updateDouble(int columnIndex, double x) throws SQLException {
  2769         throw new UnsupportedOperationException();
  2777         throw new UnsupportedOperationException();
  2770     }
  2778     }
  2771 
  2779 
  2772     /**
  2780     /**
  2773      * Sets the designated column in either the current row or the insert
  2781      * Sets the designated column in either the current row or the insert
  2774      * row of this <code>CachedRowSetImpl</code> object with the given
  2782      * row of this {@code CachedRowSetImpl} object with the given
  2775      * <code>java.math.BigDecimal</code> object.
  2783      * {@code java.math.BigDecimal} object.
  2776      * <P>
  2784      * <P>
  2777      * This method updates a column value in the current row or the insert
  2785      * This method updates a column value in the current row or the insert
  2778      * row of this rowset, but it does not update the database.
  2786      * row of this rowset, but it does not update the database.
  2779      * If the cursor is on a row in the rowset, the
  2787      * If the cursor is on a row in the rowset, the
  2780      * method {@link #updateRow} must be called to update the database.
  2788      * method {@link #updateRow} must be called to update the database.
  2781      * If the cursor is on the insert row, the method {@link #insertRow}
  2789      * If the cursor is on the insert row, the method {@link #insertRow}
  2782      * must be called, which will insert the new row into both this rowset
  2790      * must be called, which will insert the new row into both this rowset
  2783      * and the database. Both of these methods must be called before the
  2791      * and the database. Both of these methods must be called before the
  2784      * cursor moves to another row.
  2792      * cursor moves to another row.
  2785      *
  2793      *
  2786      * @param columnIndex the first column is <code>1</code>, the second
  2794      * @param columnIndex the first column is {@code 1}, the second
  2787      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2795      *        is {@code 2}, and so on; must be {@code 1} or larger
  2788      *        and equal to or less than the number of columns in this rowset
  2796      *        and equal to or less than the number of columns in this rowset
  2789      * @param x the new column value
  2797      * @param x the new column value
  2790      * @throws SQLException if (1) the given column index is out of bounds,
  2798      * @throws SQLException if (1) the given column index is out of bounds,
  2791      *            (2) the cursor is not on one of this rowset's rows or its
  2799      *            (2) the cursor is not on one of this rowset's rows or its
  2792      *            insert row, or (3) this rowset is
  2800      *            insert row, or (3) this rowset is
  2793      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  2801      *            {@code ResultSet.CONCUR_READ_ONLY}
  2794      */
  2802      */
  2795     public void updateBigDecimal(int columnIndex, BigDecimal x) throws SQLException {
  2803     public void updateBigDecimal(int columnIndex, BigDecimal x) throws SQLException {
  2796         throw new UnsupportedOperationException();
  2804         throw new UnsupportedOperationException();
  2797     }
  2805     }
  2798 
  2806 
  2799     /**
  2807     /**
  2800      * Sets the designated column in either the current row or the insert
  2808      * Sets the designated column in either the current row or the insert
  2801      * row of this <code>CachedRowSetImpl</code> object with the given
  2809      * row of this {@code CachedRowSetImpl} object with the given
  2802      * <code>String</code> object.
  2810      * {@code String} object.
  2803      * <P>
  2811      * <P>
  2804      * This method updates a column value in either the current row or
  2812      * This method updates a column value in either the current row or
  2805      * the insert row of this rowset, but it does not update the
  2813      * the insert row of this rowset, but it does not update the
  2806      * database.  If the cursor is on a row in the rowset, the
  2814      * database.  If the cursor is on a row in the rowset, the
  2807      * method {@link #updateRow} must be called to mark the row as updated.
  2815      * method {@link #updateRow} must be called to mark the row as updated.
  2808      * If the cursor is on the insert row, the method {@link #insertRow}
  2816      * If the cursor is on the insert row, the method {@link #insertRow}
  2809      * must be called to insert the new row into this rowset and mark it
  2817      * must be called to insert the new row into this rowset and mark it
  2810      * as inserted. Both of these methods must be called before the
  2818      * as inserted. Both of these methods must be called before the
  2811      * cursor moves to another row.
  2819      * cursor moves to another row.
  2812      * <P>
  2820      * <P>
  2813      * The method <code>acceptChanges</code> must be called if the
  2821      * The method {@code acceptChanges} must be called if the
  2814      * updated values are to be written back to the underlying database.
  2822      * updated values are to be written back to the underlying database.
  2815      *
  2823      *
  2816      * @param columnIndex the first column is <code>1</code>, the second
  2824      * @param columnIndex the first column is {@code 1}, the second
  2817      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2825      *        is {@code 2}, and so on; must be {@code 1} or larger
  2818      *        and equal to or less than the number of columns in this rowset
  2826      *        and equal to or less than the number of columns in this rowset
  2819      * @param x the new column value
  2827      * @param x the new column value
  2820      * @throws SQLException if (1) the given column index is out of bounds,
  2828      * @throws SQLException if (1) the given column index is out of bounds,
  2821      *            (2) the cursor is not on one of this rowset's rows or its
  2829      *            (2) the cursor is not on one of this rowset's rows or its
  2822      *            insert row, or (3) this rowset is
  2830      *            insert row, or (3) this rowset is
  2823      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  2831      *            {@code ResultSet.CONCUR_READ_ONLY}
  2824      */
  2832      */
  2825     public void updateString(int columnIndex, String x) throws SQLException {
  2833     public void updateString(int columnIndex, String x) throws SQLException {
  2826         throw new UnsupportedOperationException();
  2834         throw new UnsupportedOperationException();
  2827     }
  2835     }
  2828 
  2836 
  2829     /**
  2837     /**
  2830      * Sets the designated column in either the current row or the insert
  2838      * Sets the designated column in either the current row or the insert
  2831      * row of this <code>CachedRowSetImpl</code> object with the given
  2839      * row of this {@code CachedRowSetImpl} object with the given
  2832      * <code>byte</code> array.
  2840      * {@code byte} array.
  2833      *
  2841      *
  2834      * This method updates a column value in either the current row or
  2842      * This method updates a column value in either the current row or
  2835      * the insert row of this rowset, but it does not update the
  2843      * the insert row of this rowset, but it does not update the
  2836      * database.  If the cursor is on a row in the rowset, the
  2844      * database.  If the cursor is on a row in the rowset, the
  2837      * method {@link #updateRow} must be called to update the database.
  2845      * method {@link #updateRow} must be called to update the database.
  2838      * If the cursor is on the insert row, the method {@link #insertRow}
  2846      * If the cursor is on the insert row, the method {@link #insertRow}
  2839      * must be called, which will insert the new row into both this rowset
  2847      * must be called, which will insert the new row into both this rowset
  2840      * and the database. Both of these methods must be called before the
  2848      * and the database. Both of these methods must be called before the
  2841      * cursor moves to another row.
  2849      * cursor moves to another row.
  2842      *
  2850      *
  2843      * @param columnIndex the first column is <code>1</code>, the second
  2851      * @param columnIndex the first column is {@code 1}, the second
  2844      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2852      *        is {@code 2}, and so on; must be {@code 1} or larger
  2845      *        and equal to or less than the number of columns in this rowset
  2853      *        and equal to or less than the number of columns in this rowset
  2846      * @param x the new column value
  2854      * @param x the new column value
  2847      * @throws SQLException if (1) the given column index is out of bounds,
  2855      * @throws SQLException if (1) the given column index is out of bounds,
  2848      *            (2) the cursor is not on one of this rowset's rows or its
  2856      *            (2) the cursor is not on one of this rowset's rows or its
  2849      *            insert row, or (3) this rowset is
  2857      *            insert row, or (3) this rowset is
  2850      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  2858      *            {@code ResultSet.CONCUR_READ_ONLY}
  2851      */
  2859      */
  2852     public void updateBytes(int columnIndex, byte x[]) throws SQLException {
  2860     public void updateBytes(int columnIndex, byte x[]) throws SQLException {
  2853         throw new UnsupportedOperationException();
  2861         throw new UnsupportedOperationException();
  2854     }
  2862     }
  2855 
  2863 
  2856     /**
  2864     /**
  2857      * Sets the designated column in either the current row or the insert
  2865      * Sets the designated column in either the current row or the insert
  2858      * row of this <code>CachedRowSetImpl</code> object with the given
  2866      * row of this {@code CachedRowSetImpl} object with the given
  2859      * <code>Date</code> object.
  2867      * {@code Date} object.
  2860      *
  2868      *
  2861      * This method updates a column value in either the current row or
  2869      * This method updates a column value in either the current row or
  2862      * the insert row of this rowset, but it does not update the
  2870      * the insert row of this rowset, but it does not update the
  2863      * database.  If the cursor is on a row in the rowset, the
  2871      * database.  If the cursor is on a row in the rowset, the
  2864      * method {@link #updateRow} must be called to update the database.
  2872      * method {@link #updateRow} must be called to update the database.
  2865      * If the cursor is on the insert row, the method {@link #insertRow}
  2873      * If the cursor is on the insert row, the method {@link #insertRow}
  2866      * must be called, which will insert the new row into both this rowset
  2874      * must be called, which will insert the new row into both this rowset
  2867      * and the database. Both of these methods must be called before the
  2875      * and the database. Both of these methods must be called before the
  2868      * cursor moves to another row.
  2876      * cursor moves to another row.
  2869      *
  2877      *
  2870      * @param columnIndex the first column is <code>1</code>, the second
  2878      * @param columnIndex the first column is {@code 1}, the second
  2871      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2879      *        is {@code 2}, and so on; must be {@code 1} or larger
  2872      *        and equal to or less than the number of columns in this rowset
  2880      *        and equal to or less than the number of columns in this rowset
  2873      * @param x the new column value
  2881      * @param x the new column value
  2874      * @throws SQLException if (1) the given column index is out of bounds,
  2882      * @throws SQLException if (1) the given column index is out of bounds,
  2875      *            (2) the cursor is not on one of this rowset's rows or its
  2883      *            (2) the cursor is not on one of this rowset's rows or its
  2876      *            insert row, (3) the type of the designated column is not
  2884      *            insert row, (3) the type of the designated column is not
  2877      *            an SQL <code>DATE</code> or <code>TIMESTAMP</code>, or
  2885      *            an SQL {@code DATE} or {@code TIMESTAMP}, or
  2878      *            (4) this rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  2886      *            (4) this rowset is {@code ResultSet.CONCUR_READ_ONLY}
  2879      */
  2887      */
  2880     public void updateDate(int columnIndex, java.sql.Date x) throws SQLException {
  2888     public void updateDate(int columnIndex, java.sql.Date x) throws SQLException {
  2881         throw new UnsupportedOperationException();
  2889         throw new UnsupportedOperationException();
  2882     }
  2890     }
  2883 
  2891 
  2884     /**
  2892     /**
  2885      * Sets the designated column in either the current row or the insert
  2893      * Sets the designated column in either the current row or the insert
  2886      * row of this <code>CachedRowSetImpl</code> object with the given
  2894      * row of this {@code CachedRowSetImpl} object with the given
  2887      * <code>Time</code> object.
  2895      * {@code Time} object.
  2888      *
  2896      *
  2889      * This method updates a column value in either the current row or
  2897      * This method updates a column value in either the current row or
  2890      * the insert row of this rowset, but it does not update the
  2898      * the insert row of this rowset, but it does not update the
  2891      * database.  If the cursor is on a row in the rowset, the
  2899      * database.  If the cursor is on a row in the rowset, the
  2892      * method {@link #updateRow} must be called to update the database.
  2900      * method {@link #updateRow} must be called to update the database.
  2893      * If the cursor is on the insert row, the method {@link #insertRow}
  2901      * If the cursor is on the insert row, the method {@link #insertRow}
  2894      * must be called, which will insert the new row into both this rowset
  2902      * must be called, which will insert the new row into both this rowset
  2895      * and the database. Both of these methods must be called before the
  2903      * and the database. Both of these methods must be called before the
  2896      * cursor moves to another row.
  2904      * cursor moves to another row.
  2897      *
  2905      *
  2898      * @param columnIndex the first column is <code>1</code>, the second
  2906      * @param columnIndex the first column is {@code 1}, the second
  2899      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2907      *        is {@code 2}, and so on; must be {@code 1} or larger
  2900      *        and equal to or less than the number of columns in this rowset
  2908      *        and equal to or less than the number of columns in this rowset
  2901      * @param x the new column value
  2909      * @param x the new column value
  2902      * @throws SQLException if (1) the given column index is out of bounds,
  2910      * @throws SQLException if (1) the given column index is out of bounds,
  2903      *            (2) the cursor is not on one of this rowset's rows or its
  2911      *            (2) the cursor is not on one of this rowset's rows or its
  2904      *            insert row, (3) the type of the designated column is not
  2912      *            insert row, (3) the type of the designated column is not
  2905      *            an SQL <code>TIME</code> or <code>TIMESTAMP</code>, or
  2913      *            an SQL {@code TIME} or {@code TIMESTAMP}, or
  2906      *            (4) this rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  2914      *            (4) this rowset is {@code ResultSet.CONCUR_READ_ONLY}
  2907      */
  2915      */
  2908     public void updateTime(int columnIndex, java.sql.Time x) throws SQLException {
  2916     public void updateTime(int columnIndex, java.sql.Time x) throws SQLException {
  2909        throw new UnsupportedOperationException();
  2917        throw new UnsupportedOperationException();
  2910     }
  2918     }
  2911 
  2919 
  2912     /**
  2920     /**
  2913      * Sets the designated column in either the current row or the insert
  2921      * Sets the designated column in either the current row or the insert
  2914      * row of this <code>CachedRowSetImpl</code> object with the given
  2922      * row of this {@code CachedRowSetImpl} object with the given
  2915      * <code>Timestamp</code> object.
  2923      * {@code Timestamp} object.
  2916      *
  2924      *
  2917      * This method updates a column value in either the current row or
  2925      * This method updates a column value in either the current row or
  2918      * the insert row of this rowset, but it does not update the
  2926      * the insert row of this rowset, but it does not update the
  2919      * database.  If the cursor is on a row in the rowset, the
  2927      * database.  If the cursor is on a row in the rowset, the
  2920      * method {@link #updateRow} must be called to update the database.
  2928      * method {@link #updateRow} must be called to update the database.
  2921      * If the cursor is on the insert row, the method {@link #insertRow}
  2929      * If the cursor is on the insert row, the method {@link #insertRow}
  2922      * must be called, which will insert the new row into both this rowset
  2930      * must be called, which will insert the new row into both this rowset
  2923      * and the database. Both of these methods must be called before the
  2931      * and the database. Both of these methods must be called before the
  2924      * cursor moves to another row.
  2932      * cursor moves to another row.
  2925      *
  2933      *
  2926      * @param columnIndex the first column is <code>1</code>, the second
  2934      * @param columnIndex the first column is {@code 1}, the second
  2927      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2935      *        is {@code 2}, and so on; must be {@code 1} or larger
  2928      *        and equal to or less than the number of columns in this rowset
  2936      *        and equal to or less than the number of columns in this rowset
  2929      * @param x the new column value
  2937      * @param x the new column value
  2930      * @throws SQLException if (1) the given column index is out of bounds,
  2938      * @throws SQLException if (1) the given column index is out of bounds,
  2931      *            (2) the cursor is not on one of this rowset's rows or its
  2939      *            (2) the cursor is not on one of this rowset's rows or its
  2932      *            insert row, (3) the type of the designated column is not
  2940      *            insert row, (3) the type of the designated column is not
  2933      *            an SQL <code>DATE</code>, <code>TIME</code>, or
  2941      *            an SQL {@code DATE}, {@code TIME}, or
  2934      *            <code>TIMESTAMP</code>, or (4) this rowset is
  2942      *            {@code TIMESTAMP}, or (4) this rowset is
  2935      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  2943      *            {@code ResultSet.CONCUR_READ_ONLY}
  2936      */
  2944      */
  2937     public void updateTimestamp(int columnIndex, java.sql.Timestamp x) throws SQLException {
  2945     public void updateTimestamp(int columnIndex, java.sql.Timestamp x) throws SQLException {
  2938         throw new UnsupportedOperationException();
  2946         throw new UnsupportedOperationException();
  2939     }
  2947     }
  2940 
  2948 
  2941     /**
  2949     /**
  2942      * Sets the designated column in either the current row or the insert
  2950      * Sets the designated column in either the current row or the insert
  2943      * row of this <code>CachedRowSetImpl</code> object with the given
  2951      * row of this {@code CachedRowSetImpl} object with the given
  2944      * ASCII stream value.
  2952      * ASCII stream value.
  2945      * <P>
  2953      * <P>
  2946      * This method updates a column value in either the current row or
  2954      * This method updates a column value in either the current row or
  2947      * the insert row of this rowset, but it does not update the
  2955      * the insert row of this rowset, but it does not update the
  2948      * database.  If the cursor is on a row in the rowset, the
  2956      * database.  If the cursor is on a row in the rowset, the
  2950      * If the cursor is on the insert row, the method {@link #insertRow}
  2958      * If the cursor is on the insert row, the method {@link #insertRow}
  2951      * must be called, which will insert the new row into both this rowset
  2959      * must be called, which will insert the new row into both this rowset
  2952      * and the database. Both of these methods must be called before the
  2960      * and the database. Both of these methods must be called before the
  2953      * cursor moves to another row.
  2961      * cursor moves to another row.
  2954      *
  2962      *
  2955      * @param columnIndex the first column is <code>1</code>, the second
  2963      * @param columnIndex the first column is {@code 1}, the second
  2956      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2964      *        is {@code 2}, and so on; must be {@code 1} or larger
  2957      *        and equal to or less than the number of columns in this rowset
  2965      *        and equal to or less than the number of columns in this rowset
  2958      * @param x the new column value
  2966      * @param x the new column value
  2959      * @param length the number of one-byte ASCII characters in the stream
  2967      * @param length the number of one-byte ASCII characters in the stream
  2960      * @throws SQLException if this method is invoked
  2968      * @throws SQLException if this method is invoked
  2961      */
  2969      */
  2963         throw new UnsupportedOperationException();
  2971         throw new UnsupportedOperationException();
  2964     }
  2972     }
  2965 
  2973 
  2966     /**
  2974     /**
  2967      * Sets the designated column in either the current row or the insert
  2975      * Sets the designated column in either the current row or the insert
  2968      * row of this <code>CachedRowSetImpl</code> object with the given
  2976      * row of this {@code CachedRowSetImpl} object with the given
  2969      * <code>java.io.InputStream</code> object.
  2977      * {@code java.io.InputStream} object.
  2970      * <P>
  2978      * <P>
  2971      * This method updates a column value in either the current row or
  2979      * This method updates a column value in either the current row or
  2972      * the insert row of this rowset, but it does not update the
  2980      * the insert row of this rowset, but it does not update the
  2973      * database.  If the cursor is on a row in the rowset, the
  2981      * database.  If the cursor is on a row in the rowset, the
  2974      * method {@link #updateRow} must be called to update the database.
  2982      * method {@link #updateRow} must be called to update the database.
  2975      * If the cursor is on the insert row, the method {@link #insertRow}
  2983      * If the cursor is on the insert row, the method {@link #insertRow}
  2976      * must be called, which will insert the new row into both this rowset
  2984      * must be called, which will insert the new row into both this rowset
  2977      * and the database. Both of these methods must be called before the
  2985      * and the database. Both of these methods must be called before the
  2978      * cursor moves to another row.
  2986      * cursor moves to another row.
  2979      *
  2987      *
  2980      * @param columnIndex the first column is <code>1</code>, the second
  2988      * @param columnIndex the first column is {@code 1}, the second
  2981      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  2989      *        is {@code 2}, and so on; must be {@code 1} or larger
  2982      *        and equal to or less than the number of columns in this rowset
  2990      *        and equal to or less than the number of columns in this rowset
  2983      * @param x the new column value; must be a <code>java.io.InputStream</code>
  2991      * @param x the new column value; must be a {@code java.io.InputStream}
  2984      *          containing <code>BINARY</code>, <code>VARBINARY</code>, or
  2992      *          containing {@code BINARY}, {@code VARBINARY}, or
  2985      *          <code>LONGVARBINARY</code> data
  2993      *          {@code LONGVARBINARY} data
  2986      * @param length the length of the stream in bytes
  2994      * @param length the length of the stream in bytes
  2987      * @throws SQLException if (1) the given column index is out of bounds,
  2995      * @throws SQLException if (1) the given column index is out of bounds,
  2988      *            (2) the cursor is not on one of this rowset's rows or its
  2996      *            (2) the cursor is not on one of this rowset's rows or its
  2989      *            insert row, (3) the data in the stream is not binary, or
  2997      *            insert row, (3) the data in the stream is not binary, or
  2990      *            (4) this rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  2998      *            (4) this rowset is {@code ResultSet.CONCUR_READ_ONLY}
  2991      */
  2999      */
  2992     public void updateBinaryStream(int columnIndex, java.io.InputStream x,int length) throws SQLException {
  3000     public void updateBinaryStream(int columnIndex, java.io.InputStream x,int length) throws SQLException {
  2993         throw new UnsupportedOperationException();
  3001         throw new UnsupportedOperationException();
  2994     }
  3002     }
  2995 
  3003 
  2996     /**
  3004     /**
  2997      * Sets the designated column in either the current row or the insert
  3005      * Sets the designated column in either the current row or the insert
  2998      * row of this <code>CachedRowSetImpl</code> object with the given
  3006      * row of this {@code CachedRowSetImpl} object with the given
  2999      * <code>java.io.Reader</code> object.
  3007      * {@code java.io.Reader} object.
  3000      * <P>
  3008      * <P>
  3001      * This method updates a column value in either the current row or
  3009      * This method updates a column value in either the current row or
  3002      * the insert row of this rowset, but it does not update the
  3010      * the insert row of this rowset, but it does not update the
  3003      * database.  If the cursor is on a row in the rowset, the
  3011      * database.  If the cursor is on a row in the rowset, the
  3004      * method {@link #updateRow} must be called to update the database.
  3012      * method {@link #updateRow} must be called to update the database.
  3005      * If the cursor is on the insert row, the method {@link #insertRow}
  3013      * If the cursor is on the insert row, the method {@link #insertRow}
  3006      * must be called, which will insert the new row into both this rowset
  3014      * must be called, which will insert the new row into both this rowset
  3007      * and the database. Both of these methods must be called before the
  3015      * and the database. Both of these methods must be called before the
  3008      * cursor moves to another row.
  3016      * cursor moves to another row.
  3009      *
  3017      *
  3010      * @param columnIndex the first column is <code>1</code>, the second
  3018      * @param columnIndex the first column is {@code 1}, the second
  3011      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  3019      *        is {@code 2}, and so on; must be {@code 1} or larger
  3012      *        and equal to or less than the number of columns in this rowset
  3020      *        and equal to or less than the number of columns in this rowset
  3013      * @param x the new column value; must be a <code>java.io.Reader</code>
  3021      * @param x the new column value; must be a {@code java.io.Reader}
  3014      *          containing <code>BINARY</code>, <code>VARBINARY</code>,
  3022      *          containing {@code BINARY}, {@code VARBINARY},
  3015      *          <code>LONGVARBINARY</code>, <code>CHAR</code>, <code>VARCHAR</code>,
  3023      *          {@code LONGVARBINARY}, {@code CHAR}, {@code VARCHAR},
  3016      *          or <code>LONGVARCHAR</code> data
  3024      *          or {@code LONGVARCHAR} data
  3017      * @param length the length of the stream in characters
  3025      * @param length the length of the stream in characters
  3018      * @throws SQLException if (1) the given column index is out of bounds,
  3026      * @throws SQLException if (1) the given column index is out of bounds,
  3019      *            (2) the cursor is not on one of this rowset's rows or its
  3027      *            (2) the cursor is not on one of this rowset's rows or its
  3020      *            insert row, (3) the data in the stream is not a binary or
  3028      *            insert row, (3) the data in the stream is not a binary or
  3021      *            character type, or (4) this rowset is
  3029      *            character type, or (4) this rowset is
  3022      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  3030      *            {@code ResultSet.CONCUR_READ_ONLY}
  3023      */
  3031      */
  3024     public void updateCharacterStream(int columnIndex, java.io.Reader x, int length) throws SQLException {
  3032     public void updateCharacterStream(int columnIndex, java.io.Reader x, int length) throws SQLException {
  3025         throw new UnsupportedOperationException();
  3033         throw new UnsupportedOperationException();
  3026     }
  3034     }
  3027 
  3035 
  3028     /**
  3036     /**
  3029      * Sets the designated column in either the current row or the insert
  3037      * Sets the designated column in either the current row or the insert
  3030      * row of this <code>CachedRowSetImpl</code> object with the given
  3038      * row of this {@code CachedRowSetImpl} object with the given
  3031      * <code>Object</code> value.  The <code>scale</code> parameter indicates
  3039      * {@code Object} value.  The {@code scale} parameter indicates
  3032      * the number of digits to the right of the decimal point and is ignored
  3040      * the number of digits to the right of the decimal point and is ignored
  3033      * if the new column value is not a type that will be mapped to an SQL
  3041      * if the new column value is not a type that will be mapped to an SQL
  3034      * <code>DECIMAL</code> or <code>NUMERIC</code> value.
  3042      * {@code DECIMAL} or {@code NUMERIC} value.
  3035      * <P>
  3043      * <P>
  3036      * This method updates a column value in either the current row or
  3044      * This method updates a column value in either the current row or
  3037      * the insert row of this rowset, but it does not update the
  3045      * the insert row of this rowset, but it does not update the
  3038      * database.  If the cursor is on a row in the rowset, the
  3046      * database.  If the cursor is on a row in the rowset, the
  3039      * method {@link #updateRow} must be called to update the database.
  3047      * method {@link #updateRow} must be called to update the database.
  3040      * If the cursor is on the insert row, the method {@link #insertRow}
  3048      * If the cursor is on the insert row, the method {@link #insertRow}
  3041      * must be called, which will insert the new row into both this rowset
  3049      * must be called, which will insert the new row into both this rowset
  3042      * and the database. Both of these methods must be called before the
  3050      * and the database. Both of these methods must be called before the
  3043      * cursor moves to another row.
  3051      * cursor moves to another row.
  3044      *
  3052      *
  3045      * @param columnIndex the first column is <code>1</code>, the second
  3053      * @param columnIndex the first column is {@code 1}, the second
  3046      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  3054      *        is {@code 2}, and so on; must be {@code 1} or larger
  3047      *        and equal to or less than the number of columns in this rowset
  3055      *        and equal to or less than the number of columns in this rowset
  3048      * @param x the new column value
  3056      * @param x the new column value
  3049      * @param scale the number of digits to the right of the decimal point (for
  3057      * @param scale the number of digits to the right of the decimal point (for
  3050      *              <code>DECIMAL</code> and <code>NUMERIC</code> types only)
  3058      *              {@code DECIMAL} and {@code NUMERIC} types only)
  3051      * @throws SQLException if (1) the given column index is out of bounds,
  3059      * @throws SQLException if (1) the given column index is out of bounds,
  3052      *            (2) the cursor is not on one of this rowset's rows or its
  3060      *            (2) the cursor is not on one of this rowset's rows or its
  3053      *            insert row, or (3) this rowset is
  3061      *            insert row, or (3) this rowset is
  3054      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  3062      *            {@code ResultSet.CONCUR_READ_ONLY}
  3055      */
  3063      */
  3056     public void updateObject(int columnIndex, Object x, int scale) throws SQLException {
  3064     public void updateObject(int columnIndex, Object x, int scale) throws SQLException {
  3057        throw new UnsupportedOperationException();
  3065        throw new UnsupportedOperationException();
  3058     }
  3066     }
  3059 
  3067 
  3060     /**
  3068     /**
  3061      * Sets the designated column in either the current row or the insert
  3069      * Sets the designated column in either the current row or the insert
  3062      * row of this <code>CachedRowSetImpl</code> object with the given
  3070      * row of this {@code CachedRowSetImpl} object with the given
  3063      * <code>Object</code> value.
  3071      * {@code Object} value.
  3064      * <P>
  3072      * <P>
  3065      * This method updates a column value in either the current row or
  3073      * This method updates a column value in either the current row or
  3066      * the insert row of this rowset, but it does not update the
  3074      * the insert row of this rowset, but it does not update the
  3067      * database.  If the cursor is on a row in the rowset, the
  3075      * database.  If the cursor is on a row in the rowset, the
  3068      * method {@link #updateRow} must be called to update the database.
  3076      * method {@link #updateRow} must be called to update the database.
  3069      * If the cursor is on the insert row, the method {@link #insertRow}
  3077      * If the cursor is on the insert row, the method {@link #insertRow}
  3070      * must be called, which will insert the new row into both this rowset
  3078      * must be called, which will insert the new row into both this rowset
  3071      * and the database. Both of these methods must be called before the
  3079      * and the database. Both of these methods must be called before the
  3072      * cursor moves to another row.
  3080      * cursor moves to another row.
  3073      *
  3081      *
  3074      * @param columnIndex the first column is <code>1</code>, the second
  3082      * @param columnIndex the first column is {@code 1}, the second
  3075      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  3083      *        is {@code 2}, and so on; must be {@code 1} or larger
  3076      *        and equal to or less than the number of columns in this rowset
  3084      *        and equal to or less than the number of columns in this rowset
  3077      * @param x the new column value
  3085      * @param x the new column value
  3078      * @throws SQLException if (1) the given column index is out of bounds,
  3086      * @throws SQLException if (1) the given column index is out of bounds,
  3079      *            (2) the cursor is not on one of this rowset's rows or its
  3087      *            (2) the cursor is not on one of this rowset's rows or its
  3080      *            insert row, or (3) this rowset is
  3088      *            insert row, or (3) this rowset is
  3081      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  3089      *            {@code ResultSet.CONCUR_READ_ONLY}
  3082      */
  3090      */
  3083     public void updateObject(int columnIndex, Object x) throws SQLException {
  3091     public void updateObject(int columnIndex, Object x) throws SQLException {
  3084         throw new UnsupportedOperationException();
  3092         throw new UnsupportedOperationException();
  3085     }
  3093     }
  3086 
  3094 
  3087 
  3095 
  3088     /**
  3096     /**
  3089      * Sets the designated nullable column in the current row or the
  3097      * Sets the designated nullable column in the current row or the
  3090      * insert row of this <code>CachedRowSetImpl</code> object with
  3098      * insert row of this {@code CachedRowSetImpl} object with
  3091      * <code>null</code> value.
  3099      * {@code null} value.
  3092      * <P>
  3100      * <P>
  3093      * This method updates a column value in the current row or the insert
  3101      * This method updates a column value in the current row or the insert
  3094      * row of this rowset, but it does not update the database.
  3102      * row of this rowset, but it does not update the database.
  3095      * If the cursor is on a row in the rowset, the
  3103      * If the cursor is on a row in the rowset, the
  3096      * method {@link #updateRow} must be called to update the database.
  3104      * method {@link #updateRow} must be called to update the database.
  3097      * If the cursor is on the insert row, the method {@link #insertRow}
  3105      * If the cursor is on the insert row, the method {@link #insertRow}
  3098      * must be called, which will insert the new row into both this rowset
  3106      * must be called, which will insert the new row into both this rowset
  3099      * and the database.
  3107      * and the database.
  3100      *
  3108      *
  3101      * @param columnName a <code>String</code> object that must match the
  3109      * @param columnName a {@code String} object that must match the
  3102      *        SQL name of a column in this rowset, ignoring case
  3110      *        SQL name of a column in this rowset, ignoring case
  3103      * @throws SQLException if (1) the given column name does not match the
  3111      * @throws SQLException if (1) the given column name does not match the
  3104      *            name of a column in this rowset, (2) the cursor is not on
  3112      *            name of a column in this rowset, (2) the cursor is not on
  3105      *            one of this rowset's rows or its insert row, or (3) this
  3113      *            one of this rowset's rows or its insert row, or (3) this
  3106      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3114      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3107      */
  3115      */
  3108     public void updateNull(String columnName) throws SQLException {
  3116     public void updateNull(String columnName) throws SQLException {
  3109         throw new UnsupportedOperationException();
  3117         throw new UnsupportedOperationException();
  3110     }
  3118     }
  3111 
  3119 
  3112     /**
  3120     /**
  3113      * Sets the designated column in either the current row or the insert
  3121      * Sets the designated column in either the current row or the insert
  3114      * row of this <code>CachedRowSetImpl</code> object with the given
  3122      * row of this {@code CachedRowSetImpl} object with the given
  3115      * <code>boolean</code> value.
  3123      * {@code boolean} value.
  3116      * <P>
  3124      * <P>
  3117      * This method updates a column value in the current row or the insert
  3125      * This method updates a column value in the current row or the insert
  3118      * row of this rowset, but it does not update the database.
  3126      * row of this rowset, but it does not update the database.
  3119      * If the cursor is on a row in the rowset, the
  3127      * If the cursor is on a row in the rowset, the
  3120      * method {@link #updateRow} must be called to update the database.
  3128      * method {@link #updateRow} must be called to update the database.
  3121      * If the cursor is on the insert row, the method {@link #insertRow}
  3129      * If the cursor is on the insert row, the method {@link #insertRow}
  3122      * must be called, which will insert the new row into both this rowset
  3130      * must be called, which will insert the new row into both this rowset
  3123      * and the database. Both of these methods must be called before the
  3131      * and the database. Both of these methods must be called before the
  3124      * cursor moves to another row.
  3132      * cursor moves to another row.
  3125      *
  3133      *
  3126      * @param columnName a <code>String</code> object that must match the
  3134      * @param columnName a {@code String} object that must match the
  3127      *        SQL name of a column in this rowset, ignoring case
  3135      *        SQL name of a column in this rowset, ignoring case
  3128      * @param x the new column value
  3136      * @param x the new column value
  3129      * @throws SQLException if (1) the given column name does not match the
  3137      * @throws SQLException if (1) the given column name does not match the
  3130      *            name of a column in this rowset, (2) the cursor is not on
  3138      *            name of a column in this rowset, (2) the cursor is not on
  3131      *            one of this rowset's rows or its insert row, or (3) this
  3139      *            one of this rowset's rows or its insert row, or (3) this
  3132      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3140      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3133      */
  3141      */
  3134     public void updateBoolean(String columnName, boolean x) throws SQLException {
  3142     public void updateBoolean(String columnName, boolean x) throws SQLException {
  3135        throw new UnsupportedOperationException();
  3143        throw new UnsupportedOperationException();
  3136     }
  3144     }
  3137 
  3145 
  3138     /**
  3146     /**
  3139      * Sets the designated column in either the current row or the insert
  3147      * Sets the designated column in either the current row or the insert
  3140      * row of this <code>CachedRowSetImpl</code> object with the given
  3148      * row of this {@code CachedRowSetImpl} object with the given
  3141      * <code>byte</code> value.
  3149      * {@code byte} value.
  3142      * <P>
  3150      * <P>
  3143      * This method updates a column value in the current row or the insert
  3151      * This method updates a column value in the current row or the insert
  3144      * row of this rowset, but it does not update the database.
  3152      * row of this rowset, but it does not update the database.
  3145      * If the cursor is on a row in the rowset, the
  3153      * If the cursor is on a row in the rowset, the
  3146      * method {@link #updateRow} must be called to update the database.
  3154      * method {@link #updateRow} must be called to update the database.
  3147      * If the cursor is on the insert row, the method {@link #insertRow}
  3155      * If the cursor is on the insert row, the method {@link #insertRow}
  3148      * must be called, which will insert the new row into both this rowset
  3156      * must be called, which will insert the new row into both this rowset
  3149      * and the database. Both of these methods must be called before the
  3157      * and the database. Both of these methods must be called before the
  3150      * cursor moves to another row.
  3158      * cursor moves to another row.
  3151      *
  3159      *
  3152      * @param columnName a <code>String</code> object that must match the
  3160      * @param columnName a {@code String} object that must match the
  3153      *        SQL name of a column in this rowset, ignoring case
  3161      *        SQL name of a column in this rowset, ignoring case
  3154      * @param x the new column value
  3162      * @param x the new column value
  3155      * @throws SQLException if (1) the given column name does not match the
  3163      * @throws SQLException if (1) the given column name does not match the
  3156      *            name of a column in this rowset, (2) the cursor is not on
  3164      *            name of a column in this rowset, (2) the cursor is not on
  3157      *            one of this rowset's rows or its insert row, or (3) this
  3165      *            one of this rowset's rows or its insert row, or (3) this
  3158      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3166      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3159      */
  3167      */
  3160     public void updateByte(String columnName, byte x) throws SQLException {
  3168     public void updateByte(String columnName, byte x) throws SQLException {
  3161         throw new UnsupportedOperationException();
  3169         throw new UnsupportedOperationException();
  3162     }
  3170     }
  3163 
  3171 
  3164     /**
  3172     /**
  3165      * Sets the designated column in either the current row or the insert
  3173      * Sets the designated column in either the current row or the insert
  3166      * row of this <code>CachedRowSetImpl</code> object with the given
  3174      * row of this {@code CachedRowSetImpl} object with the given
  3167      * <code>short</code> value.
  3175      * {@code short} value.
  3168      * <P>
  3176      * <P>
  3169      * This method updates a column value in the current row or the insert
  3177      * This method updates a column value in the current row or the insert
  3170      * row of this rowset, but it does not update the database.
  3178      * row of this rowset, but it does not update the database.
  3171      * If the cursor is on a row in the rowset, the
  3179      * If the cursor is on a row in the rowset, the
  3172      * method {@link #updateRow} must be called to update the database.
  3180      * method {@link #updateRow} must be called to update the database.
  3173      * If the cursor is on the insert row, the method {@link #insertRow}
  3181      * If the cursor is on the insert row, the method {@link #insertRow}
  3174      * must be called, which will insert the new row into both this rowset
  3182      * must be called, which will insert the new row into both this rowset
  3175      * and the database. Both of these methods must be called before the
  3183      * and the database. Both of these methods must be called before the
  3176      * cursor moves to another row.
  3184      * cursor moves to another row.
  3177      *
  3185      *
  3178      * @param columnName a <code>String</code> object that must match the
  3186      * @param columnName a {@code String} object that must match the
  3179      *        SQL name of a column in this rowset, ignoring case
  3187      *        SQL name of a column in this rowset, ignoring case
  3180      * @param x the new column value
  3188      * @param x the new column value
  3181      * @throws SQLException if (1) the given column name does not match the
  3189      * @throws SQLException if (1) the given column name does not match the
  3182      *            name of a column in this rowset, (2) the cursor is not on
  3190      *            name of a column in this rowset, (2) the cursor is not on
  3183      *            one of this rowset's rows or its insert row, or (3) this
  3191      *            one of this rowset's rows or its insert row, or (3) this
  3184      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3192      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3185      */
  3193      */
  3186     public void updateShort(String columnName, short x) throws SQLException {
  3194     public void updateShort(String columnName, short x) throws SQLException {
  3187         throw new UnsupportedOperationException();
  3195         throw new UnsupportedOperationException();
  3188     }
  3196     }
  3189 
  3197 
  3190     /**
  3198     /**
  3191      * Sets the designated column in either the current row or the insert
  3199      * Sets the designated column in either the current row or the insert
  3192      * row of this <code>CachedRowSetImpl</code> object with the given
  3200      * row of this {@code CachedRowSetImpl} object with the given
  3193      * <code>int</code> value.
  3201      * {@code int} value.
  3194      * <P>
  3202      * <P>
  3195      * This method updates a column value in the current row or the insert
  3203      * This method updates a column value in the current row or the insert
  3196      * row of this rowset, but it does not update the database.
  3204      * row of this rowset, but it does not update the database.
  3197      * If the cursor is on a row in the rowset, the
  3205      * If the cursor is on a row in the rowset, the
  3198      * method {@link #updateRow} must be called to update the database.
  3206      * method {@link #updateRow} must be called to update the database.
  3199      * If the cursor is on the insert row, the method {@link #insertRow}
  3207      * If the cursor is on the insert row, the method {@link #insertRow}
  3200      * must be called, which will insert the new row into both this rowset
  3208      * must be called, which will insert the new row into both this rowset
  3201      * and the database. Both of these methods must be called before the
  3209      * and the database. Both of these methods must be called before the
  3202      * cursor moves to another row.
  3210      * cursor moves to another row.
  3203      *
  3211      *
  3204      * @param columnName a <code>String</code> object that must match the
  3212      * @param columnName a {@code String} object that must match the
  3205      *        SQL name of a column in this rowset, ignoring case
  3213      *        SQL name of a column in this rowset, ignoring case
  3206      * @param x the new column value
  3214      * @param x the new column value
  3207      * @throws SQLException if (1) the given column name does not match the
  3215      * @throws SQLException if (1) the given column name does not match the
  3208      *            name of a column in this rowset, (2) the cursor is not on
  3216      *            name of a column in this rowset, (2) the cursor is not on
  3209      *            one of this rowset's rows or its insert row, or (3) this
  3217      *            one of this rowset's rows or its insert row, or (3) this
  3210      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3218      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3211      */
  3219      */
  3212     public void updateInt(String columnName, int x) throws SQLException {
  3220     public void updateInt(String columnName, int x) throws SQLException {
  3213         throw new UnsupportedOperationException();
  3221         throw new UnsupportedOperationException();
  3214     }
  3222     }
  3215 
  3223 
  3216     /**
  3224     /**
  3217      * Sets the designated column in either the current row or the insert
  3225      * Sets the designated column in either the current row or the insert
  3218      * row of this <code>CachedRowSetImpl</code> object with the given
  3226      * row of this {@code CachedRowSetImpl} object with the given
  3219      * <code>long</code> value.
  3227      * {@code long} value.
  3220      * <P>
  3228      * <P>
  3221      * This method updates a column value in the current row or the insert
  3229      * This method updates a column value in the current row or the insert
  3222      * row of this rowset, but it does not update the database.
  3230      * row of this rowset, but it does not update the database.
  3223      * If the cursor is on a row in the rowset, the
  3231      * If the cursor is on a row in the rowset, the
  3224      * method {@link #updateRow} must be called to update the database.
  3232      * method {@link #updateRow} must be called to update the database.
  3225      * If the cursor is on the insert row, the method {@link #insertRow}
  3233      * If the cursor is on the insert row, the method {@link #insertRow}
  3226      * must be called, which will insert the new row into both this rowset
  3234      * must be called, which will insert the new row into both this rowset
  3227      * and the database. Both of these methods must be called before the
  3235      * and the database. Both of these methods must be called before the
  3228      * cursor moves to another row.
  3236      * cursor moves to another row.
  3229      *
  3237      *
  3230      * @param columnName a <code>String</code> object that must match the
  3238      * @param columnName a {@code String} object that must match the
  3231      *        SQL name of a column in this rowset, ignoring case
  3239      *        SQL name of a column in this rowset, ignoring case
  3232      * @param x the new column value
  3240      * @param x the new column value
  3233      * @throws SQLException if (1) the given column name does not match the
  3241      * @throws SQLException if (1) the given column name does not match the
  3234      *            name of a column in this rowset, (2) the cursor is not on
  3242      *            name of a column in this rowset, (2) the cursor is not on
  3235      *            one of this rowset's rows or its insert row, or (3) this
  3243      *            one of this rowset's rows or its insert row, or (3) this
  3236      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3244      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3237      */
  3245      */
  3238     public void updateLong(String columnName, long x) throws SQLException {
  3246     public void updateLong(String columnName, long x) throws SQLException {
  3239         throw new UnsupportedOperationException();
  3247         throw new UnsupportedOperationException();
  3240     }
  3248     }
  3241 
  3249 
  3242     /**
  3250     /**
  3243      * Sets the designated column in either the current row or the insert
  3251      * Sets the designated column in either the current row or the insert
  3244      * row of this <code>CachedRowSetImpl</code> object with the given
  3252      * row of this {@code CachedRowSetImpl} object with the given
  3245      * <code>float</code> value.
  3253      * {@code float} value.
  3246      * <P>
  3254      * <P>
  3247      * This method updates a column value in the current row or the insert
  3255      * This method updates a column value in the current row or the insert
  3248      * row of this rowset, but it does not update the database.
  3256      * row of this rowset, but it does not update the database.
  3249      * If the cursor is on a row in the rowset, the
  3257      * If the cursor is on a row in the rowset, the
  3250      * method {@link #updateRow} must be called to update the database.
  3258      * method {@link #updateRow} must be called to update the database.
  3251      * If the cursor is on the insert row, the method {@link #insertRow}
  3259      * If the cursor is on the insert row, the method {@link #insertRow}
  3252      * must be called, which will insert the new row into both this rowset
  3260      * must be called, which will insert the new row into both this rowset
  3253      * and the database. Both of these methods must be called before the
  3261      * and the database. Both of these methods must be called before the
  3254      * cursor moves to another row.
  3262      * cursor moves to another row.
  3255      *
  3263      *
  3256      * @param columnName a <code>String</code> object that must match the
  3264      * @param columnName a {@code String} object that must match the
  3257      *        SQL name of a column in this rowset, ignoring case
  3265      *        SQL name of a column in this rowset, ignoring case
  3258      * @param x the new column value
  3266      * @param x the new column value
  3259      * @throws SQLException if (1) the given column name does not match the
  3267      * @throws SQLException if (1) the given column name does not match the
  3260      *            name of a column in this rowset, (2) the cursor is not on
  3268      *            name of a column in this rowset, (2) the cursor is not on
  3261      *            one of this rowset's rows or its insert row, or (3) this
  3269      *            one of this rowset's rows or its insert row, or (3) this
  3262      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3270      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3263      */
  3271      */
  3264     public void updateFloat(String columnName, float x) throws SQLException {
  3272     public void updateFloat(String columnName, float x) throws SQLException {
  3265         throw new UnsupportedOperationException();
  3273         throw new UnsupportedOperationException();
  3266     }
  3274     }
  3267 
  3275 
  3268     /**
  3276     /**
  3269      * Sets the designated column in either the current row or the insert
  3277      * Sets the designated column in either the current row or the insert
  3270      * row of this <code>CachedRowSetImpl</code> object with the given
  3278      * row of this {@code CachedRowSetImpl} object with the given
  3271      * <code>double</code> value.
  3279      * {@code double} value.
  3272      *
  3280      *
  3273      * This method updates a column value in either the current row or
  3281      * This method updates a column value in either the current row or
  3274      * the insert row of this rowset, but it does not update the
  3282      * the insert row of this rowset, but it does not update the
  3275      * database.  If the cursor is on a row in the rowset, the
  3283      * database.  If the cursor is on a row in the rowset, the
  3276      * method {@link #updateRow} must be called to update the database.
  3284      * method {@link #updateRow} must be called to update the database.
  3277      * If the cursor is on the insert row, the method {@link #insertRow}
  3285      * If the cursor is on the insert row, the method {@link #insertRow}
  3278      * must be called, which will insert the new row into both this rowset
  3286      * must be called, which will insert the new row into both this rowset
  3279      * and the database. Both of these methods must be called before the
  3287      * and the database. Both of these methods must be called before the
  3280      * cursor moves to another row.
  3288      * cursor moves to another row.
  3281      *
  3289      *
  3282      * @param columnName a <code>String</code> object that must match the
  3290      * @param columnName a {@code String} object that must match the
  3283      *        SQL name of a column in this rowset, ignoring case
  3291      *        SQL name of a column in this rowset, ignoring case
  3284      * @param x the new column value
  3292      * @param x the new column value
  3285      * @throws SQLException if (1) the given column name does not match the
  3293      * @throws SQLException if (1) the given column name does not match the
  3286      *            name of a column in this rowset, (2) the cursor is not on
  3294      *            name of a column in this rowset, (2) the cursor is not on
  3287      *            one of this rowset's rows or its insert row, or (3) this
  3295      *            one of this rowset's rows or its insert row, or (3) this
  3288      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3296      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3289      */
  3297      */
  3290     public void updateDouble(String columnName, double x) throws SQLException {
  3298     public void updateDouble(String columnName, double x) throws SQLException {
  3291         throw new UnsupportedOperationException();
  3299         throw new UnsupportedOperationException();
  3292     }
  3300     }
  3293 
  3301 
  3294     /**
  3302     /**
  3295      * Sets the designated column in either the current row or the insert
  3303      * Sets the designated column in either the current row or the insert
  3296      * row of this <code>CachedRowSetImpl</code> object with the given
  3304      * row of this {@code CachedRowSetImpl} object with the given
  3297      * <code>java.math.BigDecimal</code> object.
  3305      * {@code java.math.BigDecimal} object.
  3298      * <P>
  3306      * <P>
  3299      * This method updates a column value in the current row or the insert
  3307      * This method updates a column value in the current row or the insert
  3300      * row of this rowset, but it does not update the database.
  3308      * row of this rowset, but it does not update the database.
  3301      * If the cursor is on a row in the rowset, the
  3309      * If the cursor is on a row in the rowset, the
  3302      * method {@link #updateRow} must be called to update the database.
  3310      * method {@link #updateRow} must be called to update the database.
  3303      * If the cursor is on the insert row, the method {@link #insertRow}
  3311      * If the cursor is on the insert row, the method {@link #insertRow}
  3304      * must be called, which will insert the new row into both this rowset
  3312      * must be called, which will insert the new row into both this rowset
  3305      * and the database. Both of these methods must be called before the
  3313      * and the database. Both of these methods must be called before the
  3306      * cursor moves to another row.
  3314      * cursor moves to another row.
  3307      *
  3315      *
  3308      * @param columnName a <code>String</code> object that must match the
  3316      * @param columnName a {@code String} object that must match the
  3309      *        SQL name of a column in this rowset, ignoring case
  3317      *        SQL name of a column in this rowset, ignoring case
  3310      * @param x the new column value
  3318      * @param x the new column value
  3311      * @throws SQLException if (1) the given column name does not match the
  3319      * @throws SQLException if (1) the given column name does not match the
  3312      *            name of a column in this rowset, (2) the cursor is not on
  3320      *            name of a column in this rowset, (2) the cursor is not on
  3313      *            one of this rowset's rows or its insert row, or (3) this
  3321      *            one of this rowset's rows or its insert row, or (3) this
  3314      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3322      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3315      */
  3323      */
  3316     public void updateBigDecimal(String columnName, BigDecimal x) throws SQLException {
  3324     public void updateBigDecimal(String columnName, BigDecimal x) throws SQLException {
  3317         throw new UnsupportedOperationException();
  3325         throw new UnsupportedOperationException();
  3318     }
  3326     }
  3319 
  3327 
  3320     /**
  3328     /**
  3321      * Sets the designated column in either the current row or the insert
  3329      * Sets the designated column in either the current row or the insert
  3322      * row of this <code>CachedRowSetImpl</code> object with the given
  3330      * row of this {@code CachedRowSetImpl} object with the given
  3323      * <code>String</code> object.
  3331      * {@code String} object.
  3324      *
  3332      *
  3325      * This method updates a column value in either the current row or
  3333      * This method updates a column value in either the current row or
  3326      * the insert row of this rowset, but it does not update the
  3334      * the insert row of this rowset, but it does not update the
  3327      * database.  If the cursor is on a row in the rowset, the
  3335      * database.  If the cursor is on a row in the rowset, the
  3328      * method {@link #updateRow} must be called to update the database.
  3336      * method {@link #updateRow} must be called to update the database.
  3329      * If the cursor is on the insert row, the method {@link #insertRow}
  3337      * If the cursor is on the insert row, the method {@link #insertRow}
  3330      * must be called, which will insert the new row into both this rowset
  3338      * must be called, which will insert the new row into both this rowset
  3331      * and the database. Both of these methods must be called before the
  3339      * and the database. Both of these methods must be called before the
  3332      * cursor moves to another row.
  3340      * cursor moves to another row.
  3333      *
  3341      *
  3334      * @param columnName a <code>String</code> object that must match the
  3342      * @param columnName a {@code String} object that must match the
  3335      *        SQL name of a column in this rowset, ignoring case
  3343      *        SQL name of a column in this rowset, ignoring case
  3336      * @param x the new column value
  3344      * @param x the new column value
  3337      * @throws SQLException if (1) the given column name does not match the
  3345      * @throws SQLException if (1) the given column name does not match the
  3338      *            name of a column in this rowset, (2) the cursor is not on
  3346      *            name of a column in this rowset, (2) the cursor is not on
  3339      *            one of this rowset's rows or its insert row, or (3) this
  3347      *            one of this rowset's rows or its insert row, or (3) this
  3340      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3348      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3341      */
  3349      */
  3342     public void updateString(String columnName, String x) throws SQLException {
  3350     public void updateString(String columnName, String x) throws SQLException {
  3343         throw new UnsupportedOperationException();
  3351         throw new UnsupportedOperationException();
  3344     }
  3352     }
  3345 
  3353 
  3346     /**
  3354     /**
  3347      * Sets the designated column in either the current row or the insert
  3355      * Sets the designated column in either the current row or the insert
  3348      * row of this <code>CachedRowSetImpl</code> object with the given
  3356      * row of this {@code CachedRowSetImpl} object with the given
  3349      * <code>byte</code> array.
  3357      * {@code byte} array.
  3350      *
  3358      *
  3351      * This method updates a column value in either the current row or
  3359      * This method updates a column value in either the current row or
  3352      * the insert row of this rowset, but it does not update the
  3360      * the insert row of this rowset, but it does not update the
  3353      * database.  If the cursor is on a row in the rowset, the
  3361      * database.  If the cursor is on a row in the rowset, the
  3354      * method {@link #updateRow} must be called to update the database.
  3362      * method {@link #updateRow} must be called to update the database.
  3355      * If the cursor is on the insert row, the method {@link #insertRow}
  3363      * If the cursor is on the insert row, the method {@link #insertRow}
  3356      * must be called, which will insert the new row into both this rowset
  3364      * must be called, which will insert the new row into both this rowset
  3357      * and the database. Both of these methods must be called before the
  3365      * and the database. Both of these methods must be called before the
  3358      * cursor moves to another row.
  3366      * cursor moves to another row.
  3359      *
  3367      *
  3360      * @param columnName a <code>String</code> object that must match the
  3368      * @param columnName a {@code String} object that must match the
  3361      *        SQL name of a column in this rowset, ignoring case
  3369      *        SQL name of a column in this rowset, ignoring case
  3362      * @param x the new column value
  3370      * @param x the new column value
  3363      * @throws SQLException if (1) the given column name does not match the
  3371      * @throws SQLException if (1) the given column name does not match the
  3364      *            name of a column in this rowset, (2) the cursor is not on
  3372      *            name of a column in this rowset, (2) the cursor is not on
  3365      *            one of this rowset's rows or its insert row, or (3) this
  3373      *            one of this rowset's rows or its insert row, or (3) this
  3366      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3374      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3367      */
  3375      */
  3368     public void updateBytes(String columnName, byte x[]) throws SQLException {
  3376     public void updateBytes(String columnName, byte x[]) throws SQLException {
  3369         throw new UnsupportedOperationException();
  3377         throw new UnsupportedOperationException();
  3370     }
  3378     }
  3371 
  3379 
  3372     /**
  3380     /**
  3373      * Sets the designated column in either the current row or the insert
  3381      * Sets the designated column in either the current row or the insert
  3374      * row of this <code>CachedRowSetImpl</code> object with the given
  3382      * row of this {@code CachedRowSetImpl} object with the given
  3375      * <code>Date</code> object.
  3383      * {@code Date} object.
  3376      *
  3384      *
  3377      * This method updates a column value in either the current row or
  3385      * This method updates a column value in either the current row or
  3378      * the insert row of this rowset, but it does not update the
  3386      * the insert row of this rowset, but it does not update the
  3379      * database.  If the cursor is on a row in the rowset, the
  3387      * database.  If the cursor is on a row in the rowset, the
  3380      * method {@link #updateRow} must be called to update the database.
  3388      * method {@link #updateRow} must be called to update the database.
  3381      * If the cursor is on the insert row, the method {@link #insertRow}
  3389      * If the cursor is on the insert row, the method {@link #insertRow}
  3382      * must be called, which will insert the new row into both this rowset
  3390      * must be called, which will insert the new row into both this rowset
  3383      * and the database. Both of these methods must be called before the
  3391      * and the database. Both of these methods must be called before the
  3384      * cursor moves to another row.
  3392      * cursor moves to another row.
  3385      *
  3393      *
  3386      * @param columnName a <code>String</code> object that must match the
  3394      * @param columnName a {@code String} object that must match the
  3387      *        SQL name of a column in this rowset, ignoring case
  3395      *        SQL name of a column in this rowset, ignoring case
  3388      * @param x the new column value
  3396      * @param x the new column value
  3389      * @throws SQLException if (1) the given column name does not match the
  3397      * @throws SQLException if (1) the given column name does not match the
  3390      *            name of a column in this rowset, (2) the cursor is not on
  3398      *            name of a column in this rowset, (2) the cursor is not on
  3391      *            one of this rowset's rows or its insert row, (3) the type
  3399      *            one of this rowset's rows or its insert row, (3) the type
  3392      *            of the designated column is not an SQL <code>DATE</code> or
  3400      *            of the designated column is not an SQL {@code DATE} or
  3393      *            <code>TIMESTAMP</code>, or (4) this rowset is
  3401      *            {@code TIMESTAMP}, or (4) this rowset is
  3394      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  3402      *            {@code ResultSet.CONCUR_READ_ONLY}
  3395      */
  3403      */
  3396     public void updateDate(String columnName, java.sql.Date x) throws SQLException {
  3404     public void updateDate(String columnName, java.sql.Date x) throws SQLException {
  3397         throw new UnsupportedOperationException();
  3405         throw new UnsupportedOperationException();
  3398     }
  3406     }
  3399 
  3407 
  3400     /**
  3408     /**
  3401      * Sets the designated column in either the current row or the insert
  3409      * Sets the designated column in either the current row or the insert
  3402      * row of this <code>CachedRowSetImpl</code> object with the given
  3410      * row of this {@code CachedRowSetImpl} object with the given
  3403      * <code>Time</code> object.
  3411      * {@code Time} object.
  3404      *
  3412      *
  3405      * This method updates a column value in either the current row or
  3413      * This method updates a column value in either the current row or
  3406      * the insert row of this rowset, but it does not update the
  3414      * the insert row of this rowset, but it does not update the
  3407      * database.  If the cursor is on a row in the rowset, the
  3415      * database.  If the cursor is on a row in the rowset, the
  3408      * method {@link #updateRow} must be called to update the database.
  3416      * method {@link #updateRow} must be called to update the database.
  3409      * If the cursor is on the insert row, the method {@link #insertRow}
  3417      * If the cursor is on the insert row, the method {@link #insertRow}
  3410      * must be called, which will insert the new row into both this rowset
  3418      * must be called, which will insert the new row into both this rowset
  3411      * and the database. Both of these methods must be called before the
  3419      * and the database. Both of these methods must be called before the
  3412      * cursor moves to another row.
  3420      * cursor moves to another row.
  3413      *
  3421      *
  3414      * @param columnName a <code>String</code> object that must match the
  3422      * @param columnName a {@code String} object that must match the
  3415      *        SQL name of a column in this rowset, ignoring case
  3423      *        SQL name of a column in this rowset, ignoring case
  3416      * @param x the new column value
  3424      * @param x the new column value
  3417      * @throws SQLException if (1) the given column name does not match the
  3425      * @throws SQLException if (1) the given column name does not match the
  3418      *            name of a column in this rowset, (2) the cursor is not on
  3426      *            name of a column in this rowset, (2) the cursor is not on
  3419      *            one of this rowset's rows or its insert row, (3) the type
  3427      *            one of this rowset's rows or its insert row, (3) the type
  3420      *            of the designated column is not an SQL <code>TIME</code> or
  3428      *            of the designated column is not an SQL {@code TIME} or
  3421      *            <code>TIMESTAMP</code>, or (4) this rowset is
  3429      *            {@code TIMESTAMP}, or (4) this rowset is
  3422      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  3430      *            {@code ResultSet.CONCUR_READ_ONLY}
  3423      */
  3431      */
  3424     public void updateTime(String columnName, java.sql.Time x) throws SQLException {
  3432     public void updateTime(String columnName, java.sql.Time x) throws SQLException {
  3425         throw new UnsupportedOperationException();
  3433         throw new UnsupportedOperationException();
  3426     }
  3434     }
  3427 
  3435 
  3428     /**
  3436     /**
  3429      * Sets the designated column in either the current row or the insert
  3437      * Sets the designated column in either the current row or the insert
  3430      * row of this <code>CachedRowSetImpl</code> object with the given
  3438      * row of this {@code CachedRowSetImpl} object with the given
  3431      * <code>Timestamp</code> object.
  3439      * {@code Timestamp} object.
  3432      *
  3440      *
  3433      * This method updates a column value in either the current row or
  3441      * This method updates a column value in either the current row or
  3434      * the insert row of this rowset, but it does not update the
  3442      * the insert row of this rowset, but it does not update the
  3435      * database.  If the cursor is on a row in the rowset, the
  3443      * database.  If the cursor is on a row in the rowset, the
  3436      * method {@link #updateRow} must be called to update the database.
  3444      * method {@link #updateRow} must be called to update the database.
  3437      * If the cursor is on the insert row, the method {@link #insertRow}
  3445      * If the cursor is on the insert row, the method {@link #insertRow}
  3438      * must be called, which will insert the new row into both this rowset
  3446      * must be called, which will insert the new row into both this rowset
  3439      * and the database. Both of these methods must be called before the
  3447      * and the database. Both of these methods must be called before the
  3440      * cursor moves to another row.
  3448      * cursor moves to another row.
  3441      *
  3449      *
  3442      * @param columnName a <code>String</code> object that must match the
  3450      * @param columnName a {@code String} object that must match the
  3443      *        SQL name of a column in this rowset, ignoring case
  3451      *        SQL name of a column in this rowset, ignoring case
  3444      * @param x the new column value
  3452      * @param x the new column value
  3445      * @throws SQLException if the given column index is out of bounds or
  3453      * @throws SQLException if the given column index is out of bounds or
  3446      *            the cursor is not on one of this rowset's rows or its
  3454      *            the cursor is not on one of this rowset's rows or its
  3447      *            insert row
  3455      *            insert row
  3448      * @throws SQLException if (1) the given column name does not match the
  3456      * @throws SQLException if (1) the given column name does not match the
  3449      *            name of a column in this rowset, (2) the cursor is not on
  3457      *            name of a column in this rowset, (2) the cursor is not on
  3450      *            one of this rowset's rows or its insert row, (3) the type
  3458      *            one of this rowset's rows or its insert row, (3) the type
  3451      *            of the designated column is not an SQL <code>DATE</code>,
  3459      *            of the designated column is not an SQL {@code DATE},
  3452      *            <code>TIME</code>, or <code>TIMESTAMP</code>, or (4) this
  3460      *            {@code TIME}, or {@code TIMESTAMP}, or (4) this
  3453      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3461      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3454      */
  3462      */
  3455     public void updateTimestamp(String columnName, java.sql.Timestamp x) throws SQLException {
  3463     public void updateTimestamp(String columnName, java.sql.Timestamp x) throws SQLException {
  3456         throw new UnsupportedOperationException();
  3464         throw new UnsupportedOperationException();
  3457     }
  3465     }
  3458 
  3466 
  3459     /**
  3467     /**
  3460      * Sets the designated column in either the current row or the insert
  3468      * Sets the designated column in either the current row or the insert
  3461      * row of this <code>CachedRowSetImpl</code> object with the given
  3469      * row of this {@code CachedRowSetImpl} object with the given
  3462      * ASCII stream value.
  3470      * ASCII stream value.
  3463      * <P>
  3471      * <P>
  3464      * This method updates a column value in either the current row or
  3472      * This method updates a column value in either the current row or
  3465      * the insert row of this rowset, but it does not update the
  3473      * the insert row of this rowset, but it does not update the
  3466      * database.  If the cursor is on a row in the rowset, the
  3474      * database.  If the cursor is on a row in the rowset, the
  3468      * If the cursor is on the insert row, the method {@link #insertRow}
  3476      * If the cursor is on the insert row, the method {@link #insertRow}
  3469      * must be called, which will insert the new row into both this rowset
  3477      * must be called, which will insert the new row into both this rowset
  3470      * and the database. Both of these methods must be called before the
  3478      * and the database. Both of these methods must be called before the
  3471      * cursor moves to another row.
  3479      * cursor moves to another row.
  3472      *
  3480      *
  3473      * @param columnName a <code>String</code> object that must match the
  3481      * @param columnName a {@code String} object that must match the
  3474      *        SQL name of a column in this rowset, ignoring case
  3482      *        SQL name of a column in this rowset, ignoring case
  3475      * @param x the new column value
  3483      * @param x the new column value
  3476      * @param length the number of one-byte ASCII characters in the stream
  3484      * @param length the number of one-byte ASCII characters in the stream
  3477      */
  3485      */
  3478     public void updateAsciiStream(String columnName,
  3486     public void updateAsciiStream(String columnName,
  3481        throw new UnsupportedOperationException();
  3489        throw new UnsupportedOperationException();
  3482     }
  3490     }
  3483 
  3491 
  3484     /**
  3492     /**
  3485      * Sets the designated column in either the current row or the insert
  3493      * Sets the designated column in either the current row or the insert
  3486      * row of this <code>CachedRowSetImpl</code> object with the given
  3494      * row of this {@code CachedRowSetImpl} object with the given
  3487      * <code>java.io.InputStream</code> object.
  3495      * {@code java.io.InputStream} object.
  3488      * <P>
  3496      * <P>
  3489      * This method updates a column value in either the current row or
  3497      * This method updates a column value in either the current row or
  3490      * the insert row of this rowset, but it does not update the
  3498      * the insert row of this rowset, but it does not update the
  3491      * database.  If the cursor is on a row in the rowset, the
  3499      * database.  If the cursor is on a row in the rowset, the
  3492      * method {@link #updateRow} must be called to update the database.
  3500      * method {@link #updateRow} must be called to update the database.
  3493      * If the cursor is on the insert row, the method {@link #insertRow}
  3501      * If the cursor is on the insert row, the method {@link #insertRow}
  3494      * must be called, which will insert the new row into both this rowset
  3502      * must be called, which will insert the new row into both this rowset
  3495      * and the database. Both of these methods must be called before the
  3503      * and the database. Both of these methods must be called before the
  3496      * cursor moves to another row.
  3504      * cursor moves to another row.
  3497      *
  3505      *
  3498      * @param columnName a <code>String</code> object that must match the
  3506      * @param columnName a {@code String} object that must match the
  3499      *        SQL name of a column in this rowset, ignoring case
  3507      *        SQL name of a column in this rowset, ignoring case
  3500      * @param x the new column value; must be a <code>java.io.InputStream</code>
  3508      * @param x the new column value; must be a {@code java.io.InputStream}
  3501      *          containing <code>BINARY</code>, <code>VARBINARY</code>, or
  3509      *          containing {@code BINARY}, {@code VARBINARY}, or
  3502      *          <code>LONGVARBINARY</code> data
  3510      *          {@code LONGVARBINARY} data
  3503      * @param length the length of the stream in bytes
  3511      * @param length the length of the stream in bytes
  3504      * @throws SQLException if (1) the given column name does not match the
  3512      * @throws SQLException if (1) the given column name does not match the
  3505      *            name of a column in this rowset, (2) the cursor is not on
  3513      *            name of a column in this rowset, (2) the cursor is not on
  3506      *            one of this rowset's rows or its insert row, (3) the data
  3514      *            one of this rowset's rows or its insert row, (3) the data
  3507      *            in the stream is not binary, or (4) this rowset is
  3515      *            in the stream is not binary, or (4) this rowset is
  3508      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  3516      *            {@code ResultSet.CONCUR_READ_ONLY}
  3509      */
  3517      */
  3510     public void updateBinaryStream(String columnName, java.io.InputStream x, int length) throws SQLException {
  3518     public void updateBinaryStream(String columnName, java.io.InputStream x, int length) throws SQLException {
  3511         throw new UnsupportedOperationException();
  3519         throw new UnsupportedOperationException();
  3512     }
  3520     }
  3513 
  3521 
  3514     /**
  3522     /**
  3515      * Sets the designated column in either the current row or the insert
  3523      * Sets the designated column in either the current row or the insert
  3516      * row of this <code>CachedRowSetImpl</code> object with the given
  3524      * row of this {@code CachedRowSetImpl} object with the given
  3517      * <code>java.io.Reader</code> object.
  3525      * {@code java.io.Reader} object.
  3518      * <P>
  3526      * <P>
  3519      * This method updates a column value in either the current row or
  3527      * This method updates a column value in either the current row or
  3520      * the insert row of this rowset, but it does not update the
  3528      * the insert row of this rowset, but it does not update the
  3521      * database.  If the cursor is on a row in the rowset, the
  3529      * database.  If the cursor is on a row in the rowset, the
  3522      * method {@link #updateRow} must be called to update the database.
  3530      * method {@link #updateRow} must be called to update the database.
  3523      * If the cursor is on the insert row, the method {@link #insertRow}
  3531      * If the cursor is on the insert row, the method {@link #insertRow}
  3524      * must be called, which will insert the new row into both this rowset
  3532      * must be called, which will insert the new row into both this rowset
  3525      * and the database. Both of these methods must be called before the
  3533      * and the database. Both of these methods must be called before the
  3526      * cursor moves to another row.
  3534      * cursor moves to another row.
  3527      *
  3535      *
  3528      * @param columnName a <code>String</code> object that must match the
  3536      * @param columnName a {@code String} object that must match the
  3529      *        SQL name of a column in this rowset, ignoring case
  3537      *        SQL name of a column in this rowset, ignoring case
  3530      * @param reader the new column value; must be a
  3538      * @param reader the new column value; must be a
  3531      * <code>java.io.Reader</code> containing <code>BINARY</code>,
  3539      * {@code java.io.Reader} containing {@code BINARY},
  3532      * <code>VARBINARY</code>, <code>LONGVARBINARY</code>, <code>CHAR</code>,
  3540      * {@code VARBINARY}, {@code LONGVARBINARY}, {@code CHAR},
  3533      * <code>VARCHAR</code>, or <code>LONGVARCHAR</code> data
  3541      * {@code VARCHAR}, or {@code LONGVARCHAR} data
  3534      * @param length the length of the stream in characters
  3542      * @param length the length of the stream in characters
  3535      * @throws SQLException if (1) the given column name does not match the
  3543      * @throws SQLException if (1) the given column name does not match the
  3536      *            name of a column in this rowset, (2) the cursor is not on
  3544      *            name of a column in this rowset, (2) the cursor is not on
  3537      *            one of this rowset's rows or its insert row, (3) the data
  3545      *            one of this rowset's rows or its insert row, (3) the data
  3538      *            in the stream is not a binary or character type, or (4) this
  3546      *            in the stream is not a binary or character type, or (4) this
  3539      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3547      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3540      */
  3548      */
  3541     public void updateCharacterStream(String columnName,
  3549     public void updateCharacterStream(String columnName,
  3542     java.io.Reader reader,
  3550     java.io.Reader reader,
  3543     int length) throws SQLException {
  3551     int length) throws SQLException {
  3544         throw new UnsupportedOperationException();
  3552         throw new UnsupportedOperationException();
  3545     }
  3553     }
  3546 
  3554 
  3547     /**
  3555     /**
  3548      * Sets the designated column in either the current row or the insert
  3556      * Sets the designated column in either the current row or the insert
  3549      * row of this <code>CachedRowSetImpl</code> object with the given
  3557      * row of this {@code CachedRowSetImpl} object with the given
  3550      * <code>Object</code> value.  The <code>scale</code> parameter
  3558      * {@code Object} value.  The {@code scale} parameter
  3551      * indicates the number of digits to the right of the decimal point
  3559      * indicates the number of digits to the right of the decimal point
  3552      * and is ignored if the new column value is not a type that will be
  3560      * and is ignored if the new column value is not a type that will be
  3553      *  mapped to an SQL <code>DECIMAL</code> or <code>NUMERIC</code> value.
  3561      *  mapped to an SQL {@code DECIMAL} or {@code NUMERIC} value.
  3554      * <P>
  3562      * <P>
  3555      * This method updates a column value in either the current row or
  3563      * This method updates a column value in either the current row or
  3556      * the insert row of this rowset, but it does not update the
  3564      * the insert row of this rowset, but it does not update the
  3557      * database.  If the cursor is on a row in the rowset, the
  3565      * database.  If the cursor is on a row in the rowset, the
  3558      * method {@link #updateRow} must be called to update the database.
  3566      * method {@link #updateRow} must be called to update the database.
  3559      * If the cursor is on the insert row, the method {@link #insertRow}
  3567      * If the cursor is on the insert row, the method {@link #insertRow}
  3560      * must be called, which will insert the new row into both this rowset
  3568      * must be called, which will insert the new row into both this rowset
  3561      * and the database. Both of these methods must be called before the
  3569      * and the database. Both of these methods must be called before the
  3562      * cursor moves to another row.
  3570      * cursor moves to another row.
  3563      *
  3571      *
  3564      * @param columnName a <code>String</code> object that must match the
  3572      * @param columnName a {@code String} object that must match the
  3565      *        SQL name of a column in this rowset, ignoring case
  3573      *        SQL name of a column in this rowset, ignoring case
  3566      * @param x the new column value
  3574      * @param x the new column value
  3567      * @param scale the number of digits to the right of the decimal point (for
  3575      * @param scale the number of digits to the right of the decimal point (for
  3568      *              <code>DECIMAL</code> and <code>NUMERIC</code> types only)
  3576      *              {@code DECIMAL} and {@code NUMERIC} types only)
  3569      * @throws SQLException if (1) the given column name does not match the
  3577      * @throws SQLException if (1) the given column name does not match the
  3570      *            name of a column in this rowset, (2) the cursor is not on
  3578      *            name of a column in this rowset, (2) the cursor is not on
  3571      *            one of this rowset's rows or its insert row, or (3) this
  3579      *            one of this rowset's rows or its insert row, or (3) this
  3572      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3580      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3573      */
  3581      */
  3574     public void updateObject(String columnName, Object x, int scale) throws SQLException {
  3582     public void updateObject(String columnName, Object x, int scale) throws SQLException {
  3575         throw new UnsupportedOperationException();
  3583         throw new UnsupportedOperationException();
  3576     }
  3584     }
  3577 
  3585 
  3578     /**
  3586     /**
  3579      * Sets the designated column in either the current row or the insert
  3587      * Sets the designated column in either the current row or the insert
  3580      * row of this <code>CachedRowSetImpl</code> object with the given
  3588      * row of this {@code CachedRowSetImpl} object with the given
  3581      * <code>Object</code> value.
  3589      * {@code Object} value.
  3582      * <P>
  3590      * <P>
  3583      * This method updates a column value in either the current row or
  3591      * This method updates a column value in either the current row or
  3584      * the insert row of this rowset, but it does not update the
  3592      * the insert row of this rowset, but it does not update the
  3585      * database.  If the cursor is on a row in the rowset, the
  3593      * database.  If the cursor is on a row in the rowset, the
  3586      * method {@link #updateRow} must be called to update the database.
  3594      * method {@link #updateRow} must be called to update the database.
  3587      * If the cursor is on the insert row, the method {@link #insertRow}
  3595      * If the cursor is on the insert row, the method {@link #insertRow}
  3588      * must be called, which will insert the new row into both this rowset
  3596      * must be called, which will insert the new row into both this rowset
  3589      * and the database. Both of these methods must be called before the
  3597      * and the database. Both of these methods must be called before the
  3590      * cursor moves to another row.
  3598      * cursor moves to another row.
  3591      *
  3599      *
  3592      * @param columnName a <code>String</code> object that must match the
  3600      * @param columnName a {@code String} object that must match the
  3593      *        SQL name of a column in this rowset, ignoring case
  3601      *        SQL name of a column in this rowset, ignoring case
  3594      * @param x the new column value
  3602      * @param x the new column value
  3595      * @throws SQLException if (1) the given column name does not match the
  3603      * @throws SQLException if (1) the given column name does not match the
  3596      *            name of a column in this rowset, (2) the cursor is not on
  3604      *            name of a column in this rowset, (2) the cursor is not on
  3597      *            one of this rowset's rows or its insert row, or (3) this
  3605      *            one of this rowset's rows or its insert row, or (3) this
  3598      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3606      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3599      */
  3607      */
  3600     public void updateObject(String columnName, Object x) throws SQLException {
  3608     public void updateObject(String columnName, Object x) throws SQLException {
  3601         throw new UnsupportedOperationException();
  3609         throw new UnsupportedOperationException();
  3602     }
  3610     }
  3603 
  3611 
  3604     /**
  3612     /**
  3605      * Inserts the contents of this <code>CachedRowSetImpl</code> object's insert
  3613      * Inserts the contents of this {@code CachedRowSetImpl} object's insert
  3606      * row into this rowset immediately following the current row.
  3614      * row into this rowset immediately following the current row.
  3607      * If the current row is the
  3615      * If the current row is the
  3608      * position after the last row or before the first row, the new row will
  3616      * position after the last row or before the first row, the new row will
  3609      * be inserted at the end of the rowset.  This method also notifies
  3617      * be inserted at the end of the rowset.  This method also notifies
  3610      * listeners registered with this rowset that the row has changed.
  3618      * listeners registered with this rowset that the row has changed.
  3612      * The cursor must be on the insert row when this method is called.
  3620      * The cursor must be on the insert row when this method is called.
  3613      *
  3621      *
  3614      * @throws SQLException if (1) the cursor is not on the insert row,
  3622      * @throws SQLException if (1) the cursor is not on the insert row,
  3615      *            (2) one or more of the non-nullable columns in the insert
  3623      *            (2) one or more of the non-nullable columns in the insert
  3616      *            row has not been given a value, or (3) this rowset is
  3624      *            row has not been given a value, or (3) this rowset is
  3617      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  3625      *            {@code ResultSet.CONCUR_READ_ONLY}
  3618      */
  3626      */
  3619     public void insertRow() throws SQLException {
  3627     public void insertRow() throws SQLException {
  3620         throw new UnsupportedOperationException();
  3628         throw new UnsupportedOperationException();
  3621     }
  3629     }
  3622 
  3630 
  3623     /**
  3631     /**
  3624      * Marks the current row of this <code>CachedRowSetImpl</code> object as
  3632      * Marks the current row of this {@code CachedRowSetImpl} object as
  3625      * updated and notifies listeners registered with this rowset that the
  3633      * updated and notifies listeners registered with this rowset that the
  3626      * row has changed.
  3634      * row has changed.
  3627      * <P>
  3635      * <P>
  3628      * This method  cannot be called when the cursor is on the insert row, and
  3636      * This method  cannot be called when the cursor is on the insert row, and
  3629      * it should be called before the cursor moves to another row.  If it is
  3637      * it should be called before the cursor moves to another row.  If it is
  3630      * called after the cursor moves to another row, this method has no effect,
  3638      * called after the cursor moves to another row, this method has no effect,
  3631      * and the updates made before the cursor moved will be lost.
  3639      * and the updates made before the cursor moved will be lost.
  3632      *
  3640      *
  3633      * @throws SQLException if the cursor is on the insert row or this
  3641      * @throws SQLException if the cursor is on the insert row or this
  3634      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  3642      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  3635      */
  3643      */
  3636     public void updateRow() throws SQLException {
  3644     public void updateRow() throws SQLException {
  3637         throw new UnsupportedOperationException();
  3645         throw new UnsupportedOperationException();
  3638     }
  3646     }
  3639 
  3647 
  3640     /**
  3648     /**
  3641      * Deletes the current row from this <code>CachedRowSetImpl</code> object and
  3649      * Deletes the current row from this {@code CachedRowSetImpl} object and
  3642      * notifies listeners registered with this rowset that a row has changed.
  3650      * notifies listeners registered with this rowset that a row has changed.
  3643      * This method cannot be called when the cursor is on the insert row.
  3651      * This method cannot be called when the cursor is on the insert row.
  3644      * <P>
  3652      * <P>
  3645      * This method marks the current row as deleted, but it does not delete
  3653      * This method marks the current row as deleted, but it does not delete
  3646      * the row from the underlying data source.  The method
  3654      * the row from the underlying data source.  The method
  3647      * <code>acceptChanges</code> must be called to delete the row in
  3655      * {@code acceptChanges} must be called to delete the row in
  3648      * the data source.
  3656      * the data source.
  3649      *
  3657      *
  3650      * @throws SQLException if (1) this method is called when the cursor
  3658      * @throws SQLException if (1) this method is called when the cursor
  3651      *            is on the insert row, before the first row, or after the
  3659      *            is on the insert row, before the first row, or after the
  3652      *            last row or (2) this rowset is
  3660      *            last row or (2) this rowset is
  3653      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  3661      *            {@code ResultSet.CONCUR_READ_ONLY}
  3654      */
  3662      */
  3655     public void deleteRow() throws SQLException {
  3663     public void deleteRow() throws SQLException {
  3656         throw new UnsupportedOperationException();
  3664         throw new UnsupportedOperationException();
  3657     }
  3665     }
  3658 
  3666 
  3659     /**
  3667     /**
  3660      * Sets the current row with its original value and marks the row as
  3668      * Sets the current row with its original value and marks the row as
  3661      * not updated, thus undoing any changes made to the row since the
  3669      * not updated, thus undoing any changes made to the row since the
  3662      * last call to the methods <code>updateRow</code> or <code>deleteRow</code>.
  3670      * last call to the methods {@code updateRow} or {@code deleteRow}.
  3663      * This method should be called only when the cursor is on a row in
  3671      * This method should be called only when the cursor is on a row in
  3664      * this rowset.
  3672      * this rowset.
  3665      *
  3673      *
  3666      * @throws SQLException if the cursor is on the insert row, before the
  3674      * @throws SQLException if the cursor is on the insert row, before the
  3667      *            first row, or after the last row
  3675      *            first row, or after the last row
  3670         throw new UnsupportedOperationException();
  3678         throw new UnsupportedOperationException();
  3671     }
  3679     }
  3672 
  3680 
  3673     /**
  3681     /**
  3674      * Rolls back any updates made to the current row of this
  3682      * Rolls back any updates made to the current row of this
  3675      * <code>CachedRowSetImpl</code> object and notifies listeners that
  3683      * {@code CachedRowSetImpl} object and notifies listeners that
  3676      * a row has changed.  To have an effect, this method
  3684      * a row has changed.  To have an effect, this method
  3677      * must be called after an <code>updateXXX</code> method has been
  3685      * must be called after an {@code updateXXX} method has been
  3678      * called and before the method <code>updateRow</code> has been called.
  3686      * called and before the method {@code updateRow} has been called.
  3679      * If no updates have been made or the method <code>updateRow</code>
  3687      * If no updates have been made or the method {@code updateRow}
  3680      * has already been called, this method has no effect.
  3688      * has already been called, this method has no effect.
  3681      *
  3689      *
  3682      * @throws SQLException if the cursor is on the insert row, before the
  3690      * @throws SQLException if the cursor is on the insert row, before the
  3683      *            first row, or after the last row
  3691      *            first row, or after the last row
  3684      */
  3692      */
  3685     public void cancelRowUpdates() throws SQLException {
  3693     public void cancelRowUpdates() throws SQLException {
  3686         throw new UnsupportedOperationException();
  3694         throw new UnsupportedOperationException();
  3687     }
  3695     }
  3688 
  3696 
  3689     /**
  3697     /**
  3690      * Moves the cursor for this <code>CachedRowSetImpl</code> object
  3698      * Moves the cursor for this {@code CachedRowSetImpl} object
  3691      * to the insert row.  The current row in the rowset is remembered
  3699      * to the insert row.  The current row in the rowset is remembered
  3692      * while the cursor is on the insert row.
  3700      * while the cursor is on the insert row.
  3693      * <P>
  3701      * <P>
  3694      * The insert row is a special row associated with an updatable
  3702      * The insert row is a special row associated with an updatable
  3695      * rowset.  It is essentially a buffer where a new row may
  3703      * rowset.  It is essentially a buffer where a new row may
  3696      * be constructed by calling the appropriate <code>updateXXX</code>
  3704      * be constructed by calling the appropriate {@code updateXXX}
  3697      * methods to assign a value to each column in the row.  A complete
  3705      * methods to assign a value to each column in the row.  A complete
  3698      * row must be constructed; that is, every column that is not nullable
  3706      * row must be constructed; that is, every column that is not nullable
  3699      * must be assigned a value.  In order for the new row to become part
  3707      * must be assigned a value.  In order for the new row to become part
  3700      * of this rowset, the method <code>insertRow</code> must be called
  3708      * of this rowset, the method {@code insertRow} must be called
  3701      * before the cursor is moved back to the rowset.
  3709      * before the cursor is moved back to the rowset.
  3702      * <P>
  3710      * <P>
  3703      * Only certain methods may be invoked while the cursor is on the insert
  3711      * Only certain methods may be invoked while the cursor is on the insert
  3704      * row; many methods throw an exception if they are called while the
  3712      * row; many methods throw an exception if they are called while the
  3705      * cursor is there.  In addition to the <code>updateXXX</code>
  3713      * cursor is there.  In addition to the {@code updateXXX}
  3706      * and <code>insertRow</code> methods, only the <code>getXXX</code> methods
  3714      * and {@code insertRow} methods, only the {@code getXXX} methods
  3707      * may be called when the cursor is on the insert row.  A <code>getXXX</code>
  3715      * may be called when the cursor is on the insert row.  A {@code getXXX}
  3708      * method should be called on a column only after an <code>updateXXX</code>
  3716      * method should be called on a column only after an {@code updateXXX}
  3709      * method has been called on that column; otherwise, the value returned is
  3717      * method has been called on that column; otherwise, the value returned is
  3710      * undetermined.
  3718      * undetermined.
  3711      *
  3719      *
  3712      * @throws SQLException if this <code>CachedRowSetImpl</code> object is
  3720      * @throws SQLException if this {@code CachedRowSetImpl} object is
  3713      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  3721      *            {@code ResultSet.CONCUR_READ_ONLY}
  3714      */
  3722      */
  3715     public void moveToInsertRow() throws SQLException {
  3723     public void moveToInsertRow() throws SQLException {
  3716         throw new UnsupportedOperationException();
  3724         throw new UnsupportedOperationException();
  3717     }
  3725     }
  3718 
  3726 
  3719     /**
  3727     /**
  3720      * Moves the cursor for this <code>CachedRowSetImpl</code> object to
  3728      * Moves the cursor for this {@code CachedRowSetImpl} object to
  3721      * the current row.  The current row is the row the cursor was on
  3729      * the current row.  The current row is the row the cursor was on
  3722      * when the method <code>moveToInsertRow</code> was called.
  3730      * when the method {@code moveToInsertRow} was called.
  3723      * <P>
  3731      * <P>
  3724      * Calling this method has no effect unless it is called while the
  3732      * Calling this method has no effect unless it is called while the
  3725      * cursor is on the insert row.
  3733      * cursor is on the insert row.
  3726      *
  3734      *
  3727      * @throws SQLException if an error occurs
  3735      * @throws SQLException if an error occurs
  3729     public void moveToCurrentRow() throws SQLException {
  3737     public void moveToCurrentRow() throws SQLException {
  3730         throw new UnsupportedOperationException();
  3738         throw new UnsupportedOperationException();
  3731     }
  3739     }
  3732 
  3740 
  3733     /**
  3741     /**
  3734      * Returns <code>null</code>.
  3742      * Returns {@code null}.
  3735      *
  3743      *
  3736      * @return <code>null</code>
  3744      * @return {@code null}
  3737      * @throws SQLException if an error occurs
  3745      * @throws SQLException if an error occurs
  3738      */
  3746      */
  3739     public Statement getStatement() throws SQLException {
  3747     public Statement getStatement() throws SQLException {
  3740         throw new UnsupportedOperationException();
  3748         throw new UnsupportedOperationException();
  3741     }
  3749     }
  3742 
  3750 
  3743     /**
  3751     /**
  3744      * Retrieves the value of the designated column in this
  3752      * Retrieves the value of the designated column in this
  3745      * <code>CachedRowSetImpl</code> object as an <code>Object</code> in
  3753      * {@code CachedRowSetImpl} object as an {@code Object} in
  3746      * the Java programming language, using the given
  3754      * the Java programming language, using the given
  3747      * <code>java.util.Map</code> object to custom map the value if
  3755      * {@code java.util.Map} object to custom map the value if
  3748      * appropriate.
  3756      * appropriate.
  3749      *
  3757      *
  3750      * @param columnIndex the first column is <code>1</code>, the second
  3758      * @param columnIndex the first column is {@code 1}, the second
  3751      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  3759      *        is {@code 2}, and so on; must be {@code 1} or larger
  3752      *        and equal to or less than the number of columns in this rowset
  3760      *        and equal to or less than the number of columns in this rowset
  3753      * @param map a <code>java.util.Map</code> object showing the mapping
  3761      * @param map a {@code java.util.Map} object showing the mapping
  3754      *            from SQL type names to classes in the Java programming
  3762      *            from SQL type names to classes in the Java programming
  3755      *            language
  3763      *            language
  3756      * @return an <code>Object</code> representing the SQL value
  3764      * @return an {@code Object} representing the SQL value
  3757      * @throws SQLException if the given column index is out of bounds or
  3765      * @throws SQLException if the given column index is out of bounds or
  3758      *            the cursor is not on one of this rowset's rows or its
  3766      *            the cursor is not on one of this rowset's rows or its
  3759      *            insert row
  3767      *            insert row
  3760      */
  3768      */
  3761     public Object getObject(int columnIndex,
  3769     public Object getObject(int columnIndex,
  3765        throw new UnsupportedOperationException();
  3773        throw new UnsupportedOperationException();
  3766     }
  3774     }
  3767 
  3775 
  3768     /**
  3776     /**
  3769      * Retrieves the value of the designated column in this
  3777      * Retrieves the value of the designated column in this
  3770      * <code>CachedRowSetImpl</code> object as a <code>Ref</code> object
  3778      * {@code CachedRowSetImpl} object as a {@code Ref} object
  3771      * in the Java programming language.
  3779      * in the Java programming language.
  3772      *
  3780      *
  3773      * @param columnIndex the first column is <code>1</code>, the second
  3781      * @param columnIndex the first column is {@code 1}, the second
  3774      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  3782      *        is {@code 2}, and so on; must be {@code 1} or larger
  3775      *        and equal to or less than the number of columns in this rowset
  3783      *        and equal to or less than the number of columns in this rowset
  3776      * @return a <code>Ref</code> object representing an SQL<code> REF</code> value
  3784      * @return a {@code Ref} object representing an SQL{@code  REF} value
  3777      * @throws SQLException if (1) the given column index is out of bounds,
  3785      * @throws SQLException if (1) the given column index is out of bounds,
  3778      *            (2) the cursor is not on one of this rowset's rows or its
  3786      *            (2) the cursor is not on one of this rowset's rows or its
  3779      *            insert row, or (3) the designated column does not store an
  3787      *            insert row, or (3) the designated column does not store an
  3780      *            SQL <code>REF</code> value
  3788      *            SQL {@code REF} value
  3781      * @see #getRef(String)
  3789      * @see #getRef(String)
  3782      */
  3790      */
  3783     public Ref getRef(int columnIndex) throws SQLException {
  3791     public Ref getRef(int columnIndex) throws SQLException {
  3784         throw new UnsupportedOperationException();
  3792         throw new UnsupportedOperationException();
  3785     }
  3793     }
  3786 
  3794 
  3787     /**
  3795     /**
  3788      * Retrieves the value of the designated column in this
  3796      * Retrieves the value of the designated column in this
  3789      * <code>CachedRowSetImpl</code> object as a <code>Blob</code> object
  3797      * {@code CachedRowSetImpl} object as a {@code Blob} object
  3790      * in the Java programming language.
  3798      * in the Java programming language.
  3791      *
  3799      *
  3792      * @param columnIndex the first column is <code>1</code>, the second
  3800      * @param columnIndex the first column is {@code 1}, the second
  3793      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  3801      *        is {@code 2}, and so on; must be {@code 1} or larger
  3794      *        and equal to or less than the number of columns in this rowset
  3802      *        and equal to or less than the number of columns in this rowset
  3795      * @return a <code>Blob</code> object representing an SQL <code>BLOB</code> value
  3803      * @return a {@code Blob} object representing an SQL {@code BLOB} value
  3796      * @throws SQLException if (1) the given column index is out of bounds,
  3804      * @throws SQLException if (1) the given column index is out of bounds,
  3797      *            (2) the cursor is not on one of this rowset's rows or its
  3805      *            (2) the cursor is not on one of this rowset's rows or its
  3798      *            insert row, or (3) the designated column does not store an
  3806      *            insert row, or (3) the designated column does not store an
  3799      *            SQL <code>BLOB</code> value
  3807      *            SQL {@code BLOB} value
  3800      * @see #getBlob(String)
  3808      * @see #getBlob(String)
  3801      */
  3809      */
  3802     public Blob getBlob(int columnIndex) throws SQLException {
  3810     public Blob getBlob(int columnIndex) throws SQLException {
  3803        throw new UnsupportedOperationException();
  3811        throw new UnsupportedOperationException();
  3804     }
  3812     }
  3805 
  3813 
  3806     /**
  3814     /**
  3807      * Retrieves the value of the designated column in this
  3815      * Retrieves the value of the designated column in this
  3808      * <code>CachedRowSetImpl</code> object as a <code>Clob</code> object
  3816      * {@code CachedRowSetImpl} object as a {@code Clob} object
  3809      * in the Java programming language.
  3817      * in the Java programming language.
  3810      *
  3818      *
  3811      * @param columnIndex the first column is <code>1</code>, the second
  3819      * @param columnIndex the first column is {@code 1}, the second
  3812      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  3820      *        is {@code 2}, and so on; must be {@code 1} or larger
  3813      *        and equal to or less than the number of columns in this rowset
  3821      *        and equal to or less than the number of columns in this rowset
  3814      * @return a <code>Clob</code> object representing an SQL <code>CLOB</code> value
  3822      * @return a {@code Clob} object representing an SQL {@code CLOB} value
  3815      * @throws SQLException if (1) the given column index is out of bounds,
  3823      * @throws SQLException if (1) the given column index is out of bounds,
  3816      *            (2) the cursor is not on one of this rowset's rows or its
  3824      *            (2) the cursor is not on one of this rowset's rows or its
  3817      *            insert row, or (3) the designated column does not store an
  3825      *            insert row, or (3) the designated column does not store an
  3818      *            SQL <code>CLOB</code> value
  3826      *            SQL {@code CLOB} value
  3819      * @see #getClob(String)
  3827      * @see #getClob(String)
  3820      */
  3828      */
  3821     public Clob getClob(int columnIndex) throws SQLException {
  3829     public Clob getClob(int columnIndex) throws SQLException {
  3822         throw new UnsupportedOperationException();
  3830         throw new UnsupportedOperationException();
  3823     }
  3831     }
  3824 
  3832 
  3825     /**
  3833     /**
  3826      * Retrieves the value of the designated column in this
  3834      * Retrieves the value of the designated column in this
  3827      * <code>CachedRowSetImpl</code> object as an <code>Array</code> object
  3835      * {@code CachedRowSetImpl} object as an {@code Array} object
  3828      * in the Java programming language.
  3836      * in the Java programming language.
  3829      *
  3837      *
  3830      * @param columnIndex the first column is <code>1</code>, the second
  3838      * @param columnIndex the first column is {@code 1}, the second
  3831      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  3839      *        is {@code 2}, and so on; must be {@code 1} or larger
  3832      *        and equal to or less than the number of columns in this rowset
  3840      *        and equal to or less than the number of columns in this rowset
  3833      * @return an <code>Array</code> object representing an SQL
  3841      * @return an {@code Array} object representing an SQL
  3834      *         <code>ARRAY</code> value
  3842      *         {@code ARRAY} value
  3835      * @throws SQLException if (1) the given column index is out of bounds,
  3843      * @throws SQLException if (1) the given column index is out of bounds,
  3836      *            (2) the cursor is not on one of this rowset's rows or its
  3844      *            (2) the cursor is not on one of this rowset's rows or its
  3837      *            insert row, or (3) the designated column does not store an
  3845      *            insert row, or (3) the designated column does not store an
  3838      *            SQL <code>ARRAY</code> value
  3846      *            SQL {@code ARRAY} value
  3839      * @see #getArray(String)
  3847      * @see #getArray(String)
  3840      */
  3848      */
  3841     public Array getArray(int columnIndex) throws SQLException {
  3849     public Array getArray(int columnIndex) throws SQLException {
  3842         throw new UnsupportedOperationException();
  3850         throw new UnsupportedOperationException();
  3843     }
  3851     }
  3844 
  3852 
  3845     /**
  3853     /**
  3846      * Retrieves the value of the designated column in this
  3854      * Retrieves the value of the designated column in this
  3847      * <code>CachedRowSetImpl</code> object as an <code>Object</code> in
  3855      * {@code CachedRowSetImpl} object as an {@code Object} in
  3848      * the Java programming language, using the given
  3856      * the Java programming language, using the given
  3849      * <code>java.util.Map</code> object to custom map the value if
  3857      * {@code java.util.Map} object to custom map the value if
  3850      * appropriate.
  3858      * appropriate.
  3851      *
  3859      *
  3852      * @param columnName a <code>String</code> object that must match the
  3860      * @param columnName a {@code String} object that must match the
  3853      *        SQL name of a column in this rowset, ignoring case
  3861      *        SQL name of a column in this rowset, ignoring case
  3854      * @param map a <code>java.util.Map</code> object showing the mapping
  3862      * @param map a {@code java.util.Map} object showing the mapping
  3855      *        from SQL type names to classes in the Java programming
  3863      *        from SQL type names to classes in the Java programming
  3856      *        language
  3864      *        language
  3857      * @return an <code>Object</code> representing the SQL value
  3865      * @return an {@code Object} representing the SQL value
  3858      * @throws SQLException if the given column name is not the name of
  3866      * @throws SQLException if the given column name is not the name of
  3859      *         a column in this rowset or the cursor is not on one of
  3867      *         a column in this rowset or the cursor is not on one of
  3860      *         this rowset's rows or its insert row
  3868      *         this rowset's rows or its insert row
  3861      */
  3869      */
  3862     public Object getObject(String columnName,
  3870     public Object getObject(String columnName,
  3865         throw new UnsupportedOperationException();
  3873         throw new UnsupportedOperationException();
  3866     }
  3874     }
  3867 
  3875 
  3868     /**
  3876     /**
  3869      * Retrieves the value of the designated column in this
  3877      * Retrieves the value of the designated column in this
  3870      * <code>CachedRowSetImpl</code> object as a <code>Ref</code> object
  3878      * {@code CachedRowSetImpl} object as a {@code Ref} object
  3871      * in the Java programming language.
  3879      * in the Java programming language.
  3872      *
  3880      *
  3873      * @param colName a <code>String</code> object that must match the
  3881      * @param colName a {@code String} object that must match the
  3874      *        SQL name of a column in this rowset, ignoring case
  3882      *        SQL name of a column in this rowset, ignoring case
  3875      * @return a <code>Ref</code> object representing an SQL<code> REF</code> value
  3883      * @return a {@code Ref} object representing an SQL{@code  REF} value
  3876      * @throws SQLException  if (1) the given column name is not the name of
  3884      * @throws SQLException  if (1) the given column name is not the name of
  3877      *            a column in this rowset, (2) the cursor is not on one of
  3885      *            a column in this rowset, (2) the cursor is not on one of
  3878      *            this rowset's rows or its insert row, or (3) the column value
  3886      *            this rowset's rows or its insert row, or (3) the column value
  3879      *            is not an SQL <code>REF</code> value
  3887      *            is not an SQL {@code REF} value
  3880      * @see #getRef(int)
  3888      * @see #getRef(int)
  3881      */
  3889      */
  3882     public Ref getRef(String colName) throws SQLException {
  3890     public Ref getRef(String colName) throws SQLException {
  3883         throw new UnsupportedOperationException();
  3891         throw new UnsupportedOperationException();
  3884     }
  3892     }
  3885 
  3893 
  3886     /**
  3894     /**
  3887      * Retrieves the value of the designated column in this
  3895      * Retrieves the value of the designated column in this
  3888      * <code>CachedRowSetImpl</code> object as a <code>Blob</code> object
  3896      * {@code CachedRowSetImpl} object as a {@code Blob} object
  3889      * in the Java programming language.
  3897      * in the Java programming language.
  3890      *
  3898      *
  3891      * @param colName a <code>String</code> object that must match the
  3899      * @param colName a {@code String} object that must match the
  3892      *        SQL name of a column in this rowset, ignoring case
  3900      *        SQL name of a column in this rowset, ignoring case
  3893      * @return a <code>Blob</code> object representing an SQL <code>BLOB</code> value
  3901      * @return a {@code Blob} object representing an SQL {@code BLOB} value
  3894      * @throws SQLException if (1) the given column name is not the name of
  3902      * @throws SQLException if (1) the given column name is not the name of
  3895      *            a column in this rowset, (2) the cursor is not on one of
  3903      *            a column in this rowset, (2) the cursor is not on one of
  3896      *            this rowset's rows or its insert row, or (3) the designated
  3904      *            this rowset's rows or its insert row, or (3) the designated
  3897      *            column does not store an SQL <code>BLOB</code> value
  3905      *            column does not store an SQL {@code BLOB} value
  3898      * @see #getBlob(int)
  3906      * @see #getBlob(int)
  3899      */
  3907      */
  3900     public Blob getBlob(String colName) throws SQLException {
  3908     public Blob getBlob(String colName) throws SQLException {
  3901        throw new UnsupportedOperationException();
  3909        throw new UnsupportedOperationException();
  3902     }
  3910     }
  3903 
  3911 
  3904     /**
  3912     /**
  3905      * Retrieves the value of the designated column in this
  3913      * Retrieves the value of the designated column in this
  3906      * <code>CachedRowSetImpl</code> object as a <code>Clob</code> object
  3914      * {@code CachedRowSetImpl} object as a {@code Clob} object
  3907      * in the Java programming language.
  3915      * in the Java programming language.
  3908      *
  3916      *
  3909      * @param colName a <code>String</code> object that must match the
  3917      * @param colName a {@code String} object that must match the
  3910      *        SQL name of a column in this rowset, ignoring case
  3918      *        SQL name of a column in this rowset, ignoring case
  3911      * @return a <code>Clob</code> object representing an SQL
  3919      * @return a {@code Clob} object representing an SQL
  3912      *         <code>CLOB</code> value
  3920      *         {@code CLOB} value
  3913      * @throws SQLException if (1) the given column name is not the name of
  3921      * @throws SQLException if (1) the given column name is not the name of
  3914      *            a column in this rowset, (2) the cursor is not on one of
  3922      *            a column in this rowset, (2) the cursor is not on one of
  3915      *            this rowset's rows or its insert row, or (3) the designated
  3923      *            this rowset's rows or its insert row, or (3) the designated
  3916      *            column does not store an SQL <code>CLOB</code> value
  3924      *            column does not store an SQL {@code CLOB} value
  3917      * @see #getClob(int)
  3925      * @see #getClob(int)
  3918      */
  3926      */
  3919     public Clob getClob(String colName) throws SQLException {
  3927     public Clob getClob(String colName) throws SQLException {
  3920         throw new UnsupportedOperationException();
  3928         throw new UnsupportedOperationException();
  3921     }
  3929     }
  3922 
  3930 
  3923     /**
  3931     /**
  3924      * Retrieves the value of the designated column in this
  3932      * Retrieves the value of the designated column in this
  3925      * <code>CachedRowSetImpl</code> object as an <code>Array</code> object
  3933      * {@code CachedRowSetImpl} object as an {@code Array} object
  3926      * in the Java programming langugage.
  3934      * in the Java programming langugage.
  3927      *
  3935      *
  3928      * @param colName a <code>String</code> object that must match the
  3936      * @param colName a {@code String} object that must match the
  3929      *        SQL name of a column in this rowset, ignoring case
  3937      *        SQL name of a column in this rowset, ignoring case
  3930      * @return an <code>Array</code> object representing an SQL
  3938      * @return an {@code Array} object representing an SQL
  3931      *         <code>ARRAY</code> value
  3939      *         {@code ARRAY} value
  3932      * @throws SQLException if (1) the given column name is not the name of
  3940      * @throws SQLException if (1) the given column name is not the name of
  3933      *            a column in this rowset, (2) the cursor is not on one of
  3941      *            a column in this rowset, (2) the cursor is not on one of
  3934      *            this rowset's rows or its insert row, or (3) the designated
  3942      *            this rowset's rows or its insert row, or (3) the designated
  3935      *            column does not store an SQL <code>ARRAY</code> value
  3943      *            column does not store an SQL {@code ARRAY} value
  3936      * @see #getArray(int)
  3944      * @see #getArray(int)
  3937      */
  3945      */
  3938     public Array getArray(String colName) throws SQLException {
  3946     public Array getArray(String colName) throws SQLException {
  3939         throw new UnsupportedOperationException();
  3947         throw new UnsupportedOperationException();
  3940     }
  3948     }
  3941 
  3949 
  3942     /**
  3950     /**
  3943      * Retrieves the value of the designated column in the current row
  3951      * Retrieves the value of the designated column in the current row
  3944      * of this <code>CachedRowSetImpl</code> object as a <code>java.sql.Date</code>
  3952      * of this {@code CachedRowSetImpl} object as a {@code java.sql.Date}
  3945      * object, using the given <code>Calendar</code> object to construct an
  3953      * object, using the given {@code Calendar} object to construct an
  3946      * appropriate millisecond value for the date.
  3954      * appropriate millisecond value for the date.
  3947      *
  3955      *
  3948      * @param columnIndex the first column is <code>1</code>, the second
  3956      * @param columnIndex the first column is {@code 1}, the second
  3949      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  3957      *        is {@code 2}, and so on; must be {@code 1} or larger
  3950      *        and equal to or less than the number of columns in the rowset
  3958      *        and equal to or less than the number of columns in the rowset
  3951      * @param cal the <code>java.util.Calendar</code> object to use in
  3959      * @param cal the {@code java.util.Calendar} object to use in
  3952      *            constructing the date
  3960      *            constructing the date
  3953      * @return the column value; if the value is SQL <code>NULL</code>,
  3961      * @return the column value; if the value is SQL {@code NULL},
  3954      *         the result is <code>null</code>
  3962      *         the result is {@code null}
  3955      * @throws SQLException if (1) the given column name is not the name of
  3963      * @throws SQLException if (1) the given column name is not the name of
  3956      *            a column in this rowset, (2) the cursor is not on one of
  3964      *            a column in this rowset, (2) the cursor is not on one of
  3957      *            this rowset's rows or its insert row, or (3) the designated
  3965      *            this rowset's rows or its insert row, or (3) the designated
  3958      *            column does not store an SQL <code>DATE</code> or
  3966      *            column does not store an SQL {@code DATE} or
  3959      *            <code>TIMESTAMP</code> value
  3967      *            {@code TIMESTAMP} value
  3960      */
  3968      */
  3961     public java.sql.Date getDate(int columnIndex, Calendar cal) throws SQLException {
  3969     public java.sql.Date getDate(int columnIndex, Calendar cal) throws SQLException {
  3962         throw new UnsupportedOperationException();
  3970         throw new UnsupportedOperationException();
  3963     }
  3971     }
  3964 
  3972 
  3965     /**
  3973     /**
  3966      * Retrieves the value of the designated column in the current row
  3974      * Retrieves the value of the designated column in the current row
  3967      * of this <code>CachedRowSetImpl</code> object as a <code>java.sql.Date</code>
  3975      * of this {@code CachedRowSetImpl} object as a {@code java.sql.Date}
  3968      * object, using the given <code>Calendar</code> object to construct an
  3976      * object, using the given {@code Calendar} object to construct an
  3969      * appropriate millisecond value for the date.
  3977      * appropriate millisecond value for the date.
  3970      *
  3978      *
  3971      * @param columnName a <code>String</code> object that must match the
  3979      * @param columnName a {@code String} object that must match the
  3972      *        SQL name of a column in this rowset, ignoring case
  3980      *        SQL name of a column in this rowset, ignoring case
  3973      * @param cal the <code>java.util.Calendar</code> object to use in
  3981      * @param cal the {@code java.util.Calendar} object to use in
  3974      *            constructing the date
  3982      *            constructing the date
  3975      * @return the column value; if the value is SQL <code>NULL</code>,
  3983      * @return the column value; if the value is SQL {@code NULL},
  3976      *         the result is <code>null</code>
  3984      *         the result is {@code null}
  3977      * @throws SQLException if (1) the given column name is not the name of
  3985      * @throws SQLException if (1) the given column name is not the name of
  3978      *            a column in this rowset, (2) the cursor is not on one of
  3986      *            a column in this rowset, (2) the cursor is not on one of
  3979      *            this rowset's rows or its insert row, or (3) the designated
  3987      *            this rowset's rows or its insert row, or (3) the designated
  3980      *            column does not store an SQL <code>DATE</code> or
  3988      *            column does not store an SQL {@code DATE} or
  3981      *            <code>TIMESTAMP</code> value
  3989      *            {@code TIMESTAMP} value
  3982      */
  3990      */
  3983     public java.sql.Date getDate(String columnName, Calendar cal) throws SQLException {
  3991     public java.sql.Date getDate(String columnName, Calendar cal) throws SQLException {
  3984         throw new UnsupportedOperationException();
  3992         throw new UnsupportedOperationException();
  3985     }
  3993     }
  3986 
  3994 
  3987     /**
  3995     /**
  3988      * Retrieves the value of the designated column in the current row
  3996      * Retrieves the value of the designated column in the current row
  3989      * of this <code>CachedRowSetImpl</code> object as a <code>java.sql.Time</code>
  3997      * of this {@code CachedRowSetImpl} object as a {@code java.sql.Time}
  3990      * object, using the given <code>Calendar</code> object to construct an
  3998      * object, using the given {@code Calendar} object to construct an
  3991      * appropriate millisecond value for the date.
  3999      * appropriate millisecond value for the date.
  3992      *
  4000      *
  3993      * @param columnIndex the first column is <code>1</code>, the second
  4001      * @param columnIndex the first column is {@code 1}, the second
  3994      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  4002      *        is {@code 2}, and so on; must be {@code 1} or larger
  3995      *        and equal to or less than the number of columns in the rowset
  4003      *        and equal to or less than the number of columns in the rowset
  3996      * @param cal the <code>java.util.Calendar</code> object to use in
  4004      * @param cal the {@code java.util.Calendar} object to use in
  3997      *            constructing the date
  4005      *            constructing the date
  3998      * @return the column value; if the value is SQL <code>NULL</code>,
  4006      * @return the column value; if the value is SQL {@code NULL},
  3999      *         the result is <code>null</code>
  4007      *         the result is {@code null}
  4000      * @throws SQLException if (1) the given column name is not the name of
  4008      * @throws SQLException if (1) the given column name is not the name of
  4001      *            a column in this rowset, (2) the cursor is not on one of
  4009      *            a column in this rowset, (2) the cursor is not on one of
  4002      *            this rowset's rows or its insert row, or (3) the designated
  4010      *            this rowset's rows or its insert row, or (3) the designated
  4003      *            column does not store an SQL <code>TIME</code> or
  4011      *            column does not store an SQL {@code TIME} or
  4004      *            <code>TIMESTAMP</code> value
  4012      *            {@code TIMESTAMP} value
  4005      */
  4013      */
  4006     public java.sql.Time getTime(int columnIndex, Calendar cal) throws SQLException {
  4014     public java.sql.Time getTime(int columnIndex, Calendar cal) throws SQLException {
  4007         throw new UnsupportedOperationException();
  4015         throw new UnsupportedOperationException();
  4008     }
  4016     }
  4009 
  4017 
  4010     /**
  4018     /**
  4011      * Retrieves the value of the designated column in the current row
  4019      * Retrieves the value of the designated column in the current row
  4012      * of this <code>CachedRowSetImpl</code> object as a <code>java.sql.Time</code>
  4020      * of this {@code CachedRowSetImpl} object as a {@code java.sql.Time}
  4013      * object, using the given <code>Calendar</code> object to construct an
  4021      * object, using the given {@code Calendar} object to construct an
  4014      * appropriate millisecond value for the date.
  4022      * appropriate millisecond value for the date.
  4015      *
  4023      *
  4016      * @param columnName a <code>String</code> object that must match the
  4024      * @param columnName a {@code String} object that must match the
  4017      *        SQL name of a column in this rowset, ignoring case
  4025      *        SQL name of a column in this rowset, ignoring case
  4018      * @param cal the <code>java.util.Calendar</code> object to use in
  4026      * @param cal the {@code java.util.Calendar} object to use in
  4019      *            constructing the date
  4027      *            constructing the date
  4020      * @return the column value; if the value is SQL <code>NULL</code>,
  4028      * @return the column value; if the value is SQL {@code NULL},
  4021      *         the result is <code>null</code>
  4029      *         the result is {@code null}
  4022      * @throws SQLException if (1) the given column name is not the name of
  4030      * @throws SQLException if (1) the given column name is not the name of
  4023      *            a column in this rowset, (2) the cursor is not on one of
  4031      *            a column in this rowset, (2) the cursor is not on one of
  4024      *            this rowset's rows or its insert row, or (3) the designated
  4032      *            this rowset's rows or its insert row, or (3) the designated
  4025      *            column does not store an SQL <code>TIME</code> or
  4033      *            column does not store an SQL {@code TIME} or
  4026      *            <code>TIMESTAMP</code> value
  4034      *            {@code TIMESTAMP} value
  4027      */
  4035      */
  4028     public java.sql.Time getTime(String columnName, Calendar cal) throws SQLException {
  4036     public java.sql.Time getTime(String columnName, Calendar cal) throws SQLException {
  4029         throw new UnsupportedOperationException();
  4037         throw new UnsupportedOperationException();
  4030     }
  4038     }
  4031 
  4039 
  4032     /**
  4040     /**
  4033      * Retrieves the value of the designated column in the current row
  4041      * Retrieves the value of the designated column in the current row
  4034      * of this <code>CachedRowSetImpl</code> object as a <code>java.sql.Timestamp</code>
  4042      * of this {@code CachedRowSetImpl} object as a {@code java.sql.Timestamp}
  4035      * object, using the given <code>Calendar</code> object to construct an
  4043      * object, using the given {@code Calendar} object to construct an
  4036      * appropriate millisecond value for the date.
  4044      * appropriate millisecond value for the date.
  4037      *
  4045      *
  4038      * @param columnIndex the first column is <code>1</code>, the second
  4046      * @param columnIndex the first column is {@code 1}, the second
  4039      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  4047      *        is {@code 2}, and so on; must be {@code 1} or larger
  4040      *        and equal to or less than the number of columns in the rowset
  4048      *        and equal to or less than the number of columns in the rowset
  4041      * @param cal the <code>java.util.Calendar</code> object to use in
  4049      * @param cal the {@code java.util.Calendar} object to use in
  4042      *            constructing the date
  4050      *            constructing the date
  4043      * @return the column value; if the value is SQL <code>NULL</code>,
  4051      * @return the column value; if the value is SQL {@code NULL},
  4044      *         the result is <code>null</code>
  4052      *         the result is {@code null}
  4045      * @throws SQLException if (1) the given column name is not the name of
  4053      * @throws SQLException if (1) the given column name is not the name of
  4046      *            a column in this rowset, (2) the cursor is not on one of
  4054      *            a column in this rowset, (2) the cursor is not on one of
  4047      *            this rowset's rows or its insert row, or (3) the designated
  4055      *            this rowset's rows or its insert row, or (3) the designated
  4048      *            column does not store an SQL <code>TIME</code> or
  4056      *            column does not store an SQL {@code TIME} or
  4049      *            <code>TIMESTAMP</code> value
  4057      *            {@code TIMESTAMP} value
  4050      */
  4058      */
  4051     public java.sql.Timestamp getTimestamp(int columnIndex, Calendar cal) throws SQLException {
  4059     public java.sql.Timestamp getTimestamp(int columnIndex, Calendar cal) throws SQLException {
  4052         throw new UnsupportedOperationException();
  4060         throw new UnsupportedOperationException();
  4053     }
  4061     }
  4054 
  4062 
  4055     /**
  4063     /**
  4056      * Retrieves the value of the designated column in the current row
  4064      * Retrieves the value of the designated column in the current row
  4057      * of this <code>CachedRowSetImpl</code> object as a
  4065      * of this {@code CachedRowSetImpl} object as a
  4058      * <code>java.sql.Timestamp</code> object, using the given
  4066      * {@code java.sql.Timestamp} object, using the given
  4059      * <code>Calendar</code> object to construct an appropriate
  4067      * {@code Calendar} object to construct an appropriate
  4060      * millisecond value for the date.
  4068      * millisecond value for the date.
  4061      *
  4069      *
  4062      * @param columnName a <code>String</code> object that must match the
  4070      * @param columnName a {@code String} object that must match the
  4063      *        SQL name of a column in this rowset, ignoring case
  4071      *        SQL name of a column in this rowset, ignoring case
  4064      * @param cal the <code>java.util.Calendar</code> object to use in
  4072      * @param cal the {@code java.util.Calendar} object to use in
  4065      *            constructing the date
  4073      *            constructing the date
  4066      * @return the column value; if the value is SQL <code>NULL</code>,
  4074      * @return the column value; if the value is SQL {@code NULL},
  4067      *         the result is <code>null</code>
  4075      *         the result is {@code null}
  4068      * @throws SQLException if (1) the given column name is not the name of
  4076      * @throws SQLException if (1) the given column name is not the name of
  4069      *            a column in this rowset, (2) the cursor is not on one of
  4077      *            a column in this rowset, (2) the cursor is not on one of
  4070      *            this rowset's rows or its insert row, or (3) the designated
  4078      *            this rowset's rows or its insert row, or (3) the designated
  4071      *            column does not store an SQL <code>DATE</code>,
  4079      *            column does not store an SQL {@code DATE},
  4072      *            <code>TIME</code>, or <code>TIMESTAMP</code> value
  4080      *            {@code TIME}, or {@code TIMESTAMP} value
  4073      */
  4081      */
  4074     public java.sql.Timestamp getTimestamp(String columnName, Calendar cal) throws SQLException {
  4082     public java.sql.Timestamp getTimestamp(String columnName, Calendar cal) throws SQLException {
  4075         throw new UnsupportedOperationException();
  4083         throw new UnsupportedOperationException();
  4076     }
  4084     }
  4077 
  4085 
  4078     /*
  4086     /*
  4079      * RowSetInternal Interface
  4087      * RowSetInternal Interface
  4080      */
  4088      */
  4081 
  4089 
  4082     /**
  4090     /**
  4083      * Retrieves the <code>Connection</code> object passed to this
  4091      * Retrieves the {@code Connection} object passed to this
  4084      * <code>CachedRowSetImpl</code> object.  This connection may be
  4092      * {@code CachedRowSetImpl} object.  This connection may be
  4085      * used to populate this rowset with data or to write data back
  4093      * used to populate this rowset with data or to write data back
  4086      * to its underlying data source.
  4094      * to its underlying data source.
  4087      *
  4095      *
  4088      * @return the <code>Connection</code> object passed to this rowset;
  4096      * @return the {@code Connection} object passed to this rowset;
  4089      *         may be <code>null</code> if there is no connection
  4097      *         may be {@code null} if there is no connection
  4090      * @throws SQLException if an error occurs
  4098      * @throws SQLException if an error occurs
  4091      */
  4099      */
  4092     public Connection getConnection() throws SQLException{
  4100     public Connection getConnection() throws SQLException{
  4093         throw new UnsupportedOperationException();
  4101         throw new UnsupportedOperationException();
  4094     }
  4102     }
  4095 
  4103 
  4096     /**
  4104     /**
  4097      * Sets the metadata for this <code>CachedRowSetImpl</code> object
  4105      * Sets the metadata for this {@code CachedRowSetImpl} object
  4098      * with the given <code>RowSetMetaData</code> object.
  4106      * with the given {@code RowSetMetaData} object.
  4099      *
  4107      *
  4100      * @param md a <code>RowSetMetaData</code> object instance containing
  4108      * @param md a {@code RowSetMetaData} object instance containing
  4101      *            metadata about the columsn in the rowset
  4109      *            metadata about the columsn in the rowset
  4102      * @throws SQLException if invalid meta data is supplied to the
  4110      * @throws SQLException if invalid meta data is supplied to the
  4103      *            rowset
  4111      *            rowset
  4104      */
  4112      */
  4105     public void setMetaData(RowSetMetaData md) throws SQLException {
  4113     public void setMetaData(RowSetMetaData md) throws SQLException {
  4106         throw new UnsupportedOperationException();
  4114         throw new UnsupportedOperationException();
  4107     }
  4115     }
  4108 
  4116 
  4109     /**
  4117     /**
  4110      * Returns a result set containing the original value of the rowset. The
  4118      * Returns a result set containing the original value of the rowset. The
  4111      * original value is the state of the <code>CachedRowSetImpl</code> after the
  4119      * original value is the state of the {@code CachedRowSetImpl} after the
  4112      * last population or synchronization (whichever occurred most recently) with
  4120      * last population or synchronization (whichever occurred most recently) with
  4113      * the data source.
  4121      * the data source.
  4114      * <p>
  4122      * <p>
  4115      * The cursor is positioned before the first row in the result set.
  4123      * The cursor is positioned before the first row in the result set.
  4116      * Only rows contained in the result set returned by <code>getOriginal()</code>
  4124      * Only rows contained in the result set returned by {@code getOriginal()}
  4117      * are said to have an original value.
  4125      * are said to have an original value.
  4118      *
  4126      *
  4119      * @return the original result set of the rowset
  4127      * @return the original result set of the rowset
  4120      * @throws SQLException if an error occurs produce the
  4128      * @throws SQLException if an error occurs produce the
  4121      *           <code>ResultSet</code> object
  4129      *           {@code ResultSet} object
  4122      */
  4130      */
  4123     public ResultSet getOriginal() throws SQLException {
  4131     public ResultSet getOriginal() throws SQLException {
  4124        throw new UnsupportedOperationException();
  4132        throw new UnsupportedOperationException();
  4125     }
  4133     }
  4126 
  4134 
  4127     /**
  4135     /**
  4128      * Returns a result set containing the original value of the current
  4136      * Returns a result set containing the original value of the current
  4129      * row only.
  4137      * row only.
  4130      * The original value is the state of the <code>CachedRowSetImpl</code> after
  4138      * The original value is the state of the {@code CachedRowSetImpl} after
  4131      * the last population or synchronization (whichever occurred most recently)
  4139      * the last population or synchronization (whichever occurred most recently)
  4132      * with the data source.
  4140      * with the data source.
  4133      *
  4141      *
  4134      * @return the original result set of the row
  4142      * @return the original result set of the row
  4135      * @throws SQLException if there is no current row
  4143      * @throws SQLException if there is no current row
  4151     }
  4159     }
  4152 
  4160 
  4153     /**
  4161     /**
  4154      * Marks all rows in this rowset as being original rows. Any updates
  4162      * Marks all rows in this rowset as being original rows. Any updates
  4155      * made to the rows become the original values for the rowset.
  4163      * made to the rows become the original values for the rowset.
  4156      * Calls to the method <code>setOriginal</code> connot be reversed.
  4164      * Calls to the method {@code setOriginal} connot be reversed.
  4157      *
  4165      *
  4158      * @throws SQLException if an error occurs
  4166      * @throws SQLException if an error occurs
  4159      */
  4167      */
  4160     public void setOriginal() throws SQLException {
  4168     public void setOriginal() throws SQLException {
  4161         throw new UnsupportedOperationException();
  4169         throw new UnsupportedOperationException();
  4163 
  4171 
  4164     /**
  4172     /**
  4165      * Returns an identifier for the object (table) that was used to create this
  4173      * Returns an identifier for the object (table) that was used to create this
  4166      * rowset.
  4174      * rowset.
  4167      *
  4175      *
  4168      * @return a <code>String</code> object that identifies the table from
  4176      * @return a {@code String} object that identifies the table from
  4169      *         which this <code>CachedRowSetImpl</code> object was derived
  4177      *         which this {@code CachedRowSetImpl} object was derived
  4170      * @throws SQLException if an error occurs
  4178      * @throws SQLException if an error occurs
  4171      */
  4179      */
  4172     public String getTableName() throws SQLException {
  4180     public String getTableName() throws SQLException {
  4173         throw new UnsupportedOperationException();
  4181         throw new UnsupportedOperationException();
  4174     }
  4182     }
  4175 
  4183 
  4176     /**
  4184     /**
  4177      * Sets the identifier for the table from which this rowset was derived
  4185      * Sets the identifier for the table from which this rowset was derived
  4178      * to the given table name.
  4186      * to the given table name.
  4179      *
  4187      *
  4180      * @param tabName a <code>String</code> object that identifies the
  4188      * @param tabName a {@code String} object that identifies the
  4181      *          table from which this <code>CachedRowSetImpl</code> object
  4189      *          table from which this {@code CachedRowSetImpl} object
  4182      *          was derived
  4190      *          was derived
  4183      * @throws SQLException if an error occurs
  4191      * @throws SQLException if an error occurs
  4184      */
  4192      */
  4185     public void setTableName(String tabName) throws SQLException {
  4193     public void setTableName(String tabName) throws SQLException {
  4186         throw new UnsupportedOperationException();
  4194         throw new UnsupportedOperationException();
  4187     }
  4195     }
  4188 
  4196 
  4189     /**
  4197     /**
  4190      * Returns the columns that make a key to uniquely identify a
  4198      * Returns the columns that make a key to uniquely identify a
  4191      * row in this <code>CachedRowSetImpl</code> object.
  4199      * row in this {@code CachedRowSetImpl} object.
  4192      *
  4200      *
  4193      * @return an array of column numbers that constitutes a primary
  4201      * @return an array of column numbers that constitutes a primary
  4194      *           key for this rowset. This array should be empty
  4202      *           key for this rowset. This array should be empty
  4195      *           if no column is representitive of a primary key
  4203      *           if no column is representitive of a primary key
  4196      * @throws SQLException if the rowset is empty or no columns
  4204      * @throws SQLException if the rowset is empty or no columns
  4201         throw new UnsupportedOperationException();
  4209         throw new UnsupportedOperationException();
  4202     }
  4210     }
  4203 
  4211 
  4204 
  4212 
  4205     /**
  4213     /**
  4206      * Sets this <code>CachedRowSetImpl</code> object's
  4214      * Sets this {@code CachedRowSetImpl} object's
  4207      * <code>keyCols</code> field with the given array of column
  4215      * {@code keyCols} field with the given array of column
  4208      * numbers, which forms a key for uniquely identifying a row
  4216      * numbers, which forms a key for uniquely identifying a row
  4209      * in this rowset.
  4217      * in this rowset.
  4210      *
  4218      *
  4211      * @param keys an array of <code>int</code> indicating the
  4219      * @param keys an array of {@code int} indicating the
  4212      *        columns that form a primary key for this
  4220      *        columns that form a primary key for this
  4213      *        <code>CachedRowSetImpl</code> object; every
  4221      *        {@code CachedRowSetImpl} object; every
  4214      *        element in the array must be greater than
  4222      *        element in the array must be greater than
  4215      *        <code>0</code> and less than or equal to the number
  4223      *        {@code 0} and less than or equal to the number
  4216      *        of columns in this rowset
  4224      *        of columns in this rowset
  4217      * @throws SQLException if any of the numbers in the
  4225      * @throws SQLException if any of the numbers in the
  4218      *            given array is not valid for this rowset
  4226      *            given array is not valid for this rowset
  4219      * @see #getKeyColumns
  4227      * @see #getKeyColumns
  4220      */
  4228      */
  4222         throw new UnsupportedOperationException();
  4230         throw new UnsupportedOperationException();
  4223     }
  4231     }
  4224 
  4232 
  4225     /**
  4233     /**
  4226      * Sets the designated column in either the current row or the insert
  4234      * Sets the designated column in either the current row or the insert
  4227      * row of this <code>CachedRowSetImpl</code> object with the given
  4235      * row of this {@code CachedRowSetImpl} object with the given
  4228      * <code>double</code> value.
  4236      * {@code double} value.
  4229      *
  4237      *
  4230      * This method updates a column value in either the current row or
  4238      * This method updates a column value in either the current row or
  4231      * the insert row of this rowset, but it does not update the
  4239      * the insert row of this rowset, but it does not update the
  4232      * database.  If the cursor is on a row in the rowset, the
  4240      * database.  If the cursor is on a row in the rowset, the
  4233      * method {@link #updateRow} must be called to update the database.
  4241      * method {@link #updateRow} must be called to update the database.
  4234      * If the cursor is on the insert row, the method {@link #insertRow}
  4242      * If the cursor is on the insert row, the method {@link #insertRow}
  4235      * must be called, which will insert the new row into both this rowset
  4243      * must be called, which will insert the new row into both this rowset
  4236      * and the database. Both of these methods must be called before the
  4244      * and the database. Both of these methods must be called before the
  4237      * cursor moves to another row.
  4245      * cursor moves to another row.
  4238      *
  4246      *
  4239      * @param columnIndex the first column is <code>1</code>, the second
  4247      * @param columnIndex the first column is {@code 1}, the second
  4240      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  4248      *        is {@code 2}, and so on; must be {@code 1} or larger
  4241      *        and equal to or less than the number of columns in this rowset
  4249      *        and equal to or less than the number of columns in this rowset
  4242      * @param ref the new column <code>java.sql.Ref</code> value
  4250      * @param ref the new column {@code java.sql.Ref} value
  4243      * @throws SQLException if (1) the given column index is out of bounds,
  4251      * @throws SQLException if (1) the given column index is out of bounds,
  4244      *        (2) the cursor is not on one of this rowset's rows or its
  4252      *        (2) the cursor is not on one of this rowset's rows or its
  4245      *        insert row, or (3) this rowset is
  4253      *        insert row, or (3) this rowset is
  4246      *        <code>ResultSet.CONCUR_READ_ONLY</code>
  4254      *        {@code ResultSet.CONCUR_READ_ONLY}
  4247      */
  4255      */
  4248     public void updateRef(int columnIndex, java.sql.Ref ref) throws SQLException {
  4256     public void updateRef(int columnIndex, java.sql.Ref ref) throws SQLException {
  4249         throw new UnsupportedOperationException();
  4257         throw new UnsupportedOperationException();
  4250     }
  4258     }
  4251 
  4259 
  4252     /**
  4260     /**
  4253      * Sets the designated column in either the current row or the insert
  4261      * Sets the designated column in either the current row or the insert
  4254      * row of this <code>CachedRowSetImpl</code> object with the given
  4262      * row of this {@code CachedRowSetImpl} object with the given
  4255      * <code>double</code> value.
  4263      * {@code double} value.
  4256      *
  4264      *
  4257      * This method updates a column value in either the current row or
  4265      * This method updates a column value in either the current row or
  4258      * the insert row of this rowset, but it does not update the
  4266      * the insert row of this rowset, but it does not update the
  4259      * database.  If the cursor is on a row in the rowset, the
  4267      * database.  If the cursor is on a row in the rowset, the
  4260      * method {@link #updateRow} must be called to update the database.
  4268      * method {@link #updateRow} must be called to update the database.
  4261      * If the cursor is on the insert row, the method {@link #insertRow}
  4269      * If the cursor is on the insert row, the method {@link #insertRow}
  4262      * must be called, which will insert the new row into both this rowset
  4270      * must be called, which will insert the new row into both this rowset
  4263      * and the database. Both of these methods must be called before the
  4271      * and the database. Both of these methods must be called before the
  4264      * cursor moves to another row.
  4272      * cursor moves to another row.
  4265      *
  4273      *
  4266      * @param columnName a <code>String</code> object that must match the
  4274      * @param columnName a {@code String} object that must match the
  4267      *        SQL name of a column in this rowset, ignoring case
  4275      *        SQL name of a column in this rowset, ignoring case
  4268      * @param ref the new column <code>java.sql.Ref</code> value
  4276      * @param ref the new column {@code java.sql.Ref} value
  4269      * @throws SQLException if (1) the given column name does not match the
  4277      * @throws SQLException if (1) the given column name does not match the
  4270      *        name of a column in this rowset, (2) the cursor is not on
  4278      *        name of a column in this rowset, (2) the cursor is not on
  4271      *        one of this rowset's rows or its insert row, or (3) this
  4279      *        one of this rowset's rows or its insert row, or (3) this
  4272      *        rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  4280      *        rowset is {@code ResultSet.CONCUR_READ_ONLY}
  4273      */
  4281      */
  4274     public void updateRef(String columnName, java.sql.Ref ref) throws SQLException {
  4282     public void updateRef(String columnName, java.sql.Ref ref) throws SQLException {
  4275         throw new UnsupportedOperationException();
  4283         throw new UnsupportedOperationException();
  4276     }
  4284     }
  4277 
  4285 
  4278     /**
  4286     /**
  4279      * Sets the designated column in either the current row or the insert
  4287      * Sets the designated column in either the current row or the insert
  4280      * row of this <code>CachedRowSetImpl</code> object with the given
  4288      * row of this {@code CachedRowSetImpl} object with the given
  4281      * <code>double</code> value.
  4289      * {@code double} value.
  4282      *
  4290      *
  4283      * This method updates a column value in either the current row or
  4291      * This method updates a column value in either the current row or
  4284      * the insert row of this rowset, but it does not update the
  4292      * the insert row of this rowset, but it does not update the
  4285      * database.  If the cursor is on a row in the rowset, the
  4293      * database.  If the cursor is on a row in the rowset, the
  4286      * method {@link #updateRow} must be called to update the database.
  4294      * method {@link #updateRow} must be called to update the database.
  4287      * If the cursor is on the insert row, the method {@link #insertRow}
  4295      * If the cursor is on the insert row, the method {@link #insertRow}
  4288      * must be called, which will insert the new row into both this rowset
  4296      * must be called, which will insert the new row into both this rowset
  4289      * and the database. Both of these methods must be called before the
  4297      * and the database. Both of these methods must be called before the
  4290      * cursor moves to another row.
  4298      * cursor moves to another row.
  4291      *
  4299      *
  4292      * @param columnIndex the first column is <code>1</code>, the second
  4300      * @param columnIndex the first column is {@code 1}, the second
  4293      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  4301      *        is {@code 2}, and so on; must be {@code 1} or larger
  4294      *        and equal to or less than the number of columns in this rowset
  4302      *        and equal to or less than the number of columns in this rowset
  4295      * @param c the new column <code>Clob value
  4303      * @param c the new column {@code Clob} value
  4296      * @throws SQLException if (1) the given column index is out of bounds,
  4304      * @throws SQLException if (1) the given column index is out of bounds,
  4297      *        (2) the cursor is not on one of this rowset's rows or its
  4305      *        (2) the cursor is not on one of this rowset's rows or its
  4298      *        insert row, or (3) this rowset is
  4306      *        insert row, or (3) this rowset is
  4299      *        <code>ResultSet.CONCUR_READ_ONLY</code>
  4307      *        {@code ResultSet.CONCUR_READ_ONLY}
  4300      */
  4308      */
  4301     public void updateClob(int columnIndex, Clob c) throws SQLException {
  4309     public void updateClob(int columnIndex, Clob c) throws SQLException {
  4302        throw new UnsupportedOperationException();
  4310        throw new UnsupportedOperationException();
  4303     }
  4311     }
  4304 
  4312 
  4305     /**
  4313     /**
  4306      * Sets the designated column in either the current row or the insert
  4314      * Sets the designated column in either the current row or the insert
  4307      * row of this <code>CachedRowSetImpl</code> object with the given
  4315      * row of this {@code CachedRowSetImpl} object with the given
  4308      * <code>double</code> value.
  4316      * {@code double} value.
  4309      *
  4317      *
  4310      * This method updates a column value in either the current row or
  4318      * This method updates a column value in either the current row or
  4311      * the insert row of this rowset, but it does not update the
  4319      * the insert row of this rowset, but it does not update the
  4312      * database.  If the cursor is on a row in the rowset, the
  4320      * database.  If the cursor is on a row in the rowset, the
  4313      * method {@link #updateRow} must be called to update the database.
  4321      * method {@link #updateRow} must be called to update the database.
  4314      * If the cursor is on the insert row, the method {@link #insertRow}
  4322      * If the cursor is on the insert row, the method {@link #insertRow}
  4315      * must be called, which will insert the new row into both this rowset
  4323      * must be called, which will insert the new row into both this rowset
  4316      * and the database. Both of these methods must be called before the
  4324      * and the database. Both of these methods must be called before the
  4317      * cursor moves to another row.
  4325      * cursor moves to another row.
  4318      *
  4326      *
  4319      * @param columnName a <code>String</code> object that must match the
  4327      * @param columnName a {@code String} object that must match the
  4320      *        SQL name of a column in this rowset, ignoring case
  4328      *        SQL name of a column in this rowset, ignoring case
  4321      * @param c the new column <code>Clob</code>value
  4329      * @param c the new column {@code Clob}value
  4322      * @throws SQLException if (1) the given column name does not match the
  4330      * @throws SQLException if (1) the given column name does not match the
  4323      *            name of a column in this rowset, (2) the cursor is not on
  4331      *            name of a column in this rowset, (2) the cursor is not on
  4324      *            one of this rowset's rows or its insert row, or (3) this
  4332      *            one of this rowset's rows or its insert row, or (3) this
  4325      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  4333      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  4326      */
  4334      */
  4327     public void updateClob(String columnName, Clob c) throws SQLException {
  4335     public void updateClob(String columnName, Clob c) throws SQLException {
  4328         throw new UnsupportedOperationException();
  4336         throw new UnsupportedOperationException();
  4329     }
  4337     }
  4330 
  4338 
  4331     /**
  4339     /**
  4332      * Sets the designated column in either the current row or the insert
  4340      * Sets the designated column in either the current row or the insert
  4333      * row of this <code>CachedRowSetImpl</code> object with the given
  4341      * row of this {@code CachedRowSetImpl} object with the given
  4334      * <code>java.sql.Blob</code> value.
  4342      * {@code java.sql.Blob} value.
  4335      *
  4343      *
  4336      * This method updates a column value in either the current row or
  4344      * This method updates a column value in either the current row or
  4337      * the insert row of this rowset, but it does not update the
  4345      * the insert row of this rowset, but it does not update the
  4338      * database.  If the cursor is on a row in the rowset, the
  4346      * database.  If the cursor is on a row in the rowset, the
  4339      * method {@link #updateRow} must be called to update the database.
  4347      * method {@link #updateRow} must be called to update the database.
  4340      * If the cursor is on the insert row, the method {@link #insertRow}
  4348      * If the cursor is on the insert row, the method {@link #insertRow}
  4341      * must be called, which will insert the new row into both this rowset
  4349      * must be called, which will insert the new row into both this rowset
  4342      * and the database. Both of these methods must be called before the
  4350      * and the database. Both of these methods must be called before the
  4343      * cursor moves to another row.
  4351      * cursor moves to another row.
  4344      *
  4352      *
  4345      * @param columnIndex the first column is <code>1</code>, the second
  4353      * @param columnIndex the first column is {@code 1}, the second
  4346      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  4354      *        is {@code 2}, and so on; must be {@code 1} or larger
  4347      *        and equal to or less than the number of columns in this rowset
  4355      *        and equal to or less than the number of columns in this rowset
  4348      * @param b the new column <code>Blob</code> value
  4356      * @param b the new column {@code Blob} value
  4349      * @throws SQLException if (1) the given column index is out of bounds,
  4357      * @throws SQLException if (1) the given column index is out of bounds,
  4350      *            (2) the cursor is not on one of this rowset's rows or its
  4358      *            (2) the cursor is not on one of this rowset's rows or its
  4351      *            insert row, or (3) this rowset is
  4359      *            insert row, or (3) this rowset is
  4352      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  4360      *            {@code ResultSet.CONCUR_READ_ONLY}
  4353      */
  4361      */
  4354     public void updateBlob(int columnIndex, Blob b) throws SQLException {
  4362     public void updateBlob(int columnIndex, Blob b) throws SQLException {
  4355        throw new UnsupportedOperationException();
  4363        throw new UnsupportedOperationException();
  4356     }
  4364     }
  4357 
  4365 
  4358     /**
  4366     /**
  4359      * Sets the designated column in either the current row or the insert
  4367      * Sets the designated column in either the current row or the insert
  4360      * row of this <code>CachedRowSetImpl</code> object with the given
  4368      * row of this {@code CachedRowSetImpl} object with the given
  4361      * <code>java.sql.Blob </code> value.
  4369      * {@code java.sql.Blob } value.
  4362      *
  4370      *
  4363      * This method updates a column value in either the current row or
  4371      * This method updates a column value in either the current row or
  4364      * the insert row of this rowset, but it does not update the
  4372      * the insert row of this rowset, but it does not update the
  4365      * database.  If the cursor is on a row in the rowset, the
  4373      * database.  If the cursor is on a row in the rowset, the
  4366      * method {@link #updateRow} must be called to update the database.
  4374      * method {@link #updateRow} must be called to update the database.
  4367      * If the cursor is on the insert row, the method {@link #insertRow}
  4375      * If the cursor is on the insert row, the method {@link #insertRow}
  4368      * must be called, which will insert the new row into both this rowset
  4376      * must be called, which will insert the new row into both this rowset
  4369      * and the database. Both of these methods must be called before the
  4377      * and the database. Both of these methods must be called before the
  4370      * cursor moves to another row.
  4378      * cursor moves to another row.
  4371      *
  4379      *
  4372      * @param columnName a <code>String</code> object that must match the
  4380      * @param columnName a {@code String} object that must match the
  4373      *        SQL name of a column in this rowset, ignoring case
  4381      *        SQL name of a column in this rowset, ignoring case
  4374      * @param b the new column <code>Blob</code> value
  4382      * @param b the new column {@code Blob} value
  4375      * @throws SQLException if (1) the given column name does not match the
  4383      * @throws SQLException if (1) the given column name does not match the
  4376      *            name of a column in this rowset, (2) the cursor is not on
  4384      *            name of a column in this rowset, (2) the cursor is not on
  4377      *            one of this rowset's rows or its insert row, or (3) this
  4385      *            one of this rowset's rows or its insert row, or (3) this
  4378      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  4386      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  4379      */
  4387      */
  4380     public void updateBlob(String columnName, Blob b) throws SQLException {
  4388     public void updateBlob(String columnName, Blob b) throws SQLException {
  4381         throw new UnsupportedOperationException();
  4389         throw new UnsupportedOperationException();
  4382     }
  4390     }
  4383 
  4391 
  4384     /**
  4392     /**
  4385      * Sets the designated column in either the current row or the insert
  4393      * Sets the designated column in either the current row or the insert
  4386      * row of this <code>CachedRowSetImpl</code> object with the given
  4394      * row of this {@code CachedRowSetImpl} object with the given
  4387      * <code>java.sql.Array</code> values.
  4395      * {@code java.sql.Array} values.
  4388      *
  4396      *
  4389      * This method updates a column value in either the current row or
  4397      * This method updates a column value in either the current row or
  4390      * the insert row of this rowset, but it does not update the
  4398      * the insert row of this rowset, but it does not update the
  4391      * database.  If the cursor is on a row in the rowset, the
  4399      * database.  If the cursor is on a row in the rowset, the
  4392      * method {@link #updateRow} must be called to update the database.
  4400      * method {@link #updateRow} must be called to update the database.
  4393      * If the cursor is on the insert row, the method {@link #insertRow}
  4401      * If the cursor is on the insert row, the method {@link #insertRow}
  4394      * must be called, which will insert the new row into both this rowset
  4402      * must be called, which will insert the new row into both this rowset
  4395      * and the database. Both of these methods must be called before the
  4403      * and the database. Both of these methods must be called before the
  4396      * cursor moves to another row.
  4404      * cursor moves to another row.
  4397      *
  4405      *
  4398      * @param columnIndex the first column is <code>1</code>, the second
  4406      * @param columnIndex the first column is {@code 1}, the second
  4399      *        is <code>2</code>, and so on; must be <code>1</code> or larger
  4407      *        is {@code 2}, and so on; must be {@code 1} or larger
  4400      *        and equal to or less than the number of columns in this rowset
  4408      *        and equal to or less than the number of columns in this rowset
  4401      * @param a the new column <code>Array</code> value
  4409      * @param a the new column {@code Array} value
  4402      * @throws SQLException if (1) the given column index is out of bounds,
  4410      * @throws SQLException if (1) the given column index is out of bounds,
  4403      *            (2) the cursor is not on one of this rowset's rows or its
  4411      *            (2) the cursor is not on one of this rowset's rows or its
  4404      *            insert row, or (3) this rowset is
  4412      *            insert row, or (3) this rowset is
  4405      *            <code>ResultSet.CONCUR_READ_ONLY</code>
  4413      *            {@code ResultSet.CONCUR_READ_ONLY}
  4406      */
  4414      */
  4407     public void updateArray(int columnIndex, Array a) throws SQLException {
  4415     public void updateArray(int columnIndex, Array a) throws SQLException {
  4408         throw new UnsupportedOperationException();
  4416         throw new UnsupportedOperationException();
  4409     }
  4417     }
  4410 
  4418 
  4411     /**
  4419     /**
  4412      * Sets the designated column in either the current row or the insert
  4420      * Sets the designated column in either the current row or the insert
  4413      * row of this <code>CachedRowSetImpl</code> object with the given
  4421      * row of this {@code CachedRowSetImpl} object with the given
  4414      * <code>java.sql.Array</code> value.
  4422      * {@code java.sql.Array} value.
  4415      *
  4423      *
  4416      * This method updates a column value in either the current row or
  4424      * This method updates a column value in either the current row or
  4417      * the insert row of this rowset, but it does not update the
  4425      * the insert row of this rowset, but it does not update the
  4418      * database.  If the cursor is on a row in the rowset, the
  4426      * database.  If the cursor is on a row in the rowset, the
  4419      * method {@link #updateRow} must be called to update the database.
  4427      * method {@link #updateRow} must be called to update the database.
  4420      * If the cursor is on the insert row, the method {@link #insertRow}
  4428      * If the cursor is on the insert row, the method {@link #insertRow}
  4421      * must be called, which will insert the new row into both this rowset
  4429      * must be called, which will insert the new row into both this rowset
  4422      * and the database. Both of these methods must be called before the
  4430      * and the database. Both of these methods must be called before the
  4423      * cursor moves to another row.
  4431      * cursor moves to another row.
  4424      *
  4432      *
  4425      * @param columnName a <code>String</code> object that must match the
  4433      * @param columnName a {@code String} object that must match the
  4426      *        SQL name of a column in this rowset, ignoring case
  4434      *        SQL name of a column in this rowset, ignoring case
  4427      * @param a the new column <code>Array</code> value
  4435      * @param a the new column {@code Array} value
  4428      * @throws SQLException if (1) the given column name does not match the
  4436      * @throws SQLException if (1) the given column name does not match the
  4429      *            name of a column in this rowset, (2) the cursor is not on
  4437      *            name of a column in this rowset, (2) the cursor is not on
  4430      *            one of this rowset's rows or its insert row, or (3) this
  4438      *            one of this rowset's rows or its insert row, or (3) this
  4431      *            rowset is <code>ResultSet.CONCUR_READ_ONLY</code>
  4439      *            rowset is {@code ResultSet.CONCUR_READ_ONLY}
  4432      */
  4440      */
  4433     public void updateArray(String columnName, Array a) throws SQLException {
  4441     public void updateArray(String columnName, Array a) throws SQLException {
  4434         throw new UnsupportedOperationException();
  4442         throw new UnsupportedOperationException();
  4435     }
  4443     }
  4436 
  4444 
  4437 
  4445 
  4438     /**
  4446     /**
  4439      * Retrieves the value of the designated column in this
  4447      * Retrieves the value of the designated column in this
  4440      * <code>CachedRowSetImpl</code> object as a <code>java.net.URL</code> object
  4448      * {@code CachedRowSetImpl} object as a {@code java.net.URL} object
  4441      * in the Java programming language.
  4449      * in the Java programming language.
  4442      *
  4450      *
  4443      * @return a java.net.URL object containing the resource reference described by
  4451      * @return a java.net.URL object containing the resource reference described by
  4444      * the URL
  4452      * the URL
  4445      * @throws SQLException if (1) the given column index is out of bounds,
  4453      * @throws SQLException if (1) the given column index is out of bounds,
  4446      * (2) the cursor is not on one of this rowset's rows or its
  4454      * (2) the cursor is not on one of this rowset's rows or its
  4447      * insert row, or (3) the designated column does not store an
  4455      * insert row, or (3) the designated column does not store an
  4448      * SQL <code>DATALINK</code> value.
  4456      * SQL {@code DATALINK} value.
  4449      * @see #getURL(String)
  4457      * @see #getURL(String)
  4450      */
  4458      */
  4451     public java.net.URL getURL(int columnIndex) throws SQLException {
  4459     public java.net.URL getURL(int columnIndex) throws SQLException {
  4452         throw new UnsupportedOperationException();
  4460         throw new UnsupportedOperationException();
  4453     }
  4461     }
  4454 
  4462 
  4455     /**
  4463     /**
  4456      * Retrieves the value of the designated column in this
  4464      * Retrieves the value of the designated column in this
  4457      * <code>CachedRowSetImpl</code> object as a <code>java.net.URL</code> object
  4465      * {@code CachedRowSetImpl} object as a {@code java.net.URL} object
  4458      * in the Java programming language.
  4466      * in the Java programming language.
  4459      *
  4467      *
  4460      * @return a java.net.URL object containing the resource reference described by
  4468      * @return a java.net.URL object containing the resource reference described by
  4461      * the URL
  4469      * the URL
  4462      * @throws SQLException if (1) the given column name not the name of a column
  4470      * @throws SQLException if (1) the given column name not the name of a column
  4463      * in this rowset, or
  4471      * in this rowset, or
  4464      * (2) the cursor is not on one of this rowset's rows or its
  4472      * (2) the cursor is not on one of this rowset's rows or its
  4465      * insert row, or (3) the designated column does not store an
  4473      * insert row, or (3) the designated column does not store an
  4466      * SQL <code>DATALINK</code> value.
  4474      * SQL {@code DATALINK} value.
  4467      * @see #getURL(int)
  4475      * @see #getURL(int)
  4468      */
  4476      */
  4469     public java.net.URL getURL(String columnName) throws SQLException {
  4477     public java.net.URL getURL(String columnName) throws SQLException {
  4470         throw new UnsupportedOperationException();
  4478         throw new UnsupportedOperationException();
  4471 
  4479 
  4472     }
  4480     }
  4473 
  4481 
  4474     /**
  4482     /**
  4475      * The first warning reported by calls on this <code>CachedRowSetImpl</code>
  4483      * The first warning reported by calls on this {@code CachedRowSetImpl}
  4476      * object is returned. Subsequent <code>CachedRowSetImpl</code> warnings will
  4484      * object is returned. Subsequent {@code CachedRowSetImpl} warnings will
  4477      * be chained to this <code>SQLWarning</code>. All <code>RowSetWarnings</code>
  4485      * be chained to this {@code SQLWarning}. All {@code RowSetWarnings}
  4478      * warnings are generated in the disconnected environment and remain a
  4486      * warnings are generated in the disconnected environment and remain a
  4479      * seperate warning chain to that provided by the <code>getWarnings</code>
  4487      * seperate warning chain to that provided by the {@code getWarnings}
  4480      * method.
  4488      * method.
  4481      *
  4489      *
  4482      * <P>The warning chain is automatically cleared each time a new
  4490      * <P>The warning chain is automatically cleared each time a new
  4483      * row is read.
  4491      * row is read.
  4484      *
  4492      *
  4485      * <P><B>Note:</B> This warning chain only covers warnings caused
  4493      * <P><B>Note:</B> This warning chain only covers warnings caused
  4486      * by <code>CachedRowSet</code> (and their child interface)
  4494      * by {@code CachedRowSet} (and their child interface)
  4487      * methods. All <code>SQLWarnings</code> can be obtained using the
  4495      * methods. All {@code SQLWarnings} can be obtained using the
  4488      * <code>getWarnings</code> method which tracks warnings generated
  4496      * {@code getWarnings} method which tracks warnings generated
  4489      * by the underlying JDBC driver.
  4497      * by the underlying JDBC driver.
  4490      * @return the first SQLWarning or null
  4498      * @return the first SQLWarning or null
  4491      *
  4499      *
  4492      */
  4500      */
  4493     public RowSetWarning getRowSetWarnings() {
  4501     public RowSetWarning getRowSetWarnings() {
  4494         throw new UnsupportedOperationException();
  4502         throw new UnsupportedOperationException();
  4495     }
  4503     }
  4496 
  4504 
  4497      /**
  4505      /**
  4498      * Commits all changes performed by the <code>acceptChanges()</code>
  4506      * Commits all changes performed by the {@code acceptChanges()}
  4499      * methods
  4507      * methods
  4500      *
  4508      *
  4501      * @see java.sql.Connection#commit
  4509      * @see java.sql.Connection#commit
  4502      */
  4510      */
  4503     public void commit() throws SQLException {
  4511     public void commit() throws SQLException {
  4504         throw new UnsupportedOperationException();
  4512         throw new UnsupportedOperationException();
  4505     }
  4513     }
  4506 
  4514 
  4507     /**
  4515     /**
  4508      * Rolls back all changes performed by the <code>acceptChanges()</code>
  4516      * Rolls back all changes performed by the {@code acceptChanges()}
  4509      * methods
  4517      * methods
  4510      *
  4518      *
  4511      * @see java.sql.Connection#rollback
  4519      * @see java.sql.Connection#rollback
  4512      */
  4520      */
  4513     public void rollback() throws SQLException {
  4521     public void rollback() throws SQLException {
  4514         throw new UnsupportedOperationException();
  4522         throw new UnsupportedOperationException();
  4515     }
  4523     }
  4516 
  4524 
  4517     /**
  4525     /**
  4518      * Rolls back all changes performed by the <code>acceptChanges()</code>
  4526      * Rolls back all changes performed by the {@code acceptChanges()}
  4519      * to the last <code>Savepoint</code> transaction marker.
  4527      * to the last {@code Savepoint} transaction marker.
  4520      *
  4528      *
  4521      * @see java.sql.Connection#rollback(Savepoint)
  4529      * @see java.sql.Connection#rollback(Savepoint)
  4522      */
  4530      */
  4523     public void rollback(Savepoint s) throws SQLException {
  4531     public void rollback(Savepoint s) throws SQLException {
  4524         throw new UnsupportedOperationException();
  4532         throw new UnsupportedOperationException();
  4525     }
  4533     }
  4526 
  4534 
  4527     /**
  4535     /**
  4528      * Unsets the designated parameter to the given int array.
  4536      * Unsets the designated parameter to the given int array.
  4529      * This was set using <code>setMatchColumn</code>
  4537      * This was set using {@code setMatchColumn}
  4530      * as the column which will form the basis of the join.
  4538      * as the column which will form the basis of the join.
  4531      * <P>
  4539      * <P>
  4532      * The parameter value unset by this method should be same
  4540      * The parameter value unset by this method should be same
  4533      * as was set.
  4541      * as was set.
  4534      *
  4542      *
  4535      * @param columnIdxes the index into this rowset
  4543      * @param columnIdxes the index into this rowset
  4536      *        object's internal representation of parameter values
  4544      *        object's internal representation of parameter values
  4537      * @throws SQLException if an error occurs or the
  4545      * @throws SQLException if an error occurs or the
  4538      *  parameter index is out of bounds or if the columnIdx is
  4546      *  parameter index is out of bounds or if the columnIdx is
  4539      *  not the same as set using <code>setMatchColumn(int [])</code>
  4547      *  not the same as set using {@code setMatchColumn(int [])}
  4540      */
  4548      */
  4541     public void unsetMatchColumn(int[] columnIdxes) throws SQLException {
  4549     public void unsetMatchColumn(int[] columnIdxes) throws SQLException {
  4542          throw new UnsupportedOperationException();
  4550          throw new UnsupportedOperationException();
  4543     }
  4551     }
  4544 
  4552 
  4545    /**
  4553    /**
  4546      * Unsets the designated parameter to the given String array.
  4554      * Unsets the designated parameter to the given String array.
  4547      * This was set using <code>setMatchColumn</code>
  4555      * This was set using {@code setMatchColumn}
  4548      * as the column which will form the basis of the join.
  4556      * as the column which will form the basis of the join.
  4549      * <P>
  4557      * <P>
  4550      * The parameter value unset by this method should be same
  4558      * The parameter value unset by this method should be same
  4551      * as was set.
  4559      * as was set.
  4552      *
  4560      *
  4553      * @param columnIdxes the index into this rowset
  4561      * @param columnIdxes the index into this rowset
  4554      *        object's internal representation of parameter values
  4562      *        object's internal representation of parameter values
  4555      * @throws SQLException if an error occurs or the
  4563      * @throws SQLException if an error occurs or the
  4556      *  parameter index is out of bounds or if the columnName is
  4564      *  parameter index is out of bounds or if the columnName is
  4557      *  not the same as set using <code>setMatchColumn(String [])</code>
  4565      *  not the same as set using {@code setMatchColumn(String [])}
  4558      */
  4566      */
  4559     public void unsetMatchColumn(String[] columnIdxes) throws SQLException {
  4567     public void unsetMatchColumn(String[] columnIdxes) throws SQLException {
  4560        throw new UnsupportedOperationException();
  4568        throw new UnsupportedOperationException();
  4561     }
  4569     }
  4562 
  4570 
  4563     /**
  4571     /**
  4564      * Retrieves the column name as <code>String</code> array
  4572      * Retrieves the column name as {@code String} array
  4565      * that was set using <code>setMatchColumn(String [])</code>
  4573      * that was set using {@code setMatchColumn(String [])}
  4566      * for this rowset.
  4574      * for this rowset.
  4567      *
  4575      *
  4568      * @return a <code>String</code> array object that contains the column names
  4576      * @return a {@code String} array object that contains the column names
  4569      *         for the rowset which has this the match columns
  4577      *         for the rowset which has this the match columns
  4570      *
  4578      *
  4571      * @throws SQLException if an error occurs or column name is not set
  4579      * @throws SQLException if an error occurs or column name is not set
  4572      */
  4580      */
  4573     public String[] getMatchColumnNames() throws SQLException {
  4581     public String[] getMatchColumnNames() throws SQLException {
  4574         throw new UnsupportedOperationException();
  4582         throw new UnsupportedOperationException();
  4575     }
  4583     }
  4576 
  4584 
  4577     /**
  4585     /**
  4578      * Retrieves the column id as <code>int</code> array that was set using
  4586      * Retrieves the column id as {@code int} array that was set using
  4579      * <code>setMatchColumn(int [])</code> for this rowset.
  4587      * {@code setMatchColumn(int [])} for this rowset.
  4580      *
  4588      *
  4581      * @return a <code>int</code> array object that contains the column ids
  4589      * @return a {@code int} array object that contains the column ids
  4582      *         for the rowset which has this as the match columns.
  4590      *         for the rowset which has this as the match columns.
  4583      *
  4591      *
  4584      * @throws SQLException if an error occurs or column index is not set
  4592      * @throws SQLException if an error occurs or column index is not set
  4585      */
  4593      */
  4586     public int[] getMatchColumnIndexes() throws SQLException {
  4594     public int[] getMatchColumnIndexes() throws SQLException {
  4588     }
  4596     }
  4589 
  4597 
  4590     /**
  4598     /**
  4591      * Sets the designated parameter to the given int array.
  4599      * Sets the designated parameter to the given int array.
  4592      * This forms the basis of the join for the
  4600      * This forms the basis of the join for the
  4593      * <code>JoinRowSet</code> as the column which will form the basis of the
  4601      * {@code JoinRowSet} as the column which will form the basis of the
  4594      * join.
  4602      * join.
  4595      * <P>
  4603      * <P>
  4596      * The parameter value set by this method is stored internally and
  4604      * The parameter value set by this method is stored internally and
  4597      * will be supplied as the appropriate parameter in this rowset's
  4605      * will be supplied as the appropriate parameter in this rowset's
  4598      * command when the method <code>getMatchColumnIndexes</code> is called.
  4606      * command when the method {@code getMatchColumnIndexes} is called.
  4599      *
  4607      *
  4600      * @param columnIdxes the indexes into this rowset
  4608      * @param columnIdxes the indexes into this rowset
  4601      *        object's internal representation of parameter values; the
  4609      *        object's internal representation of parameter values; the
  4602      *        first parameter is 0, the second is 1, and so on; must be
  4610      *        first parameter is 0, the second is 1, and so on; must be
  4603      *        <code>0</code> or greater
  4611      *        {@code 0} or greater
  4604      * @throws SQLException if an error occurs or the
  4612      * @throws SQLException if an error occurs or the
  4605      *                         parameter index is out of bounds
  4613      *                         parameter index is out of bounds
  4606      */
  4614      */
  4607     public void setMatchColumn(int[] columnIdxes) throws SQLException {
  4615     public void setMatchColumn(int[] columnIdxes) throws SQLException {
  4608         throw new UnsupportedOperationException();
  4616         throw new UnsupportedOperationException();
  4609     }
  4617     }
  4610 
  4618 
  4611     /**
  4619     /**
  4612      * Sets the designated parameter to the given String array.
  4620      * Sets the designated parameter to the given String array.
  4613      *  This forms the basis of the join for the
  4621      *  This forms the basis of the join for the
  4614      * <code>JoinRowSet</code> as the column which will form the basis of the
  4622      * {@code JoinRowSet} as the column which will form the basis of the
  4615      * join.
  4623      * join.
  4616      * <P>
  4624      * <P>
  4617      * The parameter value set by this method is stored internally and
  4625      * The parameter value set by this method is stored internally and
  4618      * will be supplied as the appropriate parameter in this rowset's
  4626      * will be supplied as the appropriate parameter in this rowset's
  4619      * command when the method <code>getMatchColumn</code> is called.
  4627      * command when the method {@code getMatchColumn} is called.
  4620      *
  4628      *
  4621      * @param columnNames the name of the column into this rowset
  4629      * @param columnNames the name of the column into this rowset
  4622      *        object's internal representation of parameter values
  4630      *        object's internal representation of parameter values
  4623      * @throws SQLException if an error occurs or the
  4631      * @throws SQLException if an error occurs or the
  4624      *  parameter index is out of bounds
  4632      *  parameter index is out of bounds
  4627         throw new UnsupportedOperationException();
  4635         throw new UnsupportedOperationException();
  4628     }
  4636     }
  4629 
  4637 
  4630 
  4638 
  4631     /**
  4639     /**
  4632      * Sets the designated parameter to the given <code>int</code>
  4640      * Sets the designated parameter to the given {@code int}
  4633      * object.  This forms the basis of the join for the
  4641      * object.  This forms the basis of the join for the
  4634      * <code>JoinRowSet</code> as the column which will form the basis of the
  4642      * {@code JoinRowSet} as the column which will form the basis of the
  4635      * join.
  4643      * join.
  4636      * <P>
  4644      * <P>
  4637      * The parameter value set by this method is stored internally and
  4645      * The parameter value set by this method is stored internally and
  4638      * will be supplied as the appropriate parameter in this rowset's
  4646      * will be supplied as the appropriate parameter in this rowset's
  4639      * command when the method <code>getMatchColumn</code> is called.
  4647      * command when the method {@code getMatchColumn} is called.
  4640      *
  4648      *
  4641      * @param columnIdx the index into this rowset
  4649      * @param columnIdx the index into this rowset
  4642      *        object's internal representation of parameter values; the
  4650      *        object's internal representation of parameter values; the
  4643      *        first parameter is 0, the second is 1, and so on; must be
  4651      *        first parameter is 0, the second is 1, and so on; must be
  4644      *        <code>0</code> or greater
  4652      *        {@code 0} or greater
  4645      * @throws SQLException if an error occurs or the
  4653      * @throws SQLException if an error occurs or the
  4646      *                         parameter index is out of bounds
  4654      *                         parameter index is out of bounds
  4647      */
  4655      */
  4648     public void setMatchColumn(int columnIdx) throws SQLException {
  4656     public void setMatchColumn(int columnIdx) throws SQLException {
  4649         throw new UnsupportedOperationException();
  4657         throw new UnsupportedOperationException();
  4650     }
  4658     }
  4651 
  4659 
  4652     /**
  4660     /**
  4653      * Sets the designated parameter to the given <code>String</code>
  4661      * Sets the designated parameter to the given {@code String}
  4654      * object.  This forms the basis of the join for the
  4662      * object.  This forms the basis of the join for the
  4655      * <code>JoinRowSet</code> as the column which will form the basis of the
  4663      * {@code JoinRowSet} as the column which will form the basis of the
  4656      * join.
  4664      * join.
  4657      * <P>
  4665      * <P>
  4658      * The parameter value set by this method is stored internally and
  4666      * The parameter value set by this method is stored internally and
  4659      * will be supplied as the appropriate parameter in this rowset's
  4667      * will be supplied as the appropriate parameter in this rowset's
  4660      * command when the method <code>getMatchColumn</code> is called.
  4668      * command when the method {@code getMatchColumn} is called.
  4661      *
  4669      *
  4662      * @param columnName the name of the column into this rowset
  4670      * @param columnName the name of the column into this rowset
  4663      *        object's internal representation of parameter values
  4671      *        object's internal representation of parameter values
  4664      * @throws SQLException if an error occurs or the
  4672      * @throws SQLException if an error occurs or the
  4665      *  parameter index is out of bounds
  4673      *  parameter index is out of bounds
  4667     public void setMatchColumn(String columnName) throws SQLException {
  4675     public void setMatchColumn(String columnName) throws SQLException {
  4668         throw new UnsupportedOperationException();
  4676         throw new UnsupportedOperationException();
  4669     }
  4677     }
  4670 
  4678 
  4671     /**
  4679     /**
  4672      * Unsets the designated parameter to the given <code>int</code>
  4680      * Unsets the designated parameter to the given {@code int}
  4673      * object.  This was set using <code>setMatchColumn</code>
  4681      * object.  This was set using {@code setMatchColumn}
  4674      * as the column which will form the basis of the join.
  4682      * as the column which will form the basis of the join.
  4675      * <P>
  4683      * <P>
  4676      * The parameter value unset by this method should be same
  4684      * The parameter value unset by this method should be same
  4677      * as was set.
  4685      * as was set.
  4678      *
  4686      *
  4679      * @param columnIdx the index into this rowset
  4687      * @param columnIdx the index into this rowset
  4680      *        object's internal representation of parameter values
  4688      *        object's internal representation of parameter values
  4681      * @throws SQLException if an error occurs or the
  4689      * @throws SQLException if an error occurs or the
  4682      *  parameter index is out of bounds or if the columnIdx is
  4690      *  parameter index is out of bounds or if the columnIdx is
  4683      *  not the same as set using <code>setMatchColumn(int)</code>
  4691      *  not the same as set using {@code setMatchColumn(int)}
  4684      */
  4692      */
  4685     public void unsetMatchColumn(int columnIdx) throws SQLException {
  4693     public void unsetMatchColumn(int columnIdx) throws SQLException {
  4686         throw new UnsupportedOperationException();
  4694         throw new UnsupportedOperationException();
  4687     }
  4695     }
  4688 
  4696 
  4689     /**
  4697     /**
  4690      * Unsets the designated parameter to the given <code>String</code>
  4698      * Unsets the designated parameter to the given {@code String}
  4691      * object.  This was set using <code>setMatchColumn</code>
  4699      * object.  This was set using {@code setMatchColumn}
  4692      * as the column which will form the basis of the join.
  4700      * as the column which will form the basis of the join.
  4693      * <P>
  4701      * <P>
  4694      * The parameter value unset by this method should be same
  4702      * The parameter value unset by this method should be same
  4695      * as was set.
  4703      * as was set.
  4696      *
  4704      *
  4697      * @param columnName the index into this rowset
  4705      * @param columnName the index into this rowset
  4698      *        object's internal representation of parameter values
  4706      *        object's internal representation of parameter values
  4699      * @throws SQLException if an error occurs or the
  4707      * @throws SQLException if an error occurs or the
  4700      *  parameter index is out of bounds or if the columnName is
  4708      *  parameter index is out of bounds or if the columnName is
  4701      *  not the same as set using <code>setMatchColumn(String)</code>
  4709      *  not the same as set using {@code setMatchColumn(String)}
  4702      */
  4710      */
  4703     public void unsetMatchColumn(String columnName) throws SQLException {
  4711     public void unsetMatchColumn(String columnName) throws SQLException {
  4704         throw new UnsupportedOperationException();
  4712         throw new UnsupportedOperationException();
  4705     }
  4713     }
  4706 
  4714 
  4707     /**
  4715     /**
  4708      * Notifies registered listeners that a RowSet object in the given RowSetEvent
  4716      * Notifies registered listeners that a RowSet object in the given RowSetEvent
  4709      * object has populated a number of additional rows. The <code>numRows</code> parameter
  4717      * object has populated a number of additional rows. The {@code numRows} parameter
  4710      * ensures that this event will only be fired every <code>numRow</code>.
  4718      * ensures that this event will only be fired every {@code numRow}.
  4711      * <p>
  4719      * <p>
  4712      * The source of the event can be retrieved with the method event.getSource.
  4720      * The source of the event can be retrieved with the method event.getSource.
  4713      *
  4721      *
  4714      * @param event a <code>RowSetEvent</code> object that contains the
  4722      * @param event a {@code RowSetEvent} object that contains the
  4715      *     <code>RowSet</code> object that is the source of the events
  4723      *     {@code RowSet} object that is the source of the events
  4716      * @param numRows when populating, the number of rows interval on which the
  4724      * @param numRows when populating, the number of rows interval on which the
  4717      *     <code>CachedRowSet</code> populated should fire; the default value
  4725      *     {@code CachedRowSet} populated should fire; the default value
  4718      *     is zero; cannot be less than <code>fetchSize</code> or zero
  4726      *     is zero; cannot be less than {@code fetchSize} or zero
  4719      */
  4727      */
  4720     public void rowSetPopulated(RowSetEvent event, int numRows) throws SQLException {
  4728     public void rowSetPopulated(RowSetEvent event, int numRows) throws SQLException {
  4721         throw new UnsupportedOperationException();
  4729         throw new UnsupportedOperationException();
  4722     }
  4730     }
  4723 
  4731 
  4724     /**
  4732     /**
  4725      * Populates this <code>CachedRowSet</code> object with data from
  4733      * Populates this {@code CachedRowSet} object with data from
  4726      * the given <code>ResultSet</code> object. While related to the <code>populate(ResultSet)</code>
  4734      * the given {@code ResultSet} object. While related to the {@code populate(ResultSet)}
  4727      * method, an additional parameter is provided to allow starting position within
  4735      * method, an additional parameter is provided to allow starting position within
  4728      * the <code>ResultSet</code> from where to populate the CachedRowSet
  4736      * the {@code ResultSet} from where to populate the CachedRowSet
  4729      * instance.
  4737      * instance.
  4730      *
  4738      *
  4731      * This method is an alternative to the method <code>execute</code>
  4739      * This method is an alternative to the method {@code execute}
  4732      * for filling the rowset with data.  The method <code>populate</code>
  4740      * for filling the rowset with data.  The method {@code populate}
  4733      * does not require that the properties needed by the method
  4741      * does not require that the properties needed by the method
  4734      * <code>execute</code>, such as the <code>command</code> property,
  4742      * {@code execute}, such as the {@code command} property,
  4735      * be set. This is true because the method <code>populate</code>
  4743      * be set. This is true because the method {@code populate}
  4736      * is given the <code>ResultSet</code> object from
  4744      * is given the {@code ResultSet} object from
  4737      * which to get data and thus does not need to use the properties
  4745      * which to get data and thus does not need to use the properties
  4738      * required for setting up a connection and executing this
  4746      * required for setting up a connection and executing this
  4739      * <code>CachedRowSetImpl</code> object's command.
  4747      * {@code CachedRowSetImpl} object's command.
  4740      * <P>
  4748      * <P>
  4741      * After populating this rowset with data, the method
  4749      * After populating this rowset with data, the method
  4742      * <code>populate</code> sets the rowset's metadata and
  4750      * {@code populate} sets the rowset's metadata and
  4743      * then sends a <code>RowSetChangedEvent</code> object
  4751      * then sends a {@code RowSetChangedEvent} object
  4744      * to all registered listeners prior to returning.
  4752      * to all registered listeners prior to returning.
  4745      *
  4753      *
  4746      * @param data the <code>ResultSet</code> object containing the data
  4754      * @param data the {@code ResultSet} object containing the data
  4747      *             to be read into this <code>CachedRowSetImpl</code> object
  4755      *             to be read into this {@code CachedRowSetImpl} object
  4748      * @param start the integer specifing the position in the
  4756      * @param start the integer specifing the position in the
  4749      *        <code>ResultSet</code> object to popultate the
  4757      *        {@code ResultSet} object to popultate the
  4750      *        <code>CachedRowSetImpl</code> object.
  4758      *        {@code CachedRowSetImpl} object.
  4751      * @throws SQLException if an error occurs; or the max row setting is
  4759      * @throws SQLException if an error occurs; or the max row setting is
  4752      *          violated while populating the RowSet.Also id the start position
  4760      *          violated while populating the RowSet.Also id the start position
  4753      *          is negative.
  4761      *          is negative.
  4754      * @see #execute
  4762      * @see #execute
  4755      */
  4763      */
  4757         throw new UnsupportedOperationException();
  4765         throw new UnsupportedOperationException();
  4758 
  4766 
  4759      }
  4767      }
  4760 
  4768 
  4761     /**
  4769     /**
  4762      * The nextPage gets the next page, that is a <code>CachedRowSetImpl</code> object
  4770      * The nextPage gets the next page, that is a {@code CachedRowSetImpl} object
  4763      * containing the number of rows specified by page size.
  4771      * containing the number of rows specified by page size.
  4764      * @return boolean value true indicating whether there are more pages to come and
  4772      * @return boolean value true indicating whether there are more pages to come and
  4765      *         false indicating that this is the last page.
  4773      *         false indicating that this is the last page.
  4766      * @throws SQLException if an error occurs or this called before calling populate.
  4774      * @throws SQLException if an error occurs or this called before calling populate.
  4767      */
  4775      */
  4794      * Retrieves the data present in the page prior to the page from where it is
  4802      * Retrieves the data present in the page prior to the page from where it is
  4795      * called.
  4803      * called.
  4796      * @return boolean value true if it retrieves the previous page, flase if it
  4804      * @return boolean value true if it retrieves the previous page, flase if it
  4797      *         is on the first page.
  4805      *         is on the first page.
  4798      * @throws SQLException if it is called before populate is called or ResultSet
  4806      * @throws SQLException if it is called before populate is called or ResultSet
  4799      *         is of type <code>ResultSet.TYPE_FORWARD_ONLY</code> or if an error
  4807      *         is of type {@code ResultSet.TYPE_FORWARD_ONLY} or if an error
  4800      *         occurs.
  4808      *         occurs.
  4801      */
  4809      */
  4802     public boolean previousPage() throws SQLException {
  4810     public boolean previousPage() throws SQLException {
  4803        throw new UnsupportedOperationException();
  4811        throw new UnsupportedOperationException();
  4804     }
  4812     }
  4805 
  4813 
  4806     /**
  4814     /**
  4807        * Updates the designated column with a character stream value, which will
  4815        * Updates the designated column with a character stream value, which will
  4808        * have the specified number of bytes. The driver does the necessary conversion
  4816        * have the specified number of bytes. The driver does the necessary conversion
  4809        * from Java character format to the national character set in the database.
  4817        * from Java character format to the national character set in the database.
  4810        * It is intended for use when updating NCHAR,NVARCHAR and LONGNVARCHAR columns.
  4818        * It is intended for use when updating NCHAR, NVARCHAR and LONGNVARCHAR columns.
  4811        * The updater methods are used to update column values in the current row or
  4819        * The updater methods are used to update column values in the current row or
  4812        * the insert row. The updater methods do not update the underlying database;
  4820        * the insert row. The updater methods do not update the underlying database;
  4813        * instead the updateRow or insertRow methods are called to update the database.
  4821        * instead the updateRow or insertRow methods are called to update the database.
  4814        *
  4822        *
  4815        * @param columnIndex - the first column is 1, the second is 2, ...
  4823        * @param columnIndex - the first column is 1, the second is 2, ...