Path: blob/master/src/java.sql.rowset/share/classes/com/sun/rowset/internal/SyncResolverImpl.java
40948 views
/*1* Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation. Oracle designates this7* particular file as subject to the "Classpath" exception as provided8* by Oracle in the LICENSE file that accompanied this code.9*10* This code is distributed in the hope that it will be useful, but WITHOUT11* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or12* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License13* version 2 for more details (a copy is included in the LICENSE file that14* accompanied this code).15*16* You should have received a copy of the GNU General Public License version17* 2 along with this work; if not, write to the Free Software Foundation,18* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.19*20* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA21* or visit www.oracle.com if you need additional information or have any22* questions.23*/2425package com.sun.rowset.internal;2627import java.sql.*;28import javax.sql.*;29import java.util.*;30import java.math.BigDecimal;3132import javax.sql.rowset.*;33import javax.sql.rowset.spi.*;3435import com.sun.rowset.*;36import java.io.IOException;37import java.io.ObjectInputStream;3839/**40* There will be two sets of data which will be maintained by the rowset at the41* time of synchronization. The {@code SyncProvider} will utilize the42* {@code SyncResolver} to synchronize the changes back to database.43*/44public class SyncResolverImpl extends CachedRowSetImpl implements SyncResolver {45/**46* This CachedRowSet object will encapsulate a rowset47* which will be sync'ed with the datasource but will48* contain values in rows where there is conflict.49* For rows other than conflict, it will *not* contain50* any data. For rows containing conflict it will51* return either of the three values set by SyncResolver.*_CONFLICT52* from getStatus()53*/54private CachedRowSetImpl crsRes;5556/**57* This is the actual CachedRowSet object58* which is being synchronized back to59* datasource.60*/61private CachedRowSetImpl crsSync;6263/**64* This ArrayList will contain the status of a row65* from the SyncResolver.* values else it will be null.66*/67private ArrayList<?> stats;6869/**70* The RowSetWriter associated with the original71* CachedRowSet object which is being synchronized.72*/73private CachedRowSetWriter crw;7475/**76* Row number identifier77*/78private int rowStatus;7980/**81* This will contain the size of the {@code CachedRowSet} object82*/83private int sz;8485/**86* The {@code Connection} handle used to synchronize the changes87* back to datasource. This is the same connection handle as was passed88* to the CachedRowSet while fetching the data.89*/90private transient Connection con;9192/**93* The {@code CachedRowSet} object which will encapsulate94* a row at any time. This will be built from CachedRowSet and95* SyncResolver values. Synchronization takes place on a row by96* row basis encapsulated as a CahedRowSet.97*/98private CachedRowSet row;99100private JdbcRowSetResourceBundle resBundle;101102/**103* Public constructor104*/105public SyncResolverImpl() throws SQLException {106try {107crsSync = new CachedRowSetImpl();108crsRes = new CachedRowSetImpl();109crw = new CachedRowSetWriter();110row = new CachedRowSetImpl();111rowStatus = 1;112try {113resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();114} catch(IOException ioe) {115throw new RuntimeException(ioe);116}117118} catch(SQLException sqle) {119}120}121122123/**124* Retrieves the conflict status of the current row of this125* {@code SyncResolver}, which indicates the operation the {@code RowSet}126* object was attempting when the conflict occurred.127*128* @return one of the following constants:129* {@code SyncResolver.UPDATE_ROW_CONFLICT},130* {@code SyncResolver.DELETE_ROW_CONFLICT}, or131* {@code SyncResolver.INSERT_ROW_CONFLICT}132*/133public int getStatus() {134return stats != null ? (Integer) stats.get(rowStatus - 1) :135SyncResolver.NO_ROW_CONFLICT;136}137138/**139* Retrieves the value in the designated column in the current row of this140* {@code SyncResolver} object, which is the value that caused a conflict.141*142* @param index {@code int} designating the column in this row of this143* {@code SyncResolver} object from which to retrieve the value144* causing a conflict145*/146public Object getConflictValue(int index) throws SQLException {147try {148return crsRes.getObject(index);149} catch(SQLException sqle) {150throw new SQLException(sqle.getMessage());151} catch (Exception e ) {152throw new SQLException("Problem obtaining conflicted value!", e);153}154}155156/**157* Retrieves the value in the designated column in the current row of this158* {@code SyncResolver} object, which is the value that caused a conflict.159*160* @param columnName a {@code String} object designating the column in this row of this161* {@code SyncResolver} object from which to retrieve the value162* causing a conflict163*/164public Object getConflictValue(String columnName) throws SQLException {165try {166return crsRes.getObject(columnName);167} catch(SQLException sqle) {168throw new SQLException(sqle.getMessage());169} catch (Exception e ) {170throw new SQLException("Problem obtaining conflicted value!", e);171}172}173174/**175* Sets <i>obj</i> as the value in column <i>index</i> in the current row of the176* {@code RowSet} object. This value is the resolved value that is to be177* persisted in the data source.178*179* @param index an {@code int} giving the number of the column into which to180* set the value to be persisted181* @param obj an {@code Object} that is the value to be set in the data source182*/183public void setResolvedValue(int index, Object obj) throws SQLException {184// modify method to throw SQLException in spec185186/**187* When a value is resolved properly make it to null188* inside crsRes for that column.189*190* For more than one conflicts in the row,191* check for the last resolved value of the current row192* (Note: it can be resolved randomly for same row)193* then sync back immediately.194**/195try {196ResultSetMetaData rsmd = crsSync.getMetaData();197// check whether the index is in range198if(index<=0 || rsmd == null || index > rsmd.getColumnCount() ) {199throw new SQLException(resBundle.handleGetObject("syncrsimpl.indexval").toString()+ index);200}201// check whether index col is in conflict202if(crsRes.getObject(index) == null) {203throw new SQLException(resBundle.handleGetObject("syncrsimpl.noconflict").toString());204}205} catch (SQLException sqle) {206// modify method to throw for SQLException207throw new SQLException(sqle.getMessage());208}209try {210boolean bool = true;211/** Check resolved value to be either of conflict212* or in rowset else throw sql exception.213* If we allow a value other than that in CachedRowSet or214* datasource we will end up in looping the loop of exceptions.215**/216217if( ((crsSync.getObject(index)).toString()).equals(obj.toString()) ||218((crsRes.getObject(index)).toString()).equals(obj.toString()) ) {219220/**221* Check whether this is the only conflict in the row.222* If yes, synchronize this row back223* which has been resolved, else wait224* for all conflicts of current row to be resolved225*226* Step 1: Update crsRes and make the index col as null227* i.e. resolved228* crsRes.updateObject(index, obj);229**/230crsRes.updateNull(index);231crsRes.updateRow();232233/**234* Step 2: Change the value in the CachedRowSetImpl object235* crsSync.updateObject(index, obj);236* crsSync.updateRow();237**/238if(row.size() != 1) {239row = buildCachedRow();240}241242row.updateObject(index, obj);243row.updateRow();244245for(int j=1; j < crsRes.getMetaData().getColumnCount(); j++) {246if(crsRes.getObject(j) != null) {247bool = false;248break;249// break out of loop and wait for other cols250// in same row to get resolved251} //end if252253} //end for254255if(bool) {256/**257* sync data back using CachedRowSetWriter258* construct the present row and pass it to the writer259* to write back to db.260**/261try {262/**263* Note : The use of CachedRowSetWriter to get *same* Connection handle.264* The CachedRowSetWriter uses the connection handle265* from the reader, Hence will use the same connection handle266* as of original CachedRowSetImpl267**/268269writeData(row);270271//crw.writeData( (RowSetInternal)crsRow);272//System.out.printlnt.println("12");273274} catch(SyncProviderException spe) {275/**276* This will occur if db is not allowing277* even after resolving the conflicts278* due to some reasons.279* Also will prevent from going into a loop of SPE's280**/281throw new SQLException(resBundle.handleGetObject("syncrsimpl.syncnotpos").toString());282}283} //end if(bool)284285} else {286throw new SQLException(resBundle.handleGetObject("syncrsimpl.valtores").toString());287} //end if (crs.getObject ...) block288289290} catch(SQLException sqle) {291throw new SQLException(sqle.getMessage());292}293}294295/**296* This passes a CachedRowSet as a row to the CachedRowSetWriter297* after the values have been resolved, back to the datasource.298*299* @param row a {@code CachedRowSet} object which will hold the300* values of a particular row after they have been resolved by301* the user to synchronize back to datasource.302* @throws SQLException if synchronization does not happen properly303* maybe beacuse {@code Connection} has timed out.304**/305private void writeData(CachedRowSet row) throws SQLException {306crw.updateResolvedConflictToDB(row, crw.getReader().connect((RowSetInternal)crsSync));307}308309/**310* This function builds a row as a {@code CachedRowSet} object311* which has been resolved and is ready to be synchrinized to the datasource312*313* @throws SQLException if there is problem in building314* the metadata of the row.315**/316private CachedRowSet buildCachedRow() throws SQLException {317int iColCount;318CachedRowSetImpl crsRow = new CachedRowSetImpl();319320RowSetMetaDataImpl rsmd = new RowSetMetaDataImpl();321RowSetMetaDataImpl rsmdWrite = (RowSetMetaDataImpl)crsSync.getMetaData();322RowSetMetaDataImpl rsmdRow = new RowSetMetaDataImpl();323324iColCount = rsmdWrite.getColumnCount();325rsmdRow.setColumnCount(iColCount);326327for(int i =1;i<=iColCount;i++) {328rsmdRow.setColumnType(i,rsmdWrite.getColumnType(i));329rsmdRow.setColumnName(i,rsmdWrite.getColumnName(i));330rsmdRow.setNullable(i,ResultSetMetaData.columnNullableUnknown);331332try {333rsmdRow.setCatalogName(i, rsmdWrite.getCatalogName(i));334rsmdRow.setSchemaName(i, rsmdWrite.getSchemaName(i));335} catch(SQLException e) {336e.printStackTrace();337}338} //end for339340crsRow.setMetaData(rsmdRow);341342crsRow.moveToInsertRow();343344for(int col=1;col<=crsSync.getMetaData().getColumnCount();col++) {345crsRow.updateObject(col, crsSync.getObject(col));346}347348crsRow.insertRow();349crsRow.moveToCurrentRow();350351crsRow.absolute(1);352crsRow.setOriginalRow();353354try {355crsRow.setUrl(crsSync.getUrl());356} catch(SQLException sqle) {357358}359360try {361crsRow.setDataSourceName(crsSync.getCommand());362} catch(SQLException sqle) {363364}365366try {367if(crsSync.getTableName()!= null){368crsRow.setTableName(crsSync.getTableName());369}370} catch(SQLException sqle) {371372}373374try {375if(crsSync.getCommand() != null)376crsRow.setCommand(crsSync.getCommand());377} catch(SQLException sqle) {378379}380381try {382crsRow.setKeyColumns(crsSync.getKeyColumns());383} catch(SQLException sqle) {384385}386return crsRow;387}388389390391/**392* Sets <i>obj</i> as the value in column <i>columnName</i> in the current row of the393* {@code RowSet} object. This value is the resolved value that is to be394* persisted in the data source.395*396* @param columnName a {@code String} object giving the name of the column397* into which to set the value to be persisted398* @param obj an {@code Object} that is the value to be set in the data source399*/400public void setResolvedValue(String columnName, Object obj) throws SQLException {401// %%% Missing implementation!402throw new SQLException("Method not supported");403}404405/**406* This function is package private,407* i.e. cannot be accesses outside this package.408* This is used to set the actual CachedRowSet409* which is being synchronized to the database410**/411void setCachedRowSet(CachedRowSet crs) {412crsSync = (CachedRowSetImpl)crs;413}414415/**416* This function is package private,417* i.e. cannot be accesses outside this package.418* This is used to set the CachedRowSet formed419* with conflict values.420**/421void setCachedRowSetResolver(CachedRowSet crs){422try {423crsRes = (CachedRowSetImpl)crs;424crsRes.afterLast();425sz = crsRes.size();426} catch (SQLException sqle) {427// do nothing428}429}430431/**432* This function is package private,433* i.e. cannot be accesses outside this package.434* This is used to set the status of each row435* to either of the values SyncResolver.*_CONFLICT436**/437@SuppressWarnings("rawtypes")438void setStatus(ArrayList status){439stats = status;440}441442/**443* This function is package private,444* i.e. cannot be accesses outside this package.445* This is used to set the handle to the writer object446* which will write the resolved values back to datasource447**/448void setCachedRowSetWriter(CachedRowSetWriter CRWriter) {449crw = CRWriter;450}451452/**453* Moves the cursor down one row from its current position. A {@code SyncResolver}454* cursor is initially positioned before the first conflict row; the first call to the455* method {@code nextConflict()} makes the first conflict row the current row;456* the second call makes the second conflict row the current row, and so on.457* <p>458* If an input stream is open for the current row, a call to the method next will459* implicitly close it. A {@code SyncResolver} object's warning chain is cleared460* when a new row461*462* @return true if the new current row is valid; false if there are no more rows463* @throws SQLException if a database access occurs464*465*/466public boolean nextConflict() throws SQLException {467/**468* The next() method will hop from469* one conflict to another470*471* Internally do a crs.next() until472* next conflict.473**/474boolean bool = false;475476crsSync.setShowDeleted(true);477while(crsSync.next()) {478crsRes.previous();479rowStatus++; //sz--;480481if((rowStatus-1) >= stats.size()) {482bool = false;483break;484}485486if(((Integer)stats.get(rowStatus-1)).intValue() == SyncResolver.NO_ROW_CONFLICT) {487// do nothing488// bool remains as false489;490} else {491bool = true;492break;493} //end if494495} //end while496497crsSync.setShowDeleted(false);498return bool;499} // end next() method500501502/**503* Moves the cursor to the previous conflict row in this {@code SyncResolver} object.504*505* @return {@code true} if the cursor is on a valid row; {@code false}506* if it is off the result set507* @throws SQLException if a database access error occurs or the result set type508* is TYPE_FORWARD_ONLY509*/510public boolean previousConflict() throws SQLException {511return false;512}513514//-----------------------------------------------------------------------515// Properties516//-----------------------------------------------------------------------517518/**519* Sets this {@code CachedRowSetImpl} object's command property520* to the given {@code String} object and clears the parameters,521* if any, that were set for the previous command.522* <P>523* The command property may not be needed524* if the rowset is produced by a data source, such as a spreadsheet,525* that does not support commands. Thus, this property is optional526* and may be {@code null}.527*528* @param cmd a {@code String} object containing an SQL query529* that will be set as the command; may be {@code null}530* @throws SQLException if an error occurs531*/532public void setCommand(String cmd) throws SQLException {533throw new UnsupportedOperationException();534}535536537//---------------------------------------------------------------------538// Reading and writing data539//---------------------------------------------------------------------540541/**542* Populates this {@code CachedRowSetImpl} object with data from543* the given {@code ResultSet} object. This544* method is an alternative to the method {@code execute}545* for filling the rowset with data. The method {@code populate}546* does not require that the properties needed by the method547* {@code execute}, such as the {@code command} property,548* be set. This is true because the method {@code populate}549* is given the {@code ResultSet} object from550* which to get data and thus does not need to use the properties551* required for setting up a connection and executing this552* {@code CachedRowSetImpl} object's command.553* <P>554* After populating this rowset with data, the method555* {@code populate} sets the rowset's metadata and556* then sends a {@code RowSetChangedEvent} object557* to all registered listeners prior to returning.558*559* @param data the {@code ResultSet} object containing the data560* to be read into this {@code CachedRowSetImpl} object561* @throws SQLException if an error occurs; or the max row setting is562* violated while populating the RowSet563* @see #execute564*/565public void populate(ResultSet data) throws SQLException {566throw new UnsupportedOperationException();567}568569/**570* Populates this {@code CachedRowSetImpl} object with data,571* using the given connection to produce the result set from572* which data will be read. A second form of this method,573* which takes no arguments, uses the values from this rowset's574* user, password, and either url or data source properties to575* create a new database connection. The form of {@code execute}576* that is given a connection ignores these properties.577*578* @param conn A standard JDBC {@code Connection} object that this579* {@code CachedRowSet} object can pass to a synchronization provider580* to establish a connection to the data source581* @throws SQLException if an invalid {@code Connection} is supplied582* or an error occurs in establishing the connection to the583* data source584* @see #populate585* @see java.sql.Connection586*/587public void execute(Connection conn) throws SQLException {588throw new UnsupportedOperationException();589}590591/**592* Propagates all row update, insert, and delete changes to the593* underlying data source backing this {@code CachedRowSetImpl}594* object.595* <P>596* <b>Note</b>In the reference implementation an optimistic concurrency implementation597* is provided as a sample implementation of a the {@code SyncProvider}598* abstract class.599* <P>600* This method fails if any of the updates cannot be propagated back601* to the data source. When it fails, the caller can assume that602* none of the updates are reflected in the data source.603* When an exception is thrown, the current row604* is set to the first "updated" row that resulted in an exception605* unless the row that caused the exception is a "deleted" row.606* In that case, when deleted rows are not shown, which is usually true,607* the current row is not affected.608* <P>609* If no {@code SyncProvider} is configured, the reference implementation610* leverages the {@code RIOptimisticProvider} available which provides the611* default and reference synchronization capabilities for disconnected612* {@code RowSets}.613*614* @throws SQLException if the cursor is on the insert row or the underlying615* reference synchronization provider fails to commit the updates616* to the datasource617* @throws SyncProviderException if an internal error occurs within the618* {@code SyncProvider} instance during either during the619* process or at any time when the {@code SyncProvider}620* instance touches the data source.621* @see #acceptChanges(java.sql.Connection)622* @see javax.sql.RowSetWriter623* @see javax.sql.rowset.spi.SyncProvider624*/625public void acceptChanges() throws SyncProviderException {626throw new UnsupportedOperationException();627}628629/**630* Propagates all row update, insert, and delete changes to the631* data source backing this {@code CachedRowSetImpl} object632* using the given {@code Connection} object.633* <P>634* The reference implementation {@code RIOptimisticProvider}635* modifies its synchronization to a write back function given636* the updated connection637* The reference implementation modifies its synchronization behaviour638* via the {@code SyncProvider} to ensure the synchronization639* occurs according to the updated JDBC {@code Connection}640* properties.641*642* @param con a standard JDBC {@code Connection} object643* @throws SQLException if the cursor is on the insert row or the underlying644* synchronization provider fails to commit the updates645* back to the data source646* @see #acceptChanges647* @see javax.sql.RowSetWriter648* @see javax.sql.rowset.spi.SyncFactory649* @see javax.sql.rowset.spi.SyncProvider650*/651public void acceptChanges(Connection con) throws SyncProviderException{652throw new UnsupportedOperationException();653}654655/**656* Restores this {@code CachedRowSetImpl} object to its original state,657* that is, its state before the last set of changes.658* <P>659* Before returning, this method moves the cursor before the first row660* and sends a {@code rowSetChanged} event to all registered661* listeners.662* @throws SQLException if an error is occurs rolling back the RowSet663* state to the definied original value.664* @see javax.sql.RowSetListener#rowSetChanged665*/666public void restoreOriginal() throws SQLException {667throw new UnsupportedOperationException();668}669670/**671* Releases the current contents of this {@code CachedRowSetImpl}672* object and sends a {@code rowSetChanged} event object to all673* registered listeners.674*675* @throws SQLException if an error occurs flushing the contents of676* RowSet.677* @see javax.sql.RowSetListener#rowSetChanged678*/679public void release() throws SQLException {680throw new UnsupportedOperationException();681}682683/**684* Cancels deletion of the current row and notifies listeners that685* a row has changed.686* <P>687* Note: This method can be ignored if deleted rows are not being shown,688* which is the normal case.689*690* @throws SQLException if the cursor is not on a valid row691*/692public void undoDelete() throws SQLException {693throw new UnsupportedOperationException();694}695696/**697* Immediately removes the current row from this698* {@code CachedRowSetImpl} object if the row has been inserted, and699* also notifies listeners the a row has changed. An exception is thrown700* if the row is not a row that has been inserted or the cursor is before701* the first row, after the last row, or on the insert row.702* <P>703* This operation cannot be undone.704*705* @throws SQLException if an error occurs,706* the cursor is not on a valid row,707* or the row has not been inserted708*/709public void undoInsert() throws SQLException {710throw new UnsupportedOperationException();711}712713/**714* Immediately reverses the last update operation if the715* row has been modified. This method can be716* called to reverse updates on a all columns until all updates in a row have717* been rolled back to their originating state since the last synchronization718* ({@code acceptChanges}) or population. This method may also be called719* while performing updates to the insert row.720* <P>721* {@code undoUpdate} may be called at any time during the life-time of a722* rowset, however after a synchronization has occurs this method has no723* affect until further modification to the RowSet data occurs.724*725* @throws SQLException if cursor is before the first row, after the last726* row in rowset.727* @see #undoDelete728* @see #undoInsert729* @see java.sql.ResultSet#cancelRowUpdates730*/731public void undoUpdate() throws SQLException {732throw new UnsupportedOperationException();733734}735736//--------------------------------------------------------------------737// Views738//--------------------------------------------------------------------739740/**741* Returns a new {@code RowSet} object backed by the same data as742* that of this {@code CachedRowSetImpl} object and sharing a set of cursors743* with it. This allows cursors to interate over a shared set of rows, providing744* multiple views of the underlying data.745*746* @return a {@code RowSet} object that is a copy of this {@code CachedRowSetImpl}747* object and shares a set of cursors with it748* @throws SQLException if an error occurs or cloning is749* not supported750* @see javax.sql.RowSetEvent751* @see javax.sql.RowSetListener752*/753public RowSet createShared() throws SQLException {754throw new UnsupportedOperationException();755}756757/**758* Returns a new {@code RowSet} object containing by the same data759* as this {@code CachedRowSetImpl} object. This method760* differs from the method {@code createCopy} in that it throws a761* {@code CloneNotSupportedException} object instead of an762* {@code SQLException} object, as the method {@code createShared}763* does. This {@code clone}764* method is called internally by the method {@code createShared},765* which catches the {@code CloneNotSupportedException} object766* and in turn throws a new {@code SQLException} object.767*768* @return a copy of this {@code CachedRowSetImpl} object769* @throws CloneNotSupportedException if an error occurs when770* attempting to clone this {@code CachedRowSetImpl} object771* @see #createShared772*/773protected Object clone() throws CloneNotSupportedException {774throw new UnsupportedOperationException();775}776777/**778* Creates a {@code RowSet} object that is a deep copy of779* this {@code CachedRowSetImpl} object's data, including780* constraints. Updates made781* on a copy are not visible to the original rowset;782* a copy of a rowset is completely independent from the original.783* <P>784* Making a copy saves the cost of creating an identical rowset785* from first principles, which can be quite expensive.786* For example, it can eliminate the need to query a787* remote database server.788* @return a new {@code CachedRowSet} object that is a deep copy789* of this {@code CachedRowSet} object and is790* completely independent from this {@code CachedRowSetImpl}791* object.792* @throws SQLException if an error occurs in generating the copy of this793* of the {@code CachedRowSetImpl}794* @see #createShared795* @see javax.sql.RowSetEvent796* @see javax.sql.RowSetListener797*/798public CachedRowSet createCopy() throws SQLException {799throw new UnsupportedOperationException();800}801802/**803* Creates a {@code RowSet} object that is a copy of804* this {@code CachedRowSetImpl} object's table structure805* and the constraints only.806* There will be no data in the object being returned.807* Updates made on a copy are not visible to the original rowset.808* <P>809* This helps in getting the underlying XML schema which can810* be used as the basis for populating a {@code WebRowSet}.811*812* @return a new {@code CachedRowSet} object that is a copy813* of this {@code CachedRowSetImpl} object's schema and814* retains all the constraints on the original rowset but contains815* no data816* @throws SQLException if an error occurs in generating the copy817* of the {@code CachedRowSet} object818* @see #createShared819* @see #createCopy820* @see #createCopyNoConstraints821* @see javax.sql.RowSetEvent822* @see javax.sql.RowSetListener823*/824public CachedRowSet createCopySchema() throws SQLException {825throw new UnsupportedOperationException();826}827828/**829* Creates a {@code CachedRowSet} object that is a copy of830* this {@code CachedRowSetImpl} object's data only.831* All constraints set in this object will not be there832* in the returning object. Updates made833* on a copy are not visible to the original rowset.834*835* @return a new {@code CachedRowSet} object that is a deep copy836* of this {@code CachedRowSetImpl} object and is837* completely independent from this {@code CachedRowSetImpl} object838* @throws SQLException if an error occurs in generating the copy of the839* of the {@code CachedRowSet}840* @see #createShared841* @see #createCopy842* @see #createCopySchema843* @see javax.sql.RowSetEvent844* @see javax.sql.RowSetListener845*/846public CachedRowSet createCopyNoConstraints() throws SQLException {847throw new UnsupportedOperationException();848}849850/**851* Converts this {@code CachedRowSetImpl} object to a collection852* of tables. The sample implementation utilitizes the {@code TreeMap}853* collection type.854* This class guarantees that the map will be in ascending key order,855* sorted according to the natural order for the key's class.856*857* @return a {@code Collection} object consisting of tables,858* each of which is a copy of a row in this859* {@code CachedRowSetImpl} object860* @throws SQLException if an error occurs in generating the collection861* @see #toCollection(int)862* @see #toCollection(String)863* @see java.util.TreeMap864*/865@SuppressWarnings("rawtypes")866public Collection toCollection() throws SQLException {867throw new UnsupportedOperationException();868}869870/**871* Returns the specified column of this {@code CachedRowSetImpl} object872* as a {@code Collection} object. This method makes a copy of the873* column's data and utilitizes the {@code Vector} to establish the874* collection. The {@code Vector} class implements a growable array875* objects allowing the individual components to be accessed using an876* an integer index similar to that of an array.877*878* @return a {@code Collection} object that contains the value(s)879* stored in the specified column of this880* {@code CachedRowSetImpl}881* object882* @throws SQLException if an error occurs generated the collection; or883* an invalid column is provided.884* @see #toCollection()885* @see #toCollection(String)886* @see java.util.Vector887*/888@SuppressWarnings("rawtypes")889public Collection toCollection(int column) throws SQLException {890throw new UnsupportedOperationException();891}892893/**894* Returns the specified column of this {@code CachedRowSetImpl} object895* as a {@code Collection} object. This method makes a copy of the896* column's data and utilitizes the {@code Vector} to establish the897* collection. The {@code Vector} class implements a growable array898* objects allowing the individual components to be accessed using an899* an integer index similar to that of an array.900*901* @return a {@code Collection} object that contains the value(s)902* stored in the specified column of this903* {@code CachedRowSetImpl}904* object905* @throws SQLException if an error occurs generated the collection; or906* an invalid column is provided.907* @see #toCollection()908* @see #toCollection(int)909* @see java.util.Vector910*/911@SuppressWarnings("rawtypes")912public Collection toCollection(String column) throws SQLException {913throw new UnsupportedOperationException();914}915916//--------------------------------------------------------------------917// Advanced features918//--------------------------------------------------------------------919920921/**922* Returns the {@code SyncProvider} implementation being used923* with this {@code CachedRowSetImpl} implementation rowset.924*925* @return the SyncProvider used by the rowset. If not provider was926* set when the rowset was instantiated, the reference927* implementation (default) provider is returned.928* @throws SQLException if error occurs while return the929* {@code SyncProvider} instance.930*/931public SyncProvider getSyncProvider() throws SQLException {932throw new UnsupportedOperationException();933}934935/**936* Sets the active {@code SyncProvider} and attempts to load937* load the new provider using the {@code SyncFactory} SPI.938*939* @throws SQLException if an error occurs while resetting the940* {@code SyncProvider}.941*/942public void setSyncProvider(String providerStr) throws SQLException {943throw new UnsupportedOperationException();944}945946947//-----------------948// methods inherited from RowSet949//-----------------950951952953954955956//---------------------------------------------------------------------957// Reading and writing data958//---------------------------------------------------------------------959960/**961* Populates this {@code CachedRowSetImpl} object with data.962* This form of the method uses the rowset's user, password, and url or963* data source name properties to create a database964* connection. If properties that are needed965* have not been set, this method will throw an exception.966* <P>967* Another form of this method uses an existing JDBC {@code Connection}968* object instead of creating a new one; therefore, it ignores the969* properties used for establishing a new connection.970* <P>971* The query specified by the command property is executed to create a972* {@code ResultSet} object from which to retrieve data.973* The current contents of the rowset are discarded, and the974* rowset's metadata is also (re)set. If there are outstanding updates,975* they are also ignored.976* <P>977* The method {@code execute} closes any database connections that it978* creates.979*980* @throws SQLException if an error occurs or the981* necessary properties have not been set982*/983public void execute() throws SQLException {984throw new UnsupportedOperationException();985}986987988989//-----------------------------------990// Methods inherited from ResultSet991//-----------------------------------992993/**994* Moves the cursor down one row from its current position and995* returns {@code true} if the new cursor position is a996* valid row.997* The cursor for a new {@code ResultSet} object is initially998* positioned before the first row. The first call to the method999* {@code next} moves the cursor to the first row, making it1000* the current row; the second call makes the second row the1001* current row, and so on.1002*1003* <P>If an input stream from the previous row is open, it is1004* implicitly closed. The {@code ResultSet} object's warning1005* chain is cleared when a new row is read.1006*1007* @return {@code true} if the new current row is valid;1008* {@code false} if there are no more rows1009* @throws SQLException if an error occurs or1010* the cursor is not positioned in the rowset, before1011* the first row, or after the last row1012*/1013public boolean next() throws SQLException {1014throw new UnsupportedOperationException();1015}10161017/**1018* Moves this {@code CachedRowSetImpl} object's cursor to the next1019* row and returns {@code true} if the cursor is still in the rowset;1020* returns {@code false} if the cursor has moved to the position after1021* the last row.1022* <P>1023* This method handles the cases where the cursor moves to a row that1024* has been deleted.1025* If this rowset shows deleted rows and the cursor moves to a row1026* that has been deleted, this method moves the cursor to the next1027* row until the cursor is on a row that has not been deleted.1028* <P>1029* The method {@code internalNext} is called by methods such as1030* {@code next}, {@code absolute}, and {@code relative},1031* and, as its name implies, is only called internally.1032* <p>1033* This is a implementation only method and is not required as a standard1034* implementation of the {@code CachedRowSet} interface.1035*1036* @return {@code true} if the cursor is on a valid row in this1037* rowset; {@code false} if it is after the last row1038* @throws SQLException if an error occurs1039*/1040protected boolean internalNext() throws SQLException {1041throw new UnsupportedOperationException();1042}10431044/**1045* Closes this {@code CachedRowSetImpl} objecy and releases any resources1046* it was using.1047*1048* @throws SQLException if an error occurs when releasing any resources in use1049* by this {@code CachedRowSetImpl} object1050*/1051public void close() throws SQLException {1052throw new UnsupportedOperationException();1053}10541055/**1056* Reports whether the last column read was SQL {@code NULL}.1057* Note that you must first call the method {@code getXXX}1058* on a column to try to read its value and then call the method1059* {@code wasNull} to determine whether the value was1060* SQL {@code NULL}.1061*1062* @return {@code true} if the value in the last column read1063* was SQL {@code NULL}; {@code false} otherwise1064* @throws SQLException if an error occurs1065*/1066public boolean wasNull() throws SQLException {1067throw new UnsupportedOperationException();1068}10691070/**1071* Returns the insert row or the current row of this1072* {@code CachedRowSetImpl} object.1073*1074* @return the {@code Row} object on which this {@code CachedRowSetImpl}1075* objects's cursor is positioned1076*/1077protected BaseRow getCurrentRow() {1078throw new UnsupportedOperationException();1079}10801081/**1082* Removes the row on which the cursor is positioned.1083* <p>1084* This is a implementation only method and is not required as a standard1085* implementation of the {@code CachedRowSet} interface.1086*1087* @throws SQLException if the cursor is positioned on the insert1088* row1089*/1090protected void removeCurrentRow() {1091throw new UnsupportedOperationException();1092}109310941095/**1096* Retrieves the value of the designated column in the current row1097* of this {@code CachedRowSetImpl} object as a1098* {@code String} object.1099*1100* @param columnIndex the first column is {@code 1}, the second1101* is {@code 2}, and so on; must be {@code 1} or larger1102* and equal to or less than the number of columns in the rowset1103* @return the column value; if the value is SQL {@code NULL}, the1104* result is {@code null}1105* @throws SQLException if (1) the given column index is out of bounds,1106* (2) the cursor is not on one of this rowset's rows or its1107* insert row, or (3) the designated column does not store an1108* SQL {@code TINYINT, SMALLINT, INTEGER, BIGINT, REAL,1109* FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT,} <b>{@code CHAR, VARCHAR}</b>1110* or {@code LONGVARCHAR} value. The bold SQL type designates the1111* recommended return type.1112*/1113public String getString(int columnIndex) throws SQLException {1114throw new UnsupportedOperationException();1115}11161117/**1118* Retrieves the value of the designated column in the current row1119* of this {@code CachedRowSetImpl} object as a1120* {@code boolean} value.1121*1122* @param columnIndex the first column is {@code 1}, the second1123* is {@code 2}, and so on; must be {@code 1} or larger1124* and equal to or less than the number of columns in the rowset1125* @return the column value as a {@code boolean} in the Java progamming language;1126* if the value is SQL {@code NULL}, the result is {@code false}1127* @throws SQLException if (1) the given column index is out of bounds,1128* (2) the cursor is not on one of this rowset's rows or its1129* insert row, or (3) the designated column does not store an1130* SQL {@code BOOLEAN} value1131* @see #getBoolean(String)1132*/1133public boolean getBoolean(int columnIndex) throws SQLException {1134throw new UnsupportedOperationException();1135}11361137/**1138* Retrieves the value of the designated column in the current row1139* of this {@code CachedRowSetImpl} object as a1140* {@code byte} value.1141*1142* @param columnIndex the first column is {@code 1}, the second1143* is {@code 2}, and so on; must be {@code 1} or larger1144* and equal to or less than the number of columns in the rowset1145* @return the column value as a {@code byte} in the Java programming1146* language; if the value is SQL {@code NULL}, the result is {@code 0}1147* @throws SQLException if (1) the given column index is out of bounds,1148* (2) the cursor is not on one of this rowset's rows or its1149* insert row, or (3) the designated column does not store an1150* SQL <b>{@code TINYINT}</b>, {@code SMALLINT, INTEGER,1151* BIGINT, REAL, FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR,1152* VARCHAR} or {@code LONGVARCHAR} value. The bold SQL type1153* designates the recommended return type.1154* @see #getByte(String)1155*/1156public byte getByte(int columnIndex) throws SQLException {1157throw new UnsupportedOperationException();1158}11591160/**1161* Retrieves the value of the designated column in the current row1162* of this {@code CachedRowSetImpl} object as a1163* {@code short} value.1164*1165* @param columnIndex the first column is {@code 1}, the second1166* is {@code 2}, and so on; must be {@code 1} or larger1167* and equal to or less than the number of columns in the rowset1168* @return the column value; if the value is SQL {@code NULL}, the1169* result is {@code 0}1170* @throws SQLException if (1) the given column index is out of bounds,1171* (2) the cursor is not on one of this rowset's rows or its1172* insert row, or (3) the designated column does not store an1173* SQL {@code TINYINT}, <b>{@code SMALLINT}</b>,1174* {@code INTEGER, BIGINT, REAL, FLOAT, DOUBLE,1175* DECIMAL, NUMERIC, BIT, CHAR, VARCHAR}1176* or {@code LONGVARCHAR} value. The bold SQL type1177* designates the recommended return type.1178* @see #getShort(String)1179*/1180public short getShort(int columnIndex) throws SQLException {1181throw new UnsupportedOperationException();1182}11831184/**1185* Retrieves the value of the designated column in the current row1186* of this {@code CachedRowSetImpl} object as an1187* {@code int} value.1188*1189* @param columnIndex the first column is {@code 1}, the second1190* is {@code 2}, and so on; must be {@code 1} or larger1191* and equal to or less than the number of columns in the rowset1192* @return the column value; if the value is SQL {@code NULL}, the1193* result is {@code 0}1194* @throws SQLException if (1) the given column index is out of bounds,1195* (2) the cursor is not on one of this rowset's rows or its1196* insert row, or (3) the designated column does not store an1197* SQL {@code TINYINT, SMALLINT,} <b>{@code INTEGER}</b>,1198* {@code BIGINT, REAL, FLOAT, DOUBLE, DECIMAL,1199* NUMERIC, BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.1200* The bold SQL type designates the1201* recommended return type.1202*/1203public int getInt(int columnIndex) throws SQLException {1204throw new UnsupportedOperationException();1205}12061207/**1208* Retrieves the value of the designated column in the current row1209* of this {@code CachedRowSetImpl} object as a1210* {@code long} value.1211*1212* @param columnIndex the first column is {@code 1}, the second1213* is {@code 2}, and so on; must be {@code 1} or larger1214* and equal to or less than the number of columns in the rowset1215* @return the column value; if the value is SQL {@code NULL}, the1216* result is {@code 0}1217* @throws SQLException if (1) the given column index is out of bounds,1218* (2) the cursor is not on one of this rowset's rows or its1219* insert row, or (3) the designated column does not store an1220* SQL {@code TINYINT, SMALLINT, INTEGER,}1221* <b>{@code BIGINT}</b>, {@code REAL, FLOAT, DOUBLE,1222* DECIMAL, NUMERIC, BIT, CHAR, VARCHAR}1223* or {@code LONGVARCHAR} value. The bold SQL type1224* designates the recommended return type.1225* @see #getLong(String)1226*/1227public long getLong(int columnIndex) throws SQLException {1228throw new UnsupportedOperationException();1229}12301231/**1232* Retrieves the value of the designated column in the current row1233* of this {@code CachedRowSetImpl} object as a1234* {@code float} value.1235*1236* @param columnIndex the first column is {@code 1}, the second1237* is {@code 2}, and so on; must be {@code 1} or larger1238* and equal to or less than the number of columns in the rowset1239* @return the column value; if the value is SQL {@code NULL}, the1240* result is {@code 0}1241* @throws SQLException if (1) the given column index is out of bounds,1242* (2) the cursor is not on one of this rowset's rows or its1243* insert row, or (3) the designated column does not store an1244* SQL {@code TINYINT, SMALLINT, INTEGER, BIGINT,}1245* <b>{@code REAL}</b>, {@code FLOAT, DOUBLE, DECIMAL, NUMERIC,1246* BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.1247* The bold SQL type designates the recommended return type.1248* @see #getFloat(String)1249*/1250public float getFloat(int columnIndex) throws SQLException {1251throw new UnsupportedOperationException();1252}12531254/**1255* Retrieves the value of the designated column in the current row1256* of this {@code CachedRowSetImpl} object as a1257* {@code double} value.1258*1259* @param columnIndex the first column is {@code 1}, the second1260* is {@code 2}, and so on; must be {@code 1} or larger1261* and equal to or less than the number of columns in the rowset1262* @return the column value; if the value is SQL {@code NULL}, the1263* result is {@code 0}1264* @throws SQLException if (1) the given column index is out of bounds,1265* (2) the cursor is not on one of this rowset's rows or its1266* insert row, or (3) the designated column does not store an1267* SQL {@code TINYINT, SMALLINT, INTEGER, BIGINT, REAL,}1268* <b>{@code FLOAT, DOUBLE}</b>,1269* {@code DECIMAL, NUMERIC, BIT, CHAR, VARCHAR}1270* or {@code LONGVARCHAR} value. The bold SQL type1271* designates the recommended return type.1272* @see #getDouble(String)1273*1274*/1275public double getDouble(int columnIndex) throws SQLException {1276throw new UnsupportedOperationException();1277}12781279/**1280* Retrieves the value of the designated column in the current row1281* of this {@code CachedRowSetImpl} object as a1282* {@code java.math.BigDecimal} object.1283* <P>1284* This method is deprecated; use the version of {@code getBigDecimal}1285* that does not take a scale parameter and returns a value with full1286* precision.1287*1288* @param columnIndex the first column is {@code 1}, the second1289* is {@code 2}, and so on; must be {@code 1} or larger1290* and equal to or less than the number of columns in the rowset1291* @param scale the number of digits to the right of the decimal point in the1292* value returned1293* @return the column value with the specified number of digits to the right1294* of the decimal point; if the value is SQL {@code NULL}, the1295* result is {@code null}1296* @throws SQLException if the given column index is out of bounds,1297* the cursor is not on a valid row, or this method fails1298* @deprecated1299*/1300@Deprecated1301public BigDecimal getBigDecimal(int columnIndex, int scale) throws SQLException {1302throw new UnsupportedOperationException();1303}13041305/**1306* Retrieves the value of the designated column in the current row1307* of this {@code CachedRowSetImpl} object as a1308* {@code byte} array value.1309*1310* @param columnIndex the first column is {@code 1}, the second1311* is {@code 2}, and so on; must be {@code 1} or larger1312* and equal to or less than the number of columns in the rowset1313* @return the column value as a {@code byte} array in the Java programming1314* language; if the value is SQL {@code NULL}, the1315* result is {@code null}1316*1317* @throws SQLException if (1) the given column index is out of bounds,1318* (2) the cursor is not on one of this rowset's rows or its1319* insert row, or (3) the designated column does not store an1320* SQL <b>{@code BINARY, VARBINARY}</b> or1321* {@code LONGVARBINARY} value.1322* The bold SQL type designates the recommended return type.1323* @see #getBytes(String)1324*/1325public byte[] getBytes(int columnIndex) throws SQLException {1326throw new UnsupportedOperationException();1327}13281329/**1330* Retrieves the value of the designated column in the current row1331* of this {@code CachedRowSetImpl} object as a1332* {@code java.sql.Date} object.1333*1334* @param columnIndex the first column is {@code 1}, the second1335* is {@code 2}, and so on; must be {@code 1} or larger1336* and equal to or less than the number of columns in the rowset1337* @return the column value as a {@code java.sql.Data} object; if1338* the value is SQL {@code NULL}, the1339* result is {@code null}1340* @throws SQLException if the given column index is out of bounds,1341* the cursor is not on a valid row, or this method fails1342*/1343public java.sql.Date getDate(int columnIndex) throws SQLException {1344throw new UnsupportedOperationException();1345}13461347/**1348* Retrieves the value of the designated column in the current row1349* of this {@code CachedRowSetImpl} object as a1350* {@code java.sql.Time} object.1351*1352* @param columnIndex the first column is {@code 1}, the second1353* is {@code 2}, and so on; must be {@code 1} or larger1354* and equal to or less than the number of columns in the rowset1355* @return the column value; if the value is SQL {@code NULL}, the1356* result is {@code null}1357* @throws SQLException if the given column index is out of bounds,1358* the cursor is not on a valid row, or this method fails1359*/1360public java.sql.Time getTime(int columnIndex) throws SQLException {1361throw new UnsupportedOperationException();1362}13631364/**1365* Retrieves the value of the designated column in the current row1366* of this {@code CachedRowSetImpl} object as a1367* {@code java.sql.Timestamp} object.1368*1369* @param columnIndex the first column is {@code 1}, the second1370* is {@code 2}, and so on; must be {@code 1} or larger1371* and equal to or less than the number of columns in the rowset1372* @return the column value; if the value is SQL {@code NULL}, the1373* result is {@code null}1374* @throws SQLException if the given column index is out of bounds,1375* the cursor is not on a valid row, or this method fails1376*/1377public java.sql.Timestamp getTimestamp(int columnIndex) throws SQLException {1378throw new UnsupportedOperationException();1379}13801381/**1382* Retrieves the value of the designated column in the current row of this1383* {@code CachedRowSetImpl} object as a {@code java.io.InputStream}1384* object.1385*1386* A column value can be retrieved as a stream of ASCII characters1387* and then read in chunks from the stream. This method is particularly1388* suitable for retrieving large {@code LONGVARCHAR} values. The JDBC1389* driver will do any necessary conversion from the database format into ASCII.1390*1391* <P><B>Note:</B> All the data in the returned stream must be1392* read prior to getting the value of any other column. The next1393* call to a get method implicitly closes the stream. . Also, a1394* stream may return {@code 0} for {@code CachedRowSetImpl.available()}1395* whether there is data available or not.1396*1397* @param columnIndex the first column is {@code 1}, the second1398* is {@code 2}, and so on; must be {@code 1} or larger1399* and equal to or less than the number of columns in this rowset1400* @return a Java input stream that delivers the database column value1401* as a stream of one-byte ASCII characters. If the value is SQL1402* {@code NULL}, the result is {@code null}.1403* @throws SQLException if (1) the given column index is out of bounds,1404* (2) the cursor is not on one of this rowset's rows or its1405* insert row, or (3) the designated column does not store an1406* SQL {@code CHAR, VARCHAR}, <b>{@code LONGVARCHAR}</b>,1407* {@code BINARY, VARBINARY} or {@code LONGVARBINARY} value. The1408* bold SQL type designates the recommended return types1409* that this method is used to retrieve.1410* @see #getAsciiStream(String)1411*/1412public java.io.InputStream getAsciiStream(int columnIndex) throws SQLException {1413throw new UnsupportedOperationException();1414}14151416/**1417* A column value can be retrieved as a stream of Unicode characters1418* and then read in chunks from the stream. This method is particularly1419* suitable for retrieving large LONGVARCHAR values. The JDBC driver will1420* do any necessary conversion from the database format into Unicode.1421*1422* <P><B>Note:</B> All the data in the returned stream must be1423* read prior to getting the value of any other column. The next1424* call to a get method implicitly closes the stream. . Also, a1425* stream may return 0 for available() whether there is data1426* available or not.1427*1428* @param columnIndex the first column is {@code 1}, the second1429* is {@code 2}, and so on; must be {@code 1} or larger1430* and equal to or less than the number of columns in this rowset1431* @return a Java input stream that delivers the database column value1432* as a stream of two byte Unicode characters. If the value is SQL NULL1433* then the result is null.1434* @throws SQLException if an error occurs1435* @deprecated1436*/1437@Deprecated1438public java.io.InputStream getUnicodeStream(int columnIndex) throws SQLException {1439throw new UnsupportedOperationException();1440}14411442/**1443* Retrieves the value of the designated column in the current row of this1444* {@code CachedRowSetImpl} object as a {@code java.io.InputStream}1445* object.1446* <P>1447* A column value can be retrieved as a stream of uninterpreted bytes1448* and then read in chunks from the stream. This method is particularly1449* suitable for retrieving large {@code LONGVARBINARY} values.1450*1451* <P><B>Note:</B> All the data in the returned stream must be1452* read prior to getting the value of any other column. The next1453* call to a get method implicitly closes the stream. Also, a1454* stream may return {@code 0} for1455* {@code CachedRowSetImpl.available()} whether there is data1456* available or not.1457*1458* @param columnIndex the first column is {@code 1}, the second1459* is {@code 2}, and so on; must be {@code 1} or larger1460* and equal to or less than the number of columns in the rowset1461* @return a Java input stream that delivers the database column value1462* as a stream of uninterpreted bytes. If the value is SQL {@code NULL}1463* then the result is {@code null}.1464* @throws SQLException if (1) the given column index is out of bounds,1465* (2) the cursor is not on one of this rowset's rows or its1466* insert row, or (3) the designated column does not store an1467* SQL {@code BINARY, VARBINARY} or <b>{@code LONGVARBINARY}</b>.1468* The bold type indicates the SQL type that this method is recommened1469* to retrieve.1470* @see #getBinaryStream(String)1471*/1472public java.io.InputStream getBinaryStream(int columnIndex) throws SQLException {1473throw new UnsupportedOperationException();14741475}147614771478//======================================================================1479// Methods for accessing results by column name1480//======================================================================14811482/**1483* Retrieves the value stored in the designated column1484* of the current row as a {@code String} object.1485*1486* @param columnName a {@code String} object giving the SQL name of1487* a column in this {@code CachedRowSetImpl} object1488* @return the column value; if the value is SQL {@code NULL},1489* the result is {@code null}1490* @throws SQLException if (1) the given column name is not the name of1491* a column in this rowset, (2) the cursor is not on one of1492* this rowset's rows or its insert row, or (3) the designated1493* column does not store an SQL {@code TINYINT, SMALLINT, INTEGER,1494* BIGINT, REAL, FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT,}1495* <b>{@code CHAR, VARCHAR}</b> or {@code LONGVARCHAR} value.1496* The bold SQL type designates the recommended return type.1497*/1498public String getString(String columnName) throws SQLException {1499throw new UnsupportedOperationException();1500}15011502/**1503* Retrieves the value stored in the designated column1504* of the current row as a {@code boolean} value.1505*1506* @param columnName a {@code String} object giving the SQL name of1507* a column in this {@code CachedRowSetImpl} object1508* @return the column value as a {@code boolean} in the Java programming1509* language; if the value is SQL {@code NULL},1510* the result is {@code false}1511* @throws SQLException if (1) the given column name is not the name of1512* a column in this rowset, (2) the cursor is not on one of1513* this rowset's rows or its insert row, or (3) the designated1514* column does not store an SQL {@code BOOLEAN} value1515* @see #getBoolean(int)1516*/1517public boolean getBoolean(String columnName) throws SQLException {1518throw new UnsupportedOperationException();1519}15201521/**1522* Retrieves the value stored in the designated column1523* of the current row as a {@code byte} value.1524*1525* @param columnName a {@code String} object giving the SQL name of1526* a column in this {@code CachedRowSetImpl} object1527* @return the column value as a {@code byte} in the Java programming1528* language; if the value is SQL {@code NULL}, the result is {@code 0}1529* @throws SQLException if (1) the given column name is not the name of1530* a column in this rowset, (2) the cursor is not on one of1531* this rowset's rows or its insert row, or (3) the designated1532* column does not store an SQL <b>{@code TINYINT}</b>,1533* {@code SMALLINT, INTEGER, BIGINT, REAL, FLOAT, DOUBLE,1534* DECIMAL, NUMERIC, BIT, CHAR, VARCHAR} or {@code LONGVARCHAR}1535* value. The bold type designates the recommended return type.1536*/1537public byte getByte(String columnName) throws SQLException {1538throw new UnsupportedOperationException();1539}15401541/**1542* Retrieves the value stored in the designated column1543* of the current row as a {@code short} value.1544*1545* @param columnName a {@code String} object giving the SQL name of1546* a column in this {@code CachedRowSetImpl} object1547* @return the column value; if the value is SQL {@code NULL},1548* the result is {@code 0}1549* @throws SQLException if (1) the given column name is not the name of1550* a column in this rowset, (2) the cursor is not on one of1551* this rowset's rows or its insert row, or (3) the designated1552* column does not store an SQL {@code TINYINT,}1553* <b>{@code SMALLINT}</b>, {@code INTEGER,1554* BIGINT, REAL, FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR,1555* VARCHAR} or {@code LONGVARCHAR} value. The bold SQL type1556* designates the recommended return type.1557* @see #getShort(int)1558*/1559public short getShort(String columnName) throws SQLException {1560throw new UnsupportedOperationException();1561}15621563/**1564* Retrieves the value stored in the designated column1565* of the current row as an {@code int} value.1566*1567* @param columnName a {@code String} object giving the SQL name of1568* a column in this {@code CachedRowSetImpl} object1569* @return the column value; if the value is SQL {@code NULL},1570* the result is {@code 0}1571* @throws SQLException if (1) the given column name is not the name1572* of a column in this rowset,1573* (2) the cursor is not on one of this rowset's rows or its1574* insert row, or (3) the designated column does not store an1575* SQL {@code TINYINT, SMALLINT,} <b>{@code INTEGER}</b>,1576* {@code BIGINT, REAL, FLOAT, DOUBLE, DECIMAL,1577* NUMERIC, BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.1578* The bold SQL type designates the1579* recommended return type.1580*/1581public int getInt(String columnName) throws SQLException {1582throw new UnsupportedOperationException();1583}15841585/**1586* Retrieves the value stored in the designated column1587* of the current row as a {@code long} value.1588*1589* @param columnName a {@code String} object giving the SQL name of1590* a column in this {@code CachedRowSetImpl} object1591* @return the column value; if the value is SQL {@code NULL},1592* the result is {@code 0}1593* @throws SQLException if (1) the given column name is not the name of1594* a column in this rowset, (2) the cursor is not on one of1595* this rowset's rows or its insert row, or (3) the designated1596* column does not store an SQL {@code TINYINT, SMALLINT, INTEGER,}1597* <b>{@code BIGINT}</b>, {@code REAL, FLOAT, DOUBLE, DECIMAL,1598* NUMERIC, BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.1599* The bold SQL type designates the recommended return type.1600* @see #getLong(int)1601*/1602public long getLong(String columnName) throws SQLException {1603throw new UnsupportedOperationException();1604}16051606/**1607* Retrieves the value stored in the designated column1608* of the current row as a {@code float} value.1609*1610* @param columnName a {@code String} object giving the SQL name of1611* a column in this {@code CachedRowSetImpl} object1612* @return the column value; if the value is SQL {@code NULL},1613* the result is {@code 0}1614* @throws SQLException if (1) the given column name is not the name of1615* a column in this rowset, (2) the cursor is not on one of1616* this rowset's rows or its insert row, or (3) the designated1617* column does not store an SQL {@code TINYINT, SMALLINT, INTEGER,1618* BIGINT,} <b>{@code REAL}</b>, {@code FLOAT, DOUBLE, DECIMAL,1619* NUMERIC, BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.1620* The bold SQL type designates the recommended return type.1621* @see #getFloat(String)1622*/1623public float getFloat(String columnName) throws SQLException {1624throw new UnsupportedOperationException();1625}16261627/**1628* Retrieves the value stored in the designated column1629* of the current row of this {@code CachedRowSetImpl} object1630* as a {@code double} value.1631*1632* @param columnName a {@code String} object giving the SQL name of1633* a column in this {@code CachedRowSetImpl} object1634* @return the column value; if the value is SQL {@code NULL},1635* the result is {@code 0}1636* @throws SQLException if (1) the given column name is not the name of1637* a column in this rowset, (2) the cursor is not on one of1638* this rowset's rows or its insert row, or (3) the designated1639* column does not store an SQL {@code TINYINT, SMALLINT, INTEGER,1640* BIGINT, REAL,} <b>{@code FLOAT, DOUBLE}</b>, {@code DECIMAL,1641* NUMERIC, BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.1642* The bold SQL type designates the recommended return types.1643* @see #getDouble(int)1644*/1645public double getDouble(String columnName) throws SQLException {1646throw new UnsupportedOperationException();1647}16481649/**1650* Retrieves the value stored in the designated column1651* of the current row as a {@code java.math.BigDecimal} object.1652*1653* @param columnName a {@code String} object giving the SQL name of1654* a column in this {@code CachedRowSetImpl} object1655* @param scale the number of digits to the right of the decimal point1656* @return a java.math.BugDecimal object with <i>{@code scale}</i>1657* number of digits to the right of the decimal point.1658* @throws SQLException if (1) the given column name is not the name of1659* a column in this rowset, (2) the cursor is not on one of1660* this rowset's rows or its insert row, or (3) the designated1661* column does not store an SQL {@code TINYINT, SMALLINT, INTEGER,1662* BIGINT, REAL, FLOAT, DOUBLE,} <b>{@code DECIMAL, NUMERIC}</b>,1663* {@code BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.1664* The bold SQL type designates the recommended return type1665* that this method is used to retrieve.1666* @deprecated Use the {@code getBigDecimal(String columnName)}1667* method instead1668*/1669@Deprecated1670public BigDecimal getBigDecimal(String columnName, int scale) throws SQLException {1671throw new UnsupportedOperationException();1672}16731674/**1675* Retrieves the value stored in the designated column1676* of the current row as a {@code byte} array.1677* The bytes represent the raw values returned by the driver.1678*1679* @param columnName a {@code String} object giving the SQL name of1680* a column in this {@code CachedRowSetImpl} object1681* @return the column value as a {@code byte} array in the Java programming1682* language; if the value is SQL {@code NULL}, the result is {@code null}1683* @throws SQLException if (1) the given column name is not the name of1684* a column in this rowset, (2) the cursor is not on one of1685* this rowset's rows or its insert row, or (3) the designated1686* column does not store an SQL <b>{@code BINARY, VARBINARY}</b>1687* or {@code LONGVARBINARY} values.1688* The bold SQL type designates the recommended return type.1689* @see #getBytes(int)1690*/1691public byte[] getBytes(String columnName) throws SQLException {1692throw new UnsupportedOperationException();1693}16941695/**1696* Retrieves the value stored in the designated column1697* of the current row as a {@code java.sql.Date} object.1698*1699* @param columnName a {@code String} object giving the SQL name of1700* a column in this {@code CachedRowSetImpl} object1701* @return the column value; if the value is SQL {@code NULL},1702* the result is {@code null}1703* @throws SQLException if (1) the given column name is not the name of1704* a column in this rowset, (2) the cursor is not on one of1705* this rowset's rows or its insert row, or (3) the designated1706* column does not store an SQL {@code DATE} or1707* {@code TIMESTAMP} value1708*/1709public java.sql.Date getDate(String columnName) throws SQLException {1710throw new UnsupportedOperationException();1711}17121713/**1714* Retrieves the value stored in the designated column1715* of the current row as a {@code java.sql.Time} object.1716*1717* @param columnName a {@code String} object giving the SQL name of1718* a column in this {@code CachedRowSetImpl} object1719* @return the column value; if the value is SQL {@code NULL},1720* the result is {@code null}1721* @throws SQLException if the given column name does not match one of1722* this rowset's column names or the cursor is not on one of1723* this rowset's rows or its insert row1724*/1725public java.sql.Time getTime(String columnName) throws SQLException {1726throw new UnsupportedOperationException();1727}17281729/**1730* Retrieves the value stored in the designated column1731* of the current row as a {@code java.sql.Timestamp} object.1732*1733* @param columnName a {@code String} object giving the SQL name of1734* a column in this {@code CachedRowSetImpl} object1735* @return the column value; if the value is SQL {@code NULL},1736* the result is {@code null}1737* @throws SQLException if the given column name does not match one of1738* this rowset's column names or the cursor is not on one of1739* this rowset's rows or its insert row1740*/1741public java.sql.Timestamp getTimestamp(String columnName) throws SQLException {1742throw new UnsupportedOperationException();1743}17441745/**1746* Retrieves the value of the designated column in the current row of this1747* {@code CachedRowSetImpl} object as a {@code java.io.InputStream}1748* object.1749*1750* A column value can be retrieved as a stream of ASCII characters1751* and then read in chunks from the stream. This method is particularly1752* suitable for retrieving large {@code LONGVARCHAR} values. The1753* {@code SyncProvider} will rely on the JDBC driver to do any necessary1754* conversion from the database format into ASCII format.1755*1756* <P><B>Note:</B> All the data in the returned stream must1757* be read prior to getting the value of any other column. The1758* next call to a {@code getXXX} method implicitly closes the stream.1759*1760* @param columnName a {@code String} object giving the SQL name of1761* a column in this {@code CachedRowSetImpl} object1762* @return a Java input stream that delivers the database column value1763* as a stream of one-byte ASCII characters. If the value is SQL1764* {@code NULL}, the result is {@code null}.1765* @throws SQLException if (1) the given column name is not the name of1766* a column in this rowset1767* (2) the cursor is not on one of this rowset's rows or its1768* insert row, or (3) the designated column does not store an1769* SQL {@code CHAR, VARCHAR}, <b>{@code LONGVARCHAR}</b>,1770* {@code BINARY, VARBINARY} or {@code LONGVARBINARY} value. The1771* bold SQL type designates the recommended return types1772* that this method is used to retrieve.1773* @see #getAsciiStream(int)1774*/1775public java.io.InputStream getAsciiStream(String columnName) throws SQLException {1776throw new UnsupportedOperationException();17771778}17791780/**1781* A column value can be retrieved as a stream of Unicode characters1782* and then read in chunks from the stream. This method is particularly1783* suitable for retrieving large {@code LONGVARCHAR} values.1784* The JDBC driver will do any necessary conversion from the database1785* format into Unicode.1786*1787* <P><B>Note:</B> All the data in the returned stream must1788* be read prior to getting the value of any other column. The1789* next call to a {@code getXXX} method implicitly closes the stream.1790*1791* @param columnName a {@code String} object giving the SQL name of1792* a column in this {@code CachedRowSetImpl} object1793* @return a Java input stream that delivers the database column value1794* as a stream of two-byte Unicode characters. If the value is1795* SQL {@code NULL}, the result is {@code null}.1796* @throws SQLException if the given column name does not match one of1797* this rowset's column names or the cursor is not on one of1798* this rowset's rows or its insert row1799* @deprecated use the method {@code getCharacterStream} instead1800*/1801@Deprecated1802public java.io.InputStream getUnicodeStream(String columnName) throws SQLException {1803throw new UnsupportedOperationException();1804}18051806/**1807* Retrieves the value of the designated column in the current row of this1808* {@code CachedRowSetImpl} object as a {@code java.io.InputStream}1809* object.1810* <P>1811* A column value can be retrieved as a stream of uninterpreted bytes1812* and then read in chunks from the stream. This method is particularly1813* suitable for retrieving large {@code LONGVARBINARY} values.1814*1815* <P><B>Note:</B> All the data in the returned stream must be1816* read prior to getting the value of any other column. The next1817* call to a get method implicitly closes the stream. Also, a1818* stream may return {@code 0} for {@code CachedRowSetImpl.available()}1819* whether there is data available or not.1820*1821* @param columnName a {@code String} object giving the SQL name of1822* a column in this {@code CachedRowSetImpl} object1823* @return a Java input stream that delivers the database column value1824* as a stream of uninterpreted bytes. If the value is SQL1825* {@code NULL}, the result is {@code null}.1826* @throws SQLException if (1) the given column name is unknown,1827* (2) the cursor is not on one of this rowset's rows or its1828* insert row, or (3) the designated column does not store an1829* SQL {@code BINARY, VARBINARY} or <b>{@code LONGVARBINARY}</b>1830* The bold type indicates the SQL type that this method is recommened1831* to retrieve.1832* @see #getBinaryStream(int)1833*1834*/1835public java.io.InputStream getBinaryStream(String columnName) throws SQLException {1836throw new UnsupportedOperationException();1837}183818391840//=====================================================================1841// Advanced features:1842//=====================================================================18431844/**1845* The first warning reported by calls on this {@code CachedRowSetImpl}1846* object is returned. Subsequent {@code CachedRowSetImpl} warnings will1847* be chained to this {@code SQLWarning}.1848*1849* <P>The warning chain is automatically cleared each time a new1850* row is read.1851*1852* <P><B>Note:</B> This warning chain only covers warnings caused1853* by {@code ResultSet} methods. Any warning caused by statement1854* methods (such as reading OUT parameters) will be chained on the1855* {@code Statement} object.1856*1857* @return the first SQLWarning or null1858*/1859public SQLWarning getWarnings() {1860throw new UnsupportedOperationException();1861}18621863/**1864* Clears all the warnings reporeted for the {@code CachedRowSetImpl}1865* object. After a call to this method, the {@code getWarnings} method1866* returns {@code null} until a new warning is reported for this1867* {@code CachedRowSetImpl} object.1868*/1869public void clearWarnings() {1870throw new UnsupportedOperationException();1871}18721873/**1874* Retrieves the name of the SQL cursor used by this1875* {@code CachedRowSetImpl} object.1876*1877* <P>In SQL, a result table is retrieved through a cursor that is1878* named. The current row of a {@code ResultSet} can be updated or deleted1879* using a positioned update/delete statement that references the1880* cursor name. To ensure that the cursor has the proper isolation1881* level to support an update operation, the cursor's {@code SELECT}1882* statement should be of the form {@code select for update}.1883* If the {@code for update} clause1884* is omitted, positioned updates may fail.1885*1886* <P>JDBC supports this SQL feature by providing the name of the1887* SQL cursor used by a {@code ResultSet} object. The current row1888* of a result set is also the current row of this SQL cursor.1889*1890* <P><B>Note:</B> If positioned updates are not supported, an1891* {@code SQLException} is thrown.1892*1893* @return the SQL cursor name for this {@code CachedRowSetImpl} object's1894* cursor1895* @throws SQLException if an error occurs1896*/1897public String getCursorName() throws SQLException {1898throw new UnsupportedOperationException();1899}19001901/**1902* Retrieves a {@code ResultSetMetaData} object instance that1903* contains information about the {@code CachedRowSet} object.1904* However, applications should cast the returned object to a1905* {@code RowSetMetaData} interface implementation. In the1906* reference implementation, this cast can be done on the1907* {@code RowSetMetaDataImpl} class.1908* <P>1909* For example:1910* <pre>1911* CachedRowSet crs = new CachedRowSetImpl();1912* RowSetMetaDataImpl metaData =1913* (RowSetMetaDataImpl)crs.getMetaData();1914* // Set the number of columns in the RowSet object for1915* // which this RowSetMetaDataImpl object was created to the1916* // given number.1917* metaData.setColumnCount(3);1918* crs.setMetaData(metaData);1919* </pre>1920*1921* @return the {@code ResultSetMetaData} object that describes this1922* {@code CachedRowSetImpl} object's columns1923* @throws SQLException if an error occurs in generating the RowSet1924* meta data; or if the {@code CachedRowSetImpl} is empty.1925* @see javax.sql.RowSetMetaData1926*/1927public ResultSetMetaData getMetaData() throws SQLException {1928throw new UnsupportedOperationException();1929}193019311932/**1933* Retrieves the value of the designated column in the current row1934* of this {@code CachedRowSetImpl} object as an1935* {@code Object} value.1936* <P>1937* The type of the {@code Object} will be the default1938* Java object type corresponding to the column's SQL type,1939* following the mapping for built-in types specified in the JDBC 3.01940* specification.1941* <P>1942* This method may also be used to read datatabase-specific1943* abstract data types.1944* <P>1945* This implementation of the method {@code getObject} extends its1946* behavior so that it gets the attributes of an SQL structured type1947* as an array of {@code Object} values. This method also custom1948* maps SQL user-defined types to classes in the Java programming language.1949* When the specified column contains1950* a structured or distinct value, the behavior of this method is as1951* if it were a call to the method {@code getObject(columnIndex,1952* this.getStatement().getConnection().getTypeMap())}.1953*1954* @param columnIndex the first column is {@code 1}, the second1955* is {@code 2}, and so on; must be {@code 1} or larger1956* and equal to or less than the number of columns in the rowset1957* @return a {@code java.lang.Object} holding the column value;1958* if the value is SQL {@code NULL}, the result is {@code null}1959* @throws SQLException if the given column index is out of bounds,1960* the cursor is not on a valid row, or there is a problem getting1961* the {@code Class} object for a custom mapping1962* @see #getObject(String)1963*/1964public Object getObject(int columnIndex) throws SQLException {1965throw new UnsupportedOperationException();1966}19671968/**1969* Retrieves the value of the designated column in the current row1970* of this {@code CachedRowSetImpl} object as an1971* {@code Object} value.1972* <P>1973* The type of the {@code Object} will be the default1974* Java object type corresponding to the column's SQL type,1975* following the mapping for built-in types specified in the JDBC 3.01976* specification.1977* <P>1978* This method may also be used to read datatabase-specific1979* abstract data types.1980* <P>1981* This implementation of the method {@code getObject} extends its1982* behavior so that it gets the attributes of an SQL structured type1983* as an array of {@code Object} values. This method also custom1984* maps SQL user-defined types to classes1985* in the Java programming language. When the specified column contains1986* a structured or distinct value, the behavior of this method is as1987* if it were a call to the method {@code getObject(columnIndex,1988* this.getStatement().getConnection().getTypeMap())}.1989*1990* @param columnName a {@code String} object that must match the1991* SQL name of a column in this rowset, ignoring case1992* @return a {@code java.lang.Object} holding the column value;1993* if the value is SQL {@code NULL}, the result is {@code null}1994* @throws SQLException if (1) the given column name does not match one of1995* this rowset's column names, (2) the cursor is not1996* on a valid row, or (3) there is a problem getting1997* the {@code Class} object for a custom mapping1998* @see #getObject(int)1999*/2000public Object getObject(String columnName) throws SQLException {2001throw new UnsupportedOperationException();2002}20032004//----------------------------------------------------------------20052006/**2007* Maps the given column name for one of this {@code CachedRowSetImpl}2008* object's columns to its column number.2009*2010* @param columnName a {@code String} object that must match the2011* SQL name of a column in this rowset, ignoring case2012* @return the column index of the given column name2013* @throws SQLException if the given column name does not match one2014* of this rowset's column names2015*/2016public int findColumn(String columnName) throws SQLException {2017throw new UnsupportedOperationException();2018}20192020//--------------------------JDBC 2.0-----------------------------------20212022//---------------------------------------------------------------------2023// Getter's and Setter's2024//---------------------------------------------------------------------20252026/**2027* Retrieves the value stored in the designated column2028* of the current row as a {@code java.io.Reader} object.2029*2030* <P><B>Note:</B> All the data in the returned stream must2031* be read prior to getting the value of any other column. The2032* next call to a {@code getXXX} method implicitly closes the stream.2033*2034* @param columnIndex the first column is {@code 1}, the second2035* is {@code 2}, and so on; must be {@code 1} or larger2036* and equal to or less than the number of columns in the rowset2037* @return a Java character stream that delivers the database column value2038* as a stream of two-byte unicode characters in a2039* {@code java.io.Reader} object. If the value is2040* SQL {@code NULL}, the result is {@code null}.2041* @throws SQLException if (1) the given column index is out of bounds,2042* (2) the cursor is not on one of this rowset's rows or its2043* insert row, or (3) the designated column does not store an2044* SQL {@code CHAR, VARCHAR,} <b>{@code LONGVARCHAR}</b>,2045* {@code BINARY, VARBINARY} or {@code LONGVARBINARY} value.2046* The bold SQL type designates the recommended return type.2047* @see #getCharacterStream(String)2048*/2049public java.io.Reader getCharacterStream(int columnIndex) throws SQLException{2050throw new UnsupportedOperationException();2051}20522053/**2054* Retrieves the value stored in the designated column2055* of the current row as a {@code java.io.Reader} object.2056*2057* <P><B>Note:</B> All the data in the returned stream must2058* be read prior to getting the value of any other column. The2059* next call to a {@code getXXX} method implicitly closes the stream.2060*2061* @param columnName a {@code String} object giving the SQL name of2062* a column in this {@code CachedRowSetImpl} object2063* @return a Java input stream that delivers the database column value2064* as a stream of two-byte Unicode characters. If the value is2065* SQL {@code NULL}, the result is {@code null}.2066* @throws SQLException if (1) the given column name is not the name of2067* a column in this rowset, (2) the cursor is not on one of2068* this rowset's rows or its insert row, or (3) the designated2069* column does not store an SQL {@code CHAR, VARCHAR,}2070* <b>{@code LONGVARCHAR}</b>,2071* {@code BINARY, VARYBINARY} or {@code LONGVARBINARY} value.2072* The bold SQL type designates the recommended return type.2073*/2074public java.io.Reader getCharacterStream(String columnName) throws SQLException {2075throw new UnsupportedOperationException();2076}20772078/**2079* Retrieves the value of the designated column in the current row2080* of this {@code CachedRowSetImpl} object as a2081* {@code java.math.BigDecimal} object.2082*2083* @param columnIndex the first column is {@code 1}, the second2084* is {@code 2}, and so on; must be {@code 1} or larger2085* and equal to or less than the number of columns in the rowset2086* @return a {@code java.math.BigDecimal} value with full precision;2087* if the value is SQL {@code NULL}, the result is {@code null}2088* @throws SQLException if (1) the given column index is out of bounds,2089* (2) the cursor is not on one of this rowset's rows or its2090* insert row, or (3) the designated column does not store an2091* SQL {@code TINYINT, SMALLINT, INTEGER, BIGINT, REAL,2092* FLOAT, DOUBLE,} <b>{@code DECIMAL, NUMERIC}</b>,2093* {@code BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.2094* The bold SQL type designates the2095* recommended return types that this method is used to retrieve.2096* @see #getBigDecimal(String)2097*/2098public BigDecimal getBigDecimal(int columnIndex) throws SQLException {2099throw new UnsupportedOperationException();2100}21012102/**2103* Retrieves the value of the designated column in the current row2104* of this {@code CachedRowSetImpl} object as a2105* {@code java.math.BigDecimal} object.2106*2107* @param columnName a {@code String} object that must match the2108* SQL name of a column in this rowset, ignoring case2109* @return a {@code java.math.BigDecimal} value with full precision;2110* if the value is SQL {@code NULL}, the result is {@code null}2111* @throws SQLException if (1) the given column name is not the name of2112* a column in this rowset, (2) the cursor is not on one of2113* this rowset's rows or its insert row, or (3) the designated2114* column does not store an SQL {@code TINYINT, SMALLINT, INTEGER,2115* BIGINT, REAL, FLOAT, DOUBLE,} <b>{@code DECIMAL, NUMERIC}</b>,2116* {@code BIT, CHAR, VARCHAR} or {@code LONGVARCHAR} value.2117* The bold SQL type designates the recommended return type2118* that this method is used to retrieve.2119* @see #getBigDecimal(int)2120*/2121public BigDecimal getBigDecimal(String columnName) throws SQLException {2122throw new UnsupportedOperationException();2123}21242125//---------------------------------------------------------------------2126// Traversal/Positioning2127//---------------------------------------------------------------------21282129/**2130* Returns the number of rows in this {@code CachedRowSetImpl} object.2131*2132* @return number of rows in the rowset2133*/2134public int size() {2135throw new UnsupportedOperationException();2136}21372138/**2139* Indicates whether the cursor is before the first row in this2140* {@code CachedRowSetImpl} object.2141*2142* @return {@code true} if the cursor is before the first row;2143* {@code false} otherwise or if the rowset contains no rows2144* @throws SQLException if an error occurs2145*/2146public boolean isBeforeFirst() throws SQLException {2147throw new UnsupportedOperationException();2148}21492150/**2151* Indicates whether the cursor is after the last row in this2152* {@code CachedRowSetImpl} object.2153*2154* @return {@code true} if the cursor is after the last row;2155* {@code false} otherwise or if the rowset contains no rows2156* @throws SQLException if an error occurs2157*/2158public boolean isAfterLast() throws SQLException {2159throw new UnsupportedOperationException();2160}21612162/**2163* Indicates whether the cursor is on the first row in this2164* {@code CachedRowSetImpl} object.2165*2166* @return {@code true} if the cursor is on the first row;2167* {@code false} otherwise or if the rowset contains no rows2168* @throws SQLException if an error occurs2169*/2170public boolean isFirst() throws SQLException {2171throw new UnsupportedOperationException();2172}21732174/**2175* Indicates whether the cursor is on the last row in this2176* {@code CachedRowSetImpl} object.2177* <P>2178* Note: Calling the method {@code isLast} may be expensive2179* because the JDBC driver might need to fetch ahead one row in order2180* to determine whether the current row is the last row in this rowset.2181*2182* @return {@code true} if the cursor is on the last row;2183* {@code false} otherwise or if this rowset contains no rows2184* @throws SQLException if an error occurs2185*/2186public boolean isLast() throws SQLException {2187throw new UnsupportedOperationException();2188}21892190/**2191* Moves this {@code CachedRowSetImpl} object's cursor to the front of2192* the rowset, just before the first row. This method has no effect if2193* this rowset contains no rows.2194*2195* @throws SQLException if an error occurs or the type of this rowset2196* is {@code ResultSet.TYPE_FORWARD_ONLY}2197*/2198public void beforeFirst() throws SQLException {2199throw new UnsupportedOperationException();2200}22012202/**2203* Moves this {@code CachedRowSetImpl} object's cursor to the end of2204* the rowset, just after the last row. This method has no effect if2205* this rowset contains no rows.2206*2207* @throws SQLException if an error occurs2208*/2209public void afterLast() throws SQLException {2210throw new UnsupportedOperationException();2211}22122213/**2214* Moves this {@code CachedRowSetImpl} object's cursor to the first row2215* and returns {@code true} if the operation was successful. This2216* method also notifies registered listeners that the cursor has moved.2217*2218* @return {@code true} if the cursor is on a valid row;2219* {@code false} otherwise or if there are no rows in this2220* {@code CachedRowSetImpl} object2221* @throws SQLException if the type of this rowset2222* is {@code ResultSet.TYPE_FORWARD_ONLY}2223*/2224public boolean first() throws SQLException {2225throw new UnsupportedOperationException();2226}22272228/**2229* Moves this {@code CachedRowSetImpl} object's cursor to the first2230* row and returns {@code true} if the operation is successful.2231* <P>2232* This method is called internally by the methods {@code first},2233* {@code isFirst}, and {@code absolute}.2234* It in turn calls the method {@code internalNext} in order to2235* handle the case where the first row is a deleted row that is not visible.2236* <p>2237* This is a implementation only method and is not required as a standard2238* implementation of the {@code CachedRowSet} interface.2239*2240* @return {@code true} if the cursor moved to the first row;2241* {@code false} otherwise2242* @throws SQLException if an error occurs2243*/2244protected boolean internalFirst() throws SQLException {2245throw new UnsupportedOperationException();2246}22472248/**2249* Moves this {@code CachedRowSetImpl} object's cursor to the last row2250* and returns {@code true} if the operation was successful. This2251* method also notifies registered listeners that the cursor has moved.2252*2253* @return {@code true} if the cursor is on a valid row;2254* {@code false} otherwise or if there are no rows in this2255* {@code CachedRowSetImpl} object2256* @throws SQLException if the type of this rowset2257* is {@code ResultSet.TYPE_FORWARD_ONLY}2258*/2259public boolean last() throws SQLException {2260throw new UnsupportedOperationException();2261}22622263/**2264* Moves this {@code CachedRowSetImpl} object's cursor to the last2265* row and returns {@code true} if the operation is successful.2266* <P>2267* This method is called internally by the method {@code last}2268* when rows have been deleted and the deletions are not visible.2269* The method {@code internalLast} handles the case where the2270* last row is a deleted row that is not visible by in turn calling2271* the method {@code internalPrevious}.2272* <p>2273* This is a implementation only method and is not required as a standard2274* implementation of the {@code CachedRowSet} interface.2275*2276* @return {@code true} if the cursor moved to the last row;2277* {@code false} otherwise2278* @throws SQLException if an error occurs2279*/2280protected boolean internalLast() throws SQLException {2281throw new UnsupportedOperationException();2282}22832284/**2285* Returns the number of the current row in this {@code CachedRowSetImpl}2286* object. The first row is number 1, the second number 2, and so on.2287*2288* @return the number of the current row; {@code 0} if there is no2289* current row2290* @throws SQLException if an error occurs; or if the {@code CacheRowSetImpl}2291* is empty2292*/2293public int getRow() throws SQLException {2294return crsSync.getRow();2295}22962297/**2298* Moves this {@code CachedRowSetImpl} object's cursor to the row number2299* specified.2300*2301* <p>If the number is positive, the cursor moves to an absolute row with2302* respect to the beginning of the rowset. The first row is row 1, the second2303* is row 2, and so on. For example, the following command, in which2304* {@code crs} is a {@code CachedRowSetImpl} object, moves the cursor2305* to the fourth row, starting from the beginning of the rowset.2306* <PRE>{@code2307*2308* crs.absolute(4);2309*2310* }</PRE>2311* <P>2312* If the number is negative, the cursor moves to an absolute row position2313* with respect to the end of the rowset. For example, calling2314* {@code absolute(-1)} positions the cursor on the last row,2315* {@code absolute(-2)} moves it on the next-to-last row, and so on.2316* If the {@code CachedRowSetImpl} object {@code crs} has five rows,2317* the following command moves the cursor to the fourth-to-last row, which2318* in the case of a rowset with five rows, is also the second row, counting2319* from the beginning.2320* <PRE>{@code2321*2322* crs.absolute(-4);2323*2324* }</PRE>2325*2326* If the number specified is larger than the number of rows, the cursor2327* will move to the position after the last row. If the number specified2328* would move the cursor one or more rows before the first row, the cursor2329* moves to the position before the first row.2330* <P>2331* Note: Calling {@code absolute(1)} is the same as calling the2332* method {@code first()}. Calling {@code absolute(-1)} is the2333* same as calling {@code last()}.2334*2335* @param row a positive number to indicate the row, starting row numbering from2336* the first row, which is {@code 1}; a negative number to indicate2337* the row, starting row numbering from the last row, which is2338* {@code -1}; it must not be {@code 0}2339* @return {@code true} if the cursor is on the rowset; {@code false}2340* otherwise2341* @throws SQLException if the given cursor position is {@code 0} or the2342* type of this rowset is {@code ResultSet.TYPE_FORWARD_ONLY}2343*/2344public boolean absolute( int row ) throws SQLException {2345throw new UnsupportedOperationException();2346}23472348/**2349* Moves the cursor the specified number of rows from the current2350* position, with a positive number moving it forward and a2351* negative number moving it backward.2352* <P>2353* If the number is positive, the cursor moves the specified number of2354* rows toward the end of the rowset, starting at the current row.2355* For example, the following command, in which2356* {@code crs} is a {@code CachedRowSetImpl} object with 100 rows,2357* moves the cursor forward four rows from the current row. If the2358* current row is 50, the cursor would move to row 54.2359* <PRE>{@code2360*2361* crs.relative(4);2362*2363* }</PRE>2364* <P>2365* If the number is negative, the cursor moves back toward the beginning2366* the specified number of rows, starting at the current row.2367* For example, calling the method2368* {@code absolute(-1)} positions the cursor on the last row,2369* {@code absolute(-2)} moves it on the next-to-last row, and so on.2370* If the {@code CachedRowSetImpl} object {@code crs} has five rows,2371* the following command moves the cursor to the fourth-to-last row, which2372* in the case of a rowset with five rows, is also the second row2373* from the beginning.2374* <PRE>{@code2375*2376* crs.absolute(-4);2377*2378* }</PRE>2379*2380* If the number specified is larger than the number of rows, the cursor2381* will move to the position after the last row. If the number specified2382* would move the cursor one or more rows before the first row, the cursor2383* moves to the position before the first row. In both cases, this method2384* throws an {@code SQLException}.2385* <P>2386* Note: Calling {@code absolute(1)} is the same as calling the2387* method {@code first()}. Calling {@code absolute(-1)} is the2388* same as calling {@code last()}. Calling {@code relative(0)}2389* is valid, but it does not change the cursor position.2390*2391* @param rows an {@code int} indicating the number of rows to move2392* the cursor, starting at the current row; a positive number2393* moves the cursor forward; a negative number moves the cursor2394* backward; must not move the cursor past the valid2395* rows2396* @return {@code true} if the cursor is on a row in this2397* {@code CachedRowSetImpl} object; {@code false}2398* otherwise2399* @throws SQLException if there are no rows in this rowset, the cursor is2400* positioned either before the first row or after the last row, or2401* the rowset is type {@code ResultSet.TYPE_FORWARD_ONLY}2402*/2403public boolean relative(int rows) throws SQLException {2404throw new UnsupportedOperationException();2405}24062407/**2408* Moves this {@code CachedRowSetImpl} object's cursor to the2409* previous row and returns {@code true} if the cursor is on2410* a valid row or {@code false} if it is not.2411* This method also notifies all listeners registered with this2412* {@code CachedRowSetImpl} object that its cursor has moved.2413* <P>2414* Note: calling the method {@code previous()} is not the same2415* as calling the method {@code relative(-1)}. This is true2416* because it is possible to call {@code previous()} from the insert2417* row, from after the last row, or from the current row, whereas2418* {@code relative} may only be called from the current row.2419* <P>2420* The method {@code previous} may used in a {@code while}2421* loop to iterate through a rowset starting after the last row2422* and moving toward the beginning. The loop ends when {@code previous}2423* returns {@code false}, meaning that there are no more rows.2424* For example, the following code fragment retrieves all the data in2425* the {@code CachedRowSetImpl} object {@code crs}, which has2426* three columns. Note that the cursor must initially be positioned2427* after the last row so that the first call to the method2428* {@code previous} places the cursor on the last line.2429* <PRE>{@code2430*2431* crs.afterLast();2432* while (previous()) {2433* String name = crs.getString(1);2434* int age = crs.getInt(2);2435* short ssn = crs.getShort(3);2436* System.out.println(name + " " + age + " " + ssn);2437* }2438*2439* }</PRE>2440* This method throws an {@code SQLException} if the cursor is not2441* on a row in the rowset, before the first row, or after the last row.2442*2443* @return {@code true} if the cursor is on a valid row;2444* {@code false} if it is before the first row or after the2445* last row2446* @throws SQLException if the cursor is not on a valid position or the2447* type of this rowset is {@code ResultSet.TYPE_FORWARD_ONLY}2448*/2449public boolean previous() throws SQLException {2450throw new UnsupportedOperationException();2451}24522453/**2454* Moves the cursor to the previous row in this {@code CachedRowSetImpl}2455* object, skipping past deleted rows that are not visible; returns2456* {@code true} if the cursor is on a row in this rowset and2457* {@code false} when the cursor goes before the first row.2458* <P>2459* This method is called internally by the method {@code previous}.2460* <P>2461* This is a implementation only method and is not required as a standard2462* implementation of the {@code CachedRowSet} interface.2463*2464* @return {@code true} if the cursor is on a row in this rowset;2465* {@code false} when the cursor reaches the position before2466* the first row2467* @throws SQLException if an error occurs2468*/2469protected boolean internalPrevious() throws SQLException {2470throw new UnsupportedOperationException();2471}247224732474//---------------------------------------------------------------------2475// Updates2476//---------------------------------------------------------------------24772478/**2479* Indicates whether the current row of this {@code CachedRowSetImpl}2480* object has been updated. The value returned2481* depends on whether this rowset can detect updates: {@code false}2482* will always be returned if it does not detect updates.2483*2484* @return {@code true} if the row has been visibly updated2485* by the owner or another and updates are detected;2486* {@code false} otherwise2487* @throws SQLException if the cursor is on the insert row or not2488* not on a valid row2489*2490* @see DatabaseMetaData#updatesAreDetected2491*/2492public boolean rowUpdated() throws SQLException {2493throw new UnsupportedOperationException();2494}24952496/**2497* Indicates whether the designated column of the current row of2498* this {@code CachedRowSetImpl} object has been updated. The2499* value returned depends on whether this rowset can detcted updates:2500* {@code false} will always be returned if it does not detect updates.2501*2502* @param idx the index identifier of the column that may be have been updated.2503* @return {@code true} is the designated column has been updated2504* and the rowset detects updates; {@code false} if the rowset has not2505* been updated or the rowset does not detect updates2506* @throws SQLException if the cursor is on the insert row or not2507* on a valid row2508* @see DatabaseMetaData#updatesAreDetected2509*/2510public boolean columnUpdated(int idx) throws SQLException {2511throw new UnsupportedOperationException();2512}25132514/**2515* Indicates whether the designated column of the current row of2516* this {@code CachedRowSetImpl} object has been updated. The2517* value returned depends on whether this rowset can detcted updates:2518* {@code false} will always be returned if it does not detect updates.2519*2520* @param columnName the {@code String} column name column that may be have2521* been updated.2522* @return {@code true} is the designated column has been updated2523* and the rowset detects updates; {@code false} if the rowset has not2524* been updated or the rowset does not detect updates2525* @throws SQLException if the cursor is on the insert row or not2526* on a valid row2527* @see DatabaseMetaData#updatesAreDetected2528*/2529public boolean columnUpdated(String columnName) throws SQLException {2530throw new UnsupportedOperationException();2531}25322533/**2534* Indicates whether the current row has been inserted. The value returned2535* depends on whether or not the rowset can detect visible inserts.2536*2537* @return {@code true} if a row has been inserted and inserts are detected;2538* {@code false} otherwise2539* @throws SQLException if the cursor is on the insert row or not2540* not on a valid row2541*2542* @see DatabaseMetaData#insertsAreDetected2543*/2544public boolean rowInserted() throws SQLException {2545throw new UnsupportedOperationException();2546}25472548/**2549* Indicates whether the current row has been deleted. A deleted row2550* may leave a visible "hole" in a rowset. This method can be used to2551* detect such holes if the rowset can detect deletions. This method2552* will always return {@code false} if this rowset cannot detect2553* deletions.2554*2555* @return {@code true} if (1)the current row is blank, indicating that2556* the row has been deleted, and (2)deletions are detected;2557* {@code false} otherwise2558* @throws SQLException if the cursor is on a valid row in this rowset2559* @see DatabaseMetaData#deletesAreDetected2560*/2561public boolean rowDeleted() throws SQLException {2562throw new UnsupportedOperationException();2563}25642565/**2566* Sets the designated nullable column in the current row or the2567* insert row of this {@code CachedRowSetImpl} object with2568* {@code null} value.2569* <P>2570* This method updates a column value in the current row or the insert2571* row of this rowset; however, another method must be called to complete2572* the update process. If the cursor is on a row in the rowset, the2573* method {@link #updateRow} must be called to mark the row as updated2574* and to notify listeners that the row has changed.2575* If the cursor is on the insert row, the method {@link #insertRow}2576* must be called to insert the new row into this rowset and to notify2577* listeners that a row has changed.2578* <P>2579* In order to propagate updates in this rowset to the underlying2580* data source, an application must call the method {@link #acceptChanges}2581* after it calls either {@code updateRow} or {@code insertRow}.2582*2583* @param columnIndex the first column is {@code 1}, the second2584* is {@code 2}, and so on; must be {@code 1} or larger2585* and equal to or less than the number of columns in this rowset2586* @throws SQLException if (1) the given column index is out of bounds,2587* (2) the cursor is not on one of this rowset's rows or its2588* insert row, or (3) this rowset is2589* {@code ResultSet.CONCUR_READ_ONLY}2590*/2591public void updateNull(int columnIndex) throws SQLException {2592throw new UnsupportedOperationException();2593}25942595/**2596* Sets the designated column in either the current row or the insert2597* row of this {@code CachedRowSetImpl} object with the given2598* {@code boolean} value.2599* <P>2600* This method updates a column value in the current row or the insert2601* row of this rowset, but it does not update the database.2602* If the cursor is on a row in the rowset, the2603* method {@link #updateRow} must be called to update the database.2604* If the cursor is on the insert row, the method {@link #insertRow}2605* must be called, which will insert the new row into both this rowset2606* and the database. Both of these methods must be called before the2607* cursor moves to another row.2608*2609* @param columnIndex the first column is {@code 1}, the second2610* is {@code 2}, and so on; must be {@code 1} or larger2611* and equal to or less than the number of columns in this rowset2612* @param x the new column value2613* @throws SQLException if (1) the given column index is out of bounds,2614* (2) the cursor is not on one of this rowset's rows or its2615* insert row, or (3) this rowset is2616* {@code ResultSet.CONCUR_READ_ONLY}2617*/2618public void updateBoolean(int columnIndex, boolean x) throws SQLException {2619throw new UnsupportedOperationException();2620}26212622/**2623* Sets the designated column in either the current row or the insert2624* row of this {@code CachedRowSetImpl} object with the given2625* {@code byte} value.2626* <P>2627* This method updates a column value in the current row or the insert2628* row of this rowset, but it does not update the database.2629* If the cursor is on a row in the rowset, the2630* method {@link #updateRow} must be called to update the database.2631* If the cursor is on the insert row, the method {@link #insertRow}2632* must be called, which will insert the new row into both this rowset2633* and the database. Both of these methods must be called before the2634* cursor moves to another row.2635*2636* @param columnIndex the first column is {@code 1}, the second2637* is {@code 2}, and so on; must be {@code 1} or larger2638* and equal to or less than the number of columns in this rowset2639* @param x the new column value2640* @throws SQLException if (1) the given column index is out of bounds,2641* (2) the cursor is not on one of this rowset's rows or its2642* insert row, or (3) this rowset is2643* {@code ResultSet.CONCUR_READ_ONLY}2644*/2645public void updateByte(int columnIndex, byte x) throws SQLException {2646throw new UnsupportedOperationException();2647}26482649/**2650* Sets the designated column in either the current row or the insert2651* row of this {@code CachedRowSetImpl} object with the given2652* {@code short} value.2653* <P>2654* This method updates a column value in the current row or the insert2655* row of this rowset, but it does not update the database.2656* If the cursor is on a row in the rowset, the2657* method {@link #updateRow} must be called to update the database.2658* If the cursor is on the insert row, the method {@link #insertRow}2659* must be called, which will insert the new row into both this rowset2660* and the database. Both of these methods must be called before the2661* cursor moves to another row.2662*2663* @param columnIndex the first column is {@code 1}, the second2664* is {@code 2}, and so on; must be {@code 1} or larger2665* and equal to or less than the number of columns in this rowset2666* @param x the new column value2667* @throws SQLException if (1) the given column index is out of bounds,2668* (2) the cursor is not on one of this rowset's rows or its2669* insert row, or (3) this rowset is2670* {@code ResultSet.CONCUR_READ_ONLY}2671*/2672public void updateShort(int columnIndex, short x) throws SQLException {2673throw new UnsupportedOperationException();2674}26752676/**2677* Sets the designated column in either the current row or the insert2678* row of this {@code CachedRowSetImpl} object with the given2679* {@code int} value.2680* <P>2681* This method updates a column value in the current row or the insert2682* row of this rowset, but it does not update the database.2683* If the cursor is on a row in the rowset, the2684* method {@link #updateRow} must be called to update the database.2685* If the cursor is on the insert row, the method {@link #insertRow}2686* must be called, which will insert the new row into both this rowset2687* and the database. Both of these methods must be called before the2688* cursor moves to another row.2689*2690* @param columnIndex the first column is {@code 1}, the second2691* is {@code 2}, and so on; must be {@code 1} or larger2692* and equal to or less than the number of columns in this rowset2693* @param x the new column value2694* @throws SQLException if (1) the given column index is out of bounds,2695* (2) the cursor is not on one of this rowset's rows or its2696* insert row, or (3) this rowset is2697* {@code ResultSet.CONCUR_READ_ONLY}2698*/2699public void updateInt(int columnIndex, int x) throws SQLException {2700throw new UnsupportedOperationException();2701}27022703/**2704* Sets the designated column in either the current row or the insert2705* row of this {@code CachedRowSetImpl} object with the given2706* {@code long} value.2707* <P>2708* This method updates a column value in the current row or the insert2709* row of this rowset, but it does not update the database.2710* If the cursor is on a row in the rowset, the2711* method {@link #updateRow} must be called to update the database.2712* If the cursor is on the insert row, the method {@link #insertRow}2713* must be called, which will insert the new row into both this rowset2714* and the database. Both of these methods must be called before the2715* cursor moves to another row.2716*2717* @param columnIndex the first column is {@code 1}, the second2718* is {@code 2}, and so on; must be {@code 1} or larger2719* and equal to or less than the number of columns in this rowset2720* @param x the new column value2721* @throws SQLException if (1) the given column index is out of bounds,2722* (2) the cursor is not on one of this rowset's rows or its2723* insert row, or (3) this rowset is2724* {@code ResultSet.CONCUR_READ_ONLY}2725*/2726public void updateLong(int columnIndex, long x) throws SQLException {2727throw new UnsupportedOperationException();27282729}27302731/**2732* Sets the designated column in either the current row or the insert2733* row of this {@code CachedRowSetImpl} object with the given2734* {@code float} value.2735* <P>2736* This method updates a column value in the current row or the insert2737* row of this rowset, but it does not update the database.2738* If the cursor is on a row in the rowset, the2739* method {@link #updateRow} must be called to update the database.2740* If the cursor is on the insert row, the method {@link #insertRow}2741* must be called, which will insert the new row into both this rowset2742* and the database. Both of these methods must be called before the2743* cursor moves to another row.2744*2745* @param columnIndex the first column is {@code 1}, the second2746* is {@code 2}, and so on; must be {@code 1} or larger2747* and equal to or less than the number of columns in this rowset2748* @param x the new column value2749* @throws SQLException if (1) the given column index is out of bounds,2750* (2) the cursor is not on one of this rowset's rows or its2751* insert row, or (3) this rowset is2752* {@code ResultSet.CONCUR_READ_ONLY}2753*/2754public void updateFloat(int columnIndex, float x) throws SQLException {2755throw new UnsupportedOperationException();2756}27572758/**2759* Sets the designated column in either the current row or the insert2760* row of this {@code CachedRowSetImpl} object with the given2761* {@code double} value.2762*2763* This method updates a column value in either the current row or2764* the insert row of this rowset, but it does not update the2765* database. If the cursor is on a row in the rowset, the2766* method {@link #updateRow} must be called to update the database.2767* If the cursor is on the insert row, the method {@link #insertRow}2768* must be called, which will insert the new row into both this rowset2769* and the database. Both of these methods must be called before the2770* cursor moves to another row.2771*2772* @param columnIndex the first column is {@code 1}, the second2773* is {@code 2}, and so on; must be {@code 1} or larger2774* and equal to or less than the number of columns in this rowset2775* @param x the new column value2776* @throws SQLException if (1) the given column index is out of bounds,2777* (2) the cursor is not on one of this rowset's rows or its2778* insert row, or (3) this rowset is2779* {@code ResultSet.CONCUR_READ_ONLY}2780*/2781public void updateDouble(int columnIndex, double x) throws SQLException {2782throw new UnsupportedOperationException();2783}27842785/**2786* Sets the designated column in either the current row or the insert2787* row of this {@code CachedRowSetImpl} object with the given2788* {@code java.math.BigDecimal} object.2789* <P>2790* This method updates a column value in the current row or the insert2791* row of this rowset, but it does not update the database.2792* If the cursor is on a row in the rowset, the2793* method {@link #updateRow} must be called to update the database.2794* If the cursor is on the insert row, the method {@link #insertRow}2795* must be called, which will insert the new row into both this rowset2796* and the database. Both of these methods must be called before the2797* cursor moves to another row.2798*2799* @param columnIndex the first column is {@code 1}, the second2800* is {@code 2}, and so on; must be {@code 1} or larger2801* and equal to or less than the number of columns in this rowset2802* @param x the new column value2803* @throws SQLException if (1) the given column index is out of bounds,2804* (2) the cursor is not on one of this rowset's rows or its2805* insert row, or (3) this rowset is2806* {@code ResultSet.CONCUR_READ_ONLY}2807*/2808public void updateBigDecimal(int columnIndex, BigDecimal x) throws SQLException {2809throw new UnsupportedOperationException();2810}28112812/**2813* Sets the designated column in either the current row or the insert2814* row of this {@code CachedRowSetImpl} object with the given2815* {@code String} object.2816* <P>2817* This method updates a column value in either the current row or2818* the insert row of this rowset, but it does not update the2819* database. If the cursor is on a row in the rowset, the2820* method {@link #updateRow} must be called to mark the row as updated.2821* If the cursor is on the insert row, the method {@link #insertRow}2822* must be called to insert the new row into this rowset and mark it2823* as inserted. Both of these methods must be called before the2824* cursor moves to another row.2825* <P>2826* The method {@code acceptChanges} must be called if the2827* updated values are to be written back to the underlying database.2828*2829* @param columnIndex the first column is {@code 1}, the second2830* is {@code 2}, and so on; must be {@code 1} or larger2831* and equal to or less than the number of columns in this rowset2832* @param x the new column value2833* @throws SQLException if (1) the given column index is out of bounds,2834* (2) the cursor is not on one of this rowset's rows or its2835* insert row, or (3) this rowset is2836* {@code ResultSet.CONCUR_READ_ONLY}2837*/2838public void updateString(int columnIndex, String x) throws SQLException {2839throw new UnsupportedOperationException();2840}28412842/**2843* Sets the designated column in either the current row or the insert2844* row of this {@code CachedRowSetImpl} object with the given2845* {@code byte} array.2846*2847* This method updates a column value in either the current row or2848* the insert row of this rowset, but it does not update the2849* database. If the cursor is on a row in the rowset, the2850* method {@link #updateRow} must be called to update the database.2851* If the cursor is on the insert row, the method {@link #insertRow}2852* must be called, which will insert the new row into both this rowset2853* and the database. Both of these methods must be called before the2854* cursor moves to another row.2855*2856* @param columnIndex the first column is {@code 1}, the second2857* is {@code 2}, and so on; must be {@code 1} or larger2858* and equal to or less than the number of columns in this rowset2859* @param x the new column value2860* @throws SQLException if (1) the given column index is out of bounds,2861* (2) the cursor is not on one of this rowset's rows or its2862* insert row, or (3) this rowset is2863* {@code ResultSet.CONCUR_READ_ONLY}2864*/2865public void updateBytes(int columnIndex, byte x[]) throws SQLException {2866throw new UnsupportedOperationException();2867}28682869/**2870* Sets the designated column in either the current row or the insert2871* row of this {@code CachedRowSetImpl} object with the given2872* {@code Date} object.2873*2874* This method updates a column value in either the current row or2875* the insert row of this rowset, but it does not update the2876* database. If the cursor is on a row in the rowset, the2877* method {@link #updateRow} must be called to update the database.2878* If the cursor is on the insert row, the method {@link #insertRow}2879* must be called, which will insert the new row into both this rowset2880* and the database. Both of these methods must be called before the2881* cursor moves to another row.2882*2883* @param columnIndex the first column is {@code 1}, the second2884* is {@code 2}, and so on; must be {@code 1} or larger2885* and equal to or less than the number of columns in this rowset2886* @param x the new column value2887* @throws SQLException if (1) the given column index is out of bounds,2888* (2) the cursor is not on one of this rowset's rows or its2889* insert row, (3) the type of the designated column is not2890* an SQL {@code DATE} or {@code TIMESTAMP}, or2891* (4) this rowset is {@code ResultSet.CONCUR_READ_ONLY}2892*/2893public void updateDate(int columnIndex, java.sql.Date x) throws SQLException {2894throw new UnsupportedOperationException();2895}28962897/**2898* Sets the designated column in either the current row or the insert2899* row of this {@code CachedRowSetImpl} object with the given2900* {@code Time} object.2901*2902* This method updates a column value in either the current row or2903* the insert row of this rowset, but it does not update the2904* database. If the cursor is on a row in the rowset, the2905* method {@link #updateRow} must be called to update the database.2906* If the cursor is on the insert row, the method {@link #insertRow}2907* must be called, which will insert the new row into both this rowset2908* and the database. Both of these methods must be called before the2909* cursor moves to another row.2910*2911* @param columnIndex the first column is {@code 1}, the second2912* is {@code 2}, and so on; must be {@code 1} or larger2913* and equal to or less than the number of columns in this rowset2914* @param x the new column value2915* @throws SQLException if (1) the given column index is out of bounds,2916* (2) the cursor is not on one of this rowset's rows or its2917* insert row, (3) the type of the designated column is not2918* an SQL {@code TIME} or {@code TIMESTAMP}, or2919* (4) this rowset is {@code ResultSet.CONCUR_READ_ONLY}2920*/2921public void updateTime(int columnIndex, java.sql.Time x) throws SQLException {2922throw new UnsupportedOperationException();2923}29242925/**2926* Sets the designated column in either the current row or the insert2927* row of this {@code CachedRowSetImpl} object with the given2928* {@code Timestamp} object.2929*2930* This method updates a column value in either the current row or2931* the insert row of this rowset, but it does not update the2932* database. If the cursor is on a row in the rowset, the2933* method {@link #updateRow} must be called to update the database.2934* If the cursor is on the insert row, the method {@link #insertRow}2935* must be called, which will insert the new row into both this rowset2936* and the database. Both of these methods must be called before the2937* cursor moves to another row.2938*2939* @param columnIndex the first column is {@code 1}, the second2940* is {@code 2}, and so on; must be {@code 1} or larger2941* and equal to or less than the number of columns in this rowset2942* @param x the new column value2943* @throws SQLException if (1) the given column index is out of bounds,2944* (2) the cursor is not on one of this rowset's rows or its2945* insert row, (3) the type of the designated column is not2946* an SQL {@code DATE}, {@code TIME}, or2947* {@code TIMESTAMP}, or (4) this rowset is2948* {@code ResultSet.CONCUR_READ_ONLY}2949*/2950public void updateTimestamp(int columnIndex, java.sql.Timestamp x) throws SQLException {2951throw new UnsupportedOperationException();2952}29532954/**2955* Sets the designated column in either the current row or the insert2956* row of this {@code CachedRowSetImpl} object with the given2957* ASCII stream value.2958* <P>2959* This method updates a column value in either the current row or2960* the insert row of this rowset, but it does not update the2961* database. If the cursor is on a row in the rowset, the2962* method {@link #updateRow} must be called to update the database.2963* If the cursor is on the insert row, the method {@link #insertRow}2964* must be called, which will insert the new row into both this rowset2965* and the database. Both of these methods must be called before the2966* cursor moves to another row.2967*2968* @param columnIndex the first column is {@code 1}, the second2969* is {@code 2}, and so on; must be {@code 1} or larger2970* and equal to or less than the number of columns in this rowset2971* @param x the new column value2972* @param length the number of one-byte ASCII characters in the stream2973* @throws SQLException if this method is invoked2974*/2975public void updateAsciiStream(int columnIndex, java.io.InputStream x, int length) throws SQLException {2976throw new UnsupportedOperationException();2977}29782979/**2980* Sets the designated column in either the current row or the insert2981* row of this {@code CachedRowSetImpl} object with the given2982* {@code java.io.InputStream} object.2983* <P>2984* This method updates a column value in either the current row or2985* the insert row of this rowset, but it does not update the2986* database. If the cursor is on a row in the rowset, the2987* method {@link #updateRow} must be called to update the database.2988* If the cursor is on the insert row, the method {@link #insertRow}2989* must be called, which will insert the new row into both this rowset2990* and the database. Both of these methods must be called before the2991* cursor moves to another row.2992*2993* @param columnIndex the first column is {@code 1}, the second2994* is {@code 2}, and so on; must be {@code 1} or larger2995* and equal to or less than the number of columns in this rowset2996* @param x the new column value; must be a {@code java.io.InputStream}2997* containing {@code BINARY}, {@code VARBINARY}, or2998* {@code LONGVARBINARY} data2999* @param length the length of the stream in bytes3000* @throws SQLException if (1) the given column index is out of bounds,3001* (2) the cursor is not on one of this rowset's rows or its3002* insert row, (3) the data in the stream is not binary, or3003* (4) this rowset is {@code ResultSet.CONCUR_READ_ONLY}3004*/3005public void updateBinaryStream(int columnIndex, java.io.InputStream x,int length) throws SQLException {3006throw new UnsupportedOperationException();3007}30083009/**3010* Sets the designated column in either the current row or the insert3011* row of this {@code CachedRowSetImpl} object with the given3012* {@code java.io.Reader} object.3013* <P>3014* This method updates a column value in either the current row or3015* the insert row of this rowset, but it does not update the3016* database. If the cursor is on a row in the rowset, the3017* method {@link #updateRow} must be called to update the database.3018* If the cursor is on the insert row, the method {@link #insertRow}3019* must be called, which will insert the new row into both this rowset3020* and the database. Both of these methods must be called before the3021* cursor moves to another row.3022*3023* @param columnIndex the first column is {@code 1}, the second3024* is {@code 2}, and so on; must be {@code 1} or larger3025* and equal to or less than the number of columns in this rowset3026* @param x the new column value; must be a {@code java.io.Reader}3027* containing {@code BINARY}, {@code VARBINARY},3028* {@code LONGVARBINARY}, {@code CHAR}, {@code VARCHAR},3029* or {@code LONGVARCHAR} data3030* @param length the length of the stream in characters3031* @throws SQLException if (1) the given column index is out of bounds,3032* (2) the cursor is not on one of this rowset's rows or its3033* insert row, (3) the data in the stream is not a binary or3034* character type, or (4) this rowset is3035* {@code ResultSet.CONCUR_READ_ONLY}3036*/3037public void updateCharacterStream(int columnIndex, java.io.Reader x, int length) throws SQLException {3038throw new UnsupportedOperationException();3039}30403041/**3042* Sets the designated column in either the current row or the insert3043* row of this {@code CachedRowSetImpl} object with the given3044* {@code Object} value. The {@code scale} parameter indicates3045* the number of digits to the right of the decimal point and is ignored3046* if the new column value is not a type that will be mapped to an SQL3047* {@code DECIMAL} or {@code NUMERIC} value.3048* <P>3049* This method updates a column value in either the current row or3050* the insert row of this rowset, but it does not update the3051* database. If the cursor is on a row in the rowset, the3052* method {@link #updateRow} must be called to update the database.3053* If the cursor is on the insert row, the method {@link #insertRow}3054* must be called, which will insert the new row into both this rowset3055* and the database. Both of these methods must be called before the3056* cursor moves to another row.3057*3058* @param columnIndex the first column is {@code 1}, the second3059* is {@code 2}, and so on; must be {@code 1} or larger3060* and equal to or less than the number of columns in this rowset3061* @param x the new column value3062* @param scale the number of digits to the right of the decimal point (for3063* {@code DECIMAL} and {@code NUMERIC} types only)3064* @throws SQLException if (1) the given column index is out of bounds,3065* (2) the cursor is not on one of this rowset's rows or its3066* insert row, or (3) this rowset is3067* {@code ResultSet.CONCUR_READ_ONLY}3068*/3069public void updateObject(int columnIndex, Object x, int scale) throws SQLException {3070throw new UnsupportedOperationException();3071}30723073/**3074* Sets the designated column in either the current row or the insert3075* row of this {@code CachedRowSetImpl} object with the given3076* {@code Object} value.3077* <P>3078* This method updates a column value in either the current row or3079* the insert row of this rowset, but it does not update the3080* database. If the cursor is on a row in the rowset, the3081* method {@link #updateRow} must be called to update the database.3082* If the cursor is on the insert row, the method {@link #insertRow}3083* must be called, which will insert the new row into both this rowset3084* and the database. Both of these methods must be called before the3085* cursor moves to another row.3086*3087* @param columnIndex the first column is {@code 1}, the second3088* is {@code 2}, and so on; must be {@code 1} or larger3089* and equal to or less than the number of columns in this rowset3090* @param x the new column value3091* @throws SQLException if (1) the given column index is out of bounds,3092* (2) the cursor is not on one of this rowset's rows or its3093* insert row, or (3) this rowset is3094* {@code ResultSet.CONCUR_READ_ONLY}3095*/3096public void updateObject(int columnIndex, Object x) throws SQLException {3097throw new UnsupportedOperationException();3098}309931003101/**3102* Sets the designated nullable column in the current row or the3103* insert row of this {@code CachedRowSetImpl} object with3104* {@code null} value.3105* <P>3106* This method updates a column value in the current row or the insert3107* row of this rowset, but it does not update the database.3108* If the cursor is on a row in the rowset, the3109* method {@link #updateRow} must be called to update the database.3110* If the cursor is on the insert row, the method {@link #insertRow}3111* must be called, which will insert the new row into both this rowset3112* and the database.3113*3114* @param columnName a {@code String} object that must match the3115* SQL name of a column in this rowset, ignoring case3116* @throws SQLException if (1) the given column name does not match the3117* name of a column in this rowset, (2) the cursor is not on3118* one of this rowset's rows or its insert row, or (3) this3119* rowset is {@code ResultSet.CONCUR_READ_ONLY}3120*/3121public void updateNull(String columnName) throws SQLException {3122throw new UnsupportedOperationException();3123}31243125/**3126* Sets the designated column in either the current row or the insert3127* row of this {@code CachedRowSetImpl} object with the given3128* {@code boolean} value.3129* <P>3130* This method updates a column value in the current row or the insert3131* row of this rowset, but it does not update the database.3132* If the cursor is on a row in the rowset, the3133* method {@link #updateRow} must be called to update the database.3134* If the cursor is on the insert row, the method {@link #insertRow}3135* must be called, which will insert the new row into both this rowset3136* and the database. Both of these methods must be called before the3137* cursor moves to another row.3138*3139* @param columnName a {@code String} object that must match the3140* SQL name of a column in this rowset, ignoring case3141* @param x the new column value3142* @throws SQLException if (1) the given column name does not match the3143* name of a column in this rowset, (2) the cursor is not on3144* one of this rowset's rows or its insert row, or (3) this3145* rowset is {@code ResultSet.CONCUR_READ_ONLY}3146*/3147public void updateBoolean(String columnName, boolean x) throws SQLException {3148throw new UnsupportedOperationException();3149}31503151/**3152* Sets the designated column in either the current row or the insert3153* row of this {@code CachedRowSetImpl} object with the given3154* {@code byte} value.3155* <P>3156* This method updates a column value in the current row or the insert3157* row of this rowset, but it does not update the database.3158* If the cursor is on a row in the rowset, the3159* method {@link #updateRow} must be called to update the database.3160* If the cursor is on the insert row, the method {@link #insertRow}3161* must be called, which will insert the new row into both this rowset3162* and the database. Both of these methods must be called before the3163* cursor moves to another row.3164*3165* @param columnName a {@code String} object that must match the3166* SQL name of a column in this rowset, ignoring case3167* @param x the new column value3168* @throws SQLException if (1) the given column name does not match the3169* name of a column in this rowset, (2) the cursor is not on3170* one of this rowset's rows or its insert row, or (3) this3171* rowset is {@code ResultSet.CONCUR_READ_ONLY}3172*/3173public void updateByte(String columnName, byte x) throws SQLException {3174throw new UnsupportedOperationException();3175}31763177/**3178* Sets the designated column in either the current row or the insert3179* row of this {@code CachedRowSetImpl} object with the given3180* {@code short} value.3181* <P>3182* This method updates a column value in the current row or the insert3183* row of this rowset, but it does not update the database.3184* If the cursor is on a row in the rowset, the3185* method {@link #updateRow} must be called to update the database.3186* If the cursor is on the insert row, the method {@link #insertRow}3187* must be called, which will insert the new row into both this rowset3188* and the database. Both of these methods must be called before the3189* cursor moves to another row.3190*3191* @param columnName a {@code String} object that must match the3192* SQL name of a column in this rowset, ignoring case3193* @param x the new column value3194* @throws SQLException if (1) the given column name does not match the3195* name of a column in this rowset, (2) the cursor is not on3196* one of this rowset's rows or its insert row, or (3) this3197* rowset is {@code ResultSet.CONCUR_READ_ONLY}3198*/3199public void updateShort(String columnName, short x) throws SQLException {3200throw new UnsupportedOperationException();3201}32023203/**3204* Sets the designated column in either the current row or the insert3205* row of this {@code CachedRowSetImpl} object with the given3206* {@code int} value.3207* <P>3208* This method updates a column value in the current row or the insert3209* row of this rowset, but it does not update the database.3210* If the cursor is on a row in the rowset, the3211* method {@link #updateRow} must be called to update the database.3212* If the cursor is on the insert row, the method {@link #insertRow}3213* must be called, which will insert the new row into both this rowset3214* and the database. Both of these methods must be called before the3215* cursor moves to another row.3216*3217* @param columnName a {@code String} object that must match the3218* SQL name of a column in this rowset, ignoring case3219* @param x the new column value3220* @throws SQLException if (1) the given column name does not match the3221* name of a column in this rowset, (2) the cursor is not on3222* one of this rowset's rows or its insert row, or (3) this3223* rowset is {@code ResultSet.CONCUR_READ_ONLY}3224*/3225public void updateInt(String columnName, int x) throws SQLException {3226throw new UnsupportedOperationException();3227}32283229/**3230* Sets the designated column in either the current row or the insert3231* row of this {@code CachedRowSetImpl} object with the given3232* {@code long} value.3233* <P>3234* This method updates a column value in the current row or the insert3235* row of this rowset, but it does not update the database.3236* If the cursor is on a row in the rowset, the3237* method {@link #updateRow} must be called to update the database.3238* If the cursor is on the insert row, the method {@link #insertRow}3239* must be called, which will insert the new row into both this rowset3240* and the database. Both of these methods must be called before the3241* cursor moves to another row.3242*3243* @param columnName a {@code String} object that must match the3244* SQL name of a column in this rowset, ignoring case3245* @param x the new column value3246* @throws SQLException if (1) the given column name does not match the3247* name of a column in this rowset, (2) the cursor is not on3248* one of this rowset's rows or its insert row, or (3) this3249* rowset is {@code ResultSet.CONCUR_READ_ONLY}3250*/3251public void updateLong(String columnName, long x) throws SQLException {3252throw new UnsupportedOperationException();3253}32543255/**3256* Sets the designated column in either the current row or the insert3257* row of this {@code CachedRowSetImpl} object with the given3258* {@code float} value.3259* <P>3260* This method updates a column value in the current row or the insert3261* row of this rowset, but it does not update the database.3262* If the cursor is on a row in the rowset, the3263* method {@link #updateRow} must be called to update the database.3264* If the cursor is on the insert row, the method {@link #insertRow}3265* must be called, which will insert the new row into both this rowset3266* and the database. Both of these methods must be called before the3267* cursor moves to another row.3268*3269* @param columnName a {@code String} object that must match the3270* SQL name of a column in this rowset, ignoring case3271* @param x the new column value3272* @throws SQLException if (1) the given column name does not match the3273* name of a column in this rowset, (2) the cursor is not on3274* one of this rowset's rows or its insert row, or (3) this3275* rowset is {@code ResultSet.CONCUR_READ_ONLY}3276*/3277public void updateFloat(String columnName, float x) throws SQLException {3278throw new UnsupportedOperationException();3279}32803281/**3282* Sets the designated column in either the current row or the insert3283* row of this {@code CachedRowSetImpl} object with the given3284* {@code double} value.3285*3286* This method updates a column value in either the current row or3287* the insert row of this rowset, but it does not update the3288* database. If the cursor is on a row in the rowset, the3289* method {@link #updateRow} must be called to update the database.3290* If the cursor is on the insert row, the method {@link #insertRow}3291* must be called, which will insert the new row into both this rowset3292* and the database. Both of these methods must be called before the3293* cursor moves to another row.3294*3295* @param columnName a {@code String} object that must match the3296* SQL name of a column in this rowset, ignoring case3297* @param x the new column value3298* @throws SQLException if (1) the given column name does not match the3299* name of a column in this rowset, (2) the cursor is not on3300* one of this rowset's rows or its insert row, or (3) this3301* rowset is {@code ResultSet.CONCUR_READ_ONLY}3302*/3303public void updateDouble(String columnName, double x) throws SQLException {3304throw new UnsupportedOperationException();3305}33063307/**3308* Sets the designated column in either the current row or the insert3309* row of this {@code CachedRowSetImpl} object with the given3310* {@code java.math.BigDecimal} object.3311* <P>3312* This method updates a column value in the current row or the insert3313* row of this rowset, but it does not update the database.3314* If the cursor is on a row in the rowset, the3315* method {@link #updateRow} must be called to update the database.3316* If the cursor is on the insert row, the method {@link #insertRow}3317* must be called, which will insert the new row into both this rowset3318* and the database. Both of these methods must be called before the3319* cursor moves to another row.3320*3321* @param columnName a {@code String} object that must match the3322* SQL name of a column in this rowset, ignoring case3323* @param x the new column value3324* @throws SQLException if (1) the given column name does not match the3325* name of a column in this rowset, (2) the cursor is not on3326* one of this rowset's rows or its insert row, or (3) this3327* rowset is {@code ResultSet.CONCUR_READ_ONLY}3328*/3329public void updateBigDecimal(String columnName, BigDecimal x) throws SQLException {3330throw new UnsupportedOperationException();3331}33323333/**3334* Sets the designated column in either the current row or the insert3335* row of this {@code CachedRowSetImpl} object with the given3336* {@code String} object.3337*3338* This method updates a column value in either the current row or3339* the insert row of this rowset, but it does not update the3340* database. If the cursor is on a row in the rowset, the3341* method {@link #updateRow} must be called to update the database.3342* If the cursor is on the insert row, the method {@link #insertRow}3343* must be called, which will insert the new row into both this rowset3344* and the database. Both of these methods must be called before the3345* cursor moves to another row.3346*3347* @param columnName a {@code String} object that must match the3348* SQL name of a column in this rowset, ignoring case3349* @param x the new column value3350* @throws SQLException if (1) the given column name does not match the3351* name of a column in this rowset, (2) the cursor is not on3352* one of this rowset's rows or its insert row, or (3) this3353* rowset is {@code ResultSet.CONCUR_READ_ONLY}3354*/3355public void updateString(String columnName, String x) throws SQLException {3356throw new UnsupportedOperationException();3357}33583359/**3360* Sets the designated column in either the current row or the insert3361* row of this {@code CachedRowSetImpl} object with the given3362* {@code byte} array.3363*3364* This method updates a column value in either the current row or3365* the insert row of this rowset, but it does not update the3366* database. If the cursor is on a row in the rowset, the3367* method {@link #updateRow} must be called to update the database.3368* If the cursor is on the insert row, the method {@link #insertRow}3369* must be called, which will insert the new row into both this rowset3370* and the database. Both of these methods must be called before the3371* cursor moves to another row.3372*3373* @param columnName a {@code String} object that must match the3374* SQL name of a column in this rowset, ignoring case3375* @param x the new column value3376* @throws SQLException if (1) the given column name does not match the3377* name of a column in this rowset, (2) the cursor is not on3378* one of this rowset's rows or its insert row, or (3) this3379* rowset is {@code ResultSet.CONCUR_READ_ONLY}3380*/3381public void updateBytes(String columnName, byte x[]) throws SQLException {3382throw new UnsupportedOperationException();3383}33843385/**3386* Sets the designated column in either the current row or the insert3387* row of this {@code CachedRowSetImpl} object with the given3388* {@code Date} object.3389*3390* This method updates a column value in either the current row or3391* the insert row of this rowset, but it does not update the3392* database. If the cursor is on a row in the rowset, the3393* method {@link #updateRow} must be called to update the database.3394* If the cursor is on the insert row, the method {@link #insertRow}3395* must be called, which will insert the new row into both this rowset3396* and the database. Both of these methods must be called before the3397* cursor moves to another row.3398*3399* @param columnName a {@code String} object that must match the3400* SQL name of a column in this rowset, ignoring case3401* @param x the new column value3402* @throws SQLException if (1) the given column name does not match the3403* name of a column in this rowset, (2) the cursor is not on3404* one of this rowset's rows or its insert row, (3) the type3405* of the designated column is not an SQL {@code DATE} or3406* {@code TIMESTAMP}, or (4) this rowset is3407* {@code ResultSet.CONCUR_READ_ONLY}3408*/3409public void updateDate(String columnName, java.sql.Date x) throws SQLException {3410throw new UnsupportedOperationException();3411}34123413/**3414* Sets the designated column in either the current row or the insert3415* row of this {@code CachedRowSetImpl} object with the given3416* {@code Time} object.3417*3418* This method updates a column value in either the current row or3419* the insert row of this rowset, but it does not update the3420* database. If the cursor is on a row in the rowset, the3421* method {@link #updateRow} must be called to update the database.3422* If the cursor is on the insert row, the method {@link #insertRow}3423* must be called, which will insert the new row into both this rowset3424* and the database. Both of these methods must be called before the3425* cursor moves to another row.3426*3427* @param columnName a {@code String} object that must match the3428* SQL name of a column in this rowset, ignoring case3429* @param x the new column value3430* @throws SQLException if (1) the given column name does not match the3431* name of a column in this rowset, (2) the cursor is not on3432* one of this rowset's rows or its insert row, (3) the type3433* of the designated column is not an SQL {@code TIME} or3434* {@code TIMESTAMP}, or (4) this rowset is3435* {@code ResultSet.CONCUR_READ_ONLY}3436*/3437public void updateTime(String columnName, java.sql.Time x) throws SQLException {3438throw new UnsupportedOperationException();3439}34403441/**3442* Sets the designated column in either the current row or the insert3443* row of this {@code CachedRowSetImpl} object with the given3444* {@code Timestamp} object.3445*3446* This method updates a column value in either the current row or3447* the insert row of this rowset, but it does not update the3448* database. If the cursor is on a row in the rowset, the3449* method {@link #updateRow} must be called to update the database.3450* If the cursor is on the insert row, the method {@link #insertRow}3451* must be called, which will insert the new row into both this rowset3452* and the database. Both of these methods must be called before the3453* cursor moves to another row.3454*3455* @param columnName a {@code String} object that must match the3456* SQL name of a column in this rowset, ignoring case3457* @param x the new column value3458* @throws SQLException if the given column index is out of bounds or3459* the cursor is not on one of this rowset's rows or its3460* insert row3461* @throws SQLException if (1) the given column name does not match the3462* name of a column in this rowset, (2) the cursor is not on3463* one of this rowset's rows or its insert row, (3) the type3464* of the designated column is not an SQL {@code DATE},3465* {@code TIME}, or {@code TIMESTAMP}, or (4) this3466* rowset is {@code ResultSet.CONCUR_READ_ONLY}3467*/3468public void updateTimestamp(String columnName, java.sql.Timestamp x) throws SQLException {3469throw new UnsupportedOperationException();3470}34713472/**3473* Sets the designated column in either the current row or the insert3474* row of this {@code CachedRowSetImpl} object with the given3475* ASCII stream value.3476* <P>3477* This method updates a column value in either the current row or3478* the insert row of this rowset, but it does not update the3479* database. If the cursor is on a row in the rowset, the3480* method {@link #updateRow} must be called to update the database.3481* If the cursor is on the insert row, the method {@link #insertRow}3482* must be called, which will insert the new row into both this rowset3483* and the database. Both of these methods must be called before the3484* cursor moves to another row.3485*3486* @param columnName a {@code String} object that must match the3487* SQL name of a column in this rowset, ignoring case3488* @param x the new column value3489* @param length the number of one-byte ASCII characters in the stream3490*/3491public void updateAsciiStream(String columnName,3492java.io.InputStream x,3493int length) throws SQLException {3494throw new UnsupportedOperationException();3495}34963497/**3498* Sets the designated column in either the current row or the insert3499* row of this {@code CachedRowSetImpl} object with the given3500* {@code java.io.InputStream} object.3501* <P>3502* This method updates a column value in either the current row or3503* the insert row of this rowset, but it does not update the3504* database. If the cursor is on a row in the rowset, the3505* method {@link #updateRow} must be called to update the database.3506* If the cursor is on the insert row, the method {@link #insertRow}3507* must be called, which will insert the new row into both this rowset3508* and the database. Both of these methods must be called before the3509* cursor moves to another row.3510*3511* @param columnName a {@code String} object that must match the3512* SQL name of a column in this rowset, ignoring case3513* @param x the new column value; must be a {@code java.io.InputStream}3514* containing {@code BINARY}, {@code VARBINARY}, or3515* {@code LONGVARBINARY} data3516* @param length the length of the stream in bytes3517* @throws SQLException if (1) the given column name does not match the3518* name of a column in this rowset, (2) the cursor is not on3519* one of this rowset's rows or its insert row, (3) the data3520* in the stream is not binary, or (4) this rowset is3521* {@code ResultSet.CONCUR_READ_ONLY}3522*/3523public void updateBinaryStream(String columnName, java.io.InputStream x, int length) throws SQLException {3524throw new UnsupportedOperationException();3525}35263527/**3528* Sets the designated column in either the current row or the insert3529* row of this {@code CachedRowSetImpl} object with the given3530* {@code java.io.Reader} object.3531* <P>3532* This method updates a column value in either the current row or3533* the insert row of this rowset, but it does not update the3534* database. If the cursor is on a row in the rowset, the3535* method {@link #updateRow} must be called to update the database.3536* If the cursor is on the insert row, the method {@link #insertRow}3537* must be called, which will insert the new row into both this rowset3538* and the database. Both of these methods must be called before the3539* cursor moves to another row.3540*3541* @param columnName a {@code String} object that must match the3542* SQL name of a column in this rowset, ignoring case3543* @param reader the new column value; must be a3544* {@code java.io.Reader} containing {@code BINARY},3545* {@code VARBINARY}, {@code LONGVARBINARY}, {@code CHAR},3546* {@code VARCHAR}, or {@code LONGVARCHAR} data3547* @param length the length of the stream in characters3548* @throws SQLException if (1) the given column name does not match the3549* name of a column in this rowset, (2) the cursor is not on3550* one of this rowset's rows or its insert row, (3) the data3551* in the stream is not a binary or character type, or (4) this3552* rowset is {@code ResultSet.CONCUR_READ_ONLY}3553*/3554public void updateCharacterStream(String columnName,3555java.io.Reader reader,3556int length) throws SQLException {3557throw new UnsupportedOperationException();3558}35593560/**3561* Sets the designated column in either the current row or the insert3562* row of this {@code CachedRowSetImpl} object with the given3563* {@code Object} value. The {@code scale} parameter3564* indicates the number of digits to the right of the decimal point3565* and is ignored if the new column value is not a type that will be3566* mapped to an SQL {@code DECIMAL} or {@code NUMERIC} value.3567* <P>3568* This method updates a column value in either the current row or3569* the insert row of this rowset, but it does not update the3570* database. If the cursor is on a row in the rowset, the3571* method {@link #updateRow} must be called to update the database.3572* If the cursor is on the insert row, the method {@link #insertRow}3573* must be called, which will insert the new row into both this rowset3574* and the database. Both of these methods must be called before the3575* cursor moves to another row.3576*3577* @param columnName a {@code String} object that must match the3578* SQL name of a column in this rowset, ignoring case3579* @param x the new column value3580* @param scale the number of digits to the right of the decimal point (for3581* {@code DECIMAL} and {@code NUMERIC} types only)3582* @throws SQLException if (1) the given column name does not match the3583* name of a column in this rowset, (2) the cursor is not on3584* one of this rowset's rows or its insert row, or (3) this3585* rowset is {@code ResultSet.CONCUR_READ_ONLY}3586*/3587public void updateObject(String columnName, Object x, int scale) throws SQLException {3588throw new UnsupportedOperationException();3589}35903591/**3592* Sets the designated column in either the current row or the insert3593* row of this {@code CachedRowSetImpl} object with the given3594* {@code Object} value.3595* <P>3596* This method updates a column value in either the current row or3597* the insert row of this rowset, but it does not update the3598* database. If the cursor is on a row in the rowset, the3599* method {@link #updateRow} must be called to update the database.3600* If the cursor is on the insert row, the method {@link #insertRow}3601* must be called, which will insert the new row into both this rowset3602* and the database. Both of these methods must be called before the3603* cursor moves to another row.3604*3605* @param columnName a {@code String} object that must match the3606* SQL name of a column in this rowset, ignoring case3607* @param x the new column value3608* @throws SQLException if (1) the given column name does not match the3609* name of a column in this rowset, (2) the cursor is not on3610* one of this rowset's rows or its insert row, or (3) this3611* rowset is {@code ResultSet.CONCUR_READ_ONLY}3612*/3613public void updateObject(String columnName, Object x) throws SQLException {3614throw new UnsupportedOperationException();3615}36163617/**3618* Inserts the contents of this {@code CachedRowSetImpl} object's insert3619* row into this rowset immediately following the current row.3620* If the current row is the3621* position after the last row or before the first row, the new row will3622* be inserted at the end of the rowset. This method also notifies3623* listeners registered with this rowset that the row has changed.3624* <P>3625* The cursor must be on the insert row when this method is called.3626*3627* @throws SQLException if (1) the cursor is not on the insert row,3628* (2) one or more of the non-nullable columns in the insert3629* row has not been given a value, or (3) this rowset is3630* {@code ResultSet.CONCUR_READ_ONLY}3631*/3632public void insertRow() throws SQLException {3633throw new UnsupportedOperationException();3634}36353636/**3637* Marks the current row of this {@code CachedRowSetImpl} object as3638* updated and notifies listeners registered with this rowset that the3639* row has changed.3640* <P>3641* This method cannot be called when the cursor is on the insert row, and3642* it should be called before the cursor moves to another row. If it is3643* called after the cursor moves to another row, this method has no effect,3644* and the updates made before the cursor moved will be lost.3645*3646* @throws SQLException if the cursor is on the insert row or this3647* rowset is {@code ResultSet.CONCUR_READ_ONLY}3648*/3649public void updateRow() throws SQLException {3650throw new UnsupportedOperationException();3651}36523653/**3654* Deletes the current row from this {@code CachedRowSetImpl} object and3655* notifies listeners registered with this rowset that a row has changed.3656* This method cannot be called when the cursor is on the insert row.3657* <P>3658* This method marks the current row as deleted, but it does not delete3659* the row from the underlying data source. The method3660* {@code acceptChanges} must be called to delete the row in3661* the data source.3662*3663* @throws SQLException if (1) this method is called when the cursor3664* is on the insert row, before the first row, or after the3665* last row or (2) this rowset is3666* {@code ResultSet.CONCUR_READ_ONLY}3667*/3668public void deleteRow() throws SQLException {3669throw new UnsupportedOperationException();3670}36713672/**3673* Sets the current row with its original value and marks the row as3674* not updated, thus undoing any changes made to the row since the3675* last call to the methods {@code updateRow} or {@code deleteRow}.3676* This method should be called only when the cursor is on a row in3677* this rowset.3678*3679* @throws SQLException if the cursor is on the insert row, before the3680* first row, or after the last row3681*/3682public void refreshRow() throws SQLException {3683throw new UnsupportedOperationException();3684}36853686/**3687* Rolls back any updates made to the current row of this3688* {@code CachedRowSetImpl} object and notifies listeners that3689* a row has changed. To have an effect, this method3690* must be called after an {@code updateXXX} method has been3691* called and before the method {@code updateRow} has been called.3692* If no updates have been made or the method {@code updateRow}3693* has already been called, this method has no effect.3694*3695* @throws SQLException if the cursor is on the insert row, before the3696* first row, or after the last row3697*/3698public void cancelRowUpdates() throws SQLException {3699throw new UnsupportedOperationException();3700}37013702/**3703* Moves the cursor for this {@code CachedRowSetImpl} object3704* to the insert row. The current row in the rowset is remembered3705* while the cursor is on the insert row.3706* <P>3707* The insert row is a special row associated with an updatable3708* rowset. It is essentially a buffer where a new row may3709* be constructed by calling the appropriate {@code updateXXX}3710* methods to assign a value to each column in the row. A complete3711* row must be constructed; that is, every column that is not nullable3712* must be assigned a value. In order for the new row to become part3713* of this rowset, the method {@code insertRow} must be called3714* before the cursor is moved back to the rowset.3715* <P>3716* Only certain methods may be invoked while the cursor is on the insert3717* row; many methods throw an exception if they are called while the3718* cursor is there. In addition to the {@code updateXXX}3719* and {@code insertRow} methods, only the {@code getXXX} methods3720* may be called when the cursor is on the insert row. A {@code getXXX}3721* method should be called on a column only after an {@code updateXXX}3722* method has been called on that column; otherwise, the value returned is3723* undetermined.3724*3725* @throws SQLException if this {@code CachedRowSetImpl} object is3726* {@code ResultSet.CONCUR_READ_ONLY}3727*/3728public void moveToInsertRow() throws SQLException {3729throw new UnsupportedOperationException();3730}37313732/**3733* Moves the cursor for this {@code CachedRowSetImpl} object to3734* the current row. The current row is the row the cursor was on3735* when the method {@code moveToInsertRow} was called.3736* <P>3737* Calling this method has no effect unless it is called while the3738* cursor is on the insert row.3739*3740* @throws SQLException if an error occurs3741*/3742public void moveToCurrentRow() throws SQLException {3743throw new UnsupportedOperationException();3744}37453746/**3747* Returns {@code null}.3748*3749* @return {@code null}3750* @throws SQLException if an error occurs3751*/3752public Statement getStatement() throws SQLException {3753throw new UnsupportedOperationException();3754}37553756/**3757* Retrieves the value of the designated column in this3758* {@code CachedRowSetImpl} object as an {@code Object} in3759* the Java programming language, using the given3760* {@code java.util.Map} object to custom map the value if3761* appropriate.3762*3763* @param columnIndex the first column is {@code 1}, the second3764* is {@code 2}, and so on; must be {@code 1} or larger3765* and equal to or less than the number of columns in this rowset3766* @param map a {@code java.util.Map} object showing the mapping3767* from SQL type names to classes in the Java programming3768* language3769* @return an {@code Object} representing the SQL value3770* @throws SQLException if the given column index is out of bounds or3771* the cursor is not on one of this rowset's rows or its3772* insert row3773*/3774public Object getObject(int columnIndex,3775java.util.Map<String,Class<?>> map)3776throws SQLException3777{3778throw new UnsupportedOperationException();3779}37803781/**3782* Retrieves the value of the designated column in this3783* {@code CachedRowSetImpl} object as a {@code Ref} object3784* in the Java programming language.3785*3786* @param columnIndex the first column is {@code 1}, the second3787* is {@code 2}, and so on; must be {@code 1} or larger3788* and equal to or less than the number of columns in this rowset3789* @return a {@code Ref} object representing an SQL{@code REF} value3790* @throws SQLException if (1) the given column index is out of bounds,3791* (2) the cursor is not on one of this rowset's rows or its3792* insert row, or (3) the designated column does not store an3793* SQL {@code REF} value3794* @see #getRef(String)3795*/3796public Ref getRef(int columnIndex) throws SQLException {3797throw new UnsupportedOperationException();3798}37993800/**3801* Retrieves the value of the designated column in this3802* {@code CachedRowSetImpl} object as a {@code Blob} object3803* in the Java programming language.3804*3805* @param columnIndex the first column is {@code 1}, the second3806* is {@code 2}, and so on; must be {@code 1} or larger3807* and equal to or less than the number of columns in this rowset3808* @return a {@code Blob} object representing an SQL {@code BLOB} value3809* @throws SQLException if (1) the given column index is out of bounds,3810* (2) the cursor is not on one of this rowset's rows or its3811* insert row, or (3) the designated column does not store an3812* SQL {@code BLOB} value3813* @see #getBlob(String)3814*/3815public Blob getBlob(int columnIndex) throws SQLException {3816throw new UnsupportedOperationException();3817}38183819/**3820* Retrieves the value of the designated column in this3821* {@code CachedRowSetImpl} object as a {@code Clob} object3822* in the Java programming language.3823*3824* @param columnIndex the first column is {@code 1}, the second3825* is {@code 2}, and so on; must be {@code 1} or larger3826* and equal to or less than the number of columns in this rowset3827* @return a {@code Clob} object representing an SQL {@code CLOB} value3828* @throws SQLException if (1) the given column index is out of bounds,3829* (2) the cursor is not on one of this rowset's rows or its3830* insert row, or (3) the designated column does not store an3831* SQL {@code CLOB} value3832* @see #getClob(String)3833*/3834public Clob getClob(int columnIndex) throws SQLException {3835throw new UnsupportedOperationException();3836}38373838/**3839* Retrieves the value of the designated column in this3840* {@code CachedRowSetImpl} object as an {@code Array} object3841* in the Java programming language.3842*3843* @param columnIndex the first column is {@code 1}, the second3844* is {@code 2}, and so on; must be {@code 1} or larger3845* and equal to or less than the number of columns in this rowset3846* @return an {@code Array} object representing an SQL3847* {@code ARRAY} value3848* @throws SQLException if (1) the given column index is out of bounds,3849* (2) the cursor is not on one of this rowset's rows or its3850* insert row, or (3) the designated column does not store an3851* SQL {@code ARRAY} value3852* @see #getArray(String)3853*/3854public Array getArray(int columnIndex) throws SQLException {3855throw new UnsupportedOperationException();3856}38573858/**3859* Retrieves the value of the designated column in this3860* {@code CachedRowSetImpl} object as an {@code Object} in3861* the Java programming language, using the given3862* {@code java.util.Map} object to custom map the value if3863* appropriate.3864*3865* @param columnName a {@code String} object that must match the3866* SQL name of a column in this rowset, ignoring case3867* @param map a {@code java.util.Map} object showing the mapping3868* from SQL type names to classes in the Java programming3869* language3870* @return an {@code Object} representing the SQL value3871* @throws SQLException if the given column name is not the name of3872* a column in this rowset or the cursor is not on one of3873* this rowset's rows or its insert row3874*/3875public Object getObject(String columnName,3876java.util.Map<String,Class<?>> map)3877throws SQLException {3878throw new UnsupportedOperationException();3879}38803881/**3882* Retrieves the value of the designated column in this3883* {@code CachedRowSetImpl} object as a {@code Ref} object3884* in the Java programming language.3885*3886* @param colName a {@code String} object that must match the3887* SQL name of a column in this rowset, ignoring case3888* @return a {@code Ref} object representing an SQL{@code REF} value3889* @throws SQLException if (1) the given column name is not the name of3890* a column in this rowset, (2) the cursor is not on one of3891* this rowset's rows or its insert row, or (3) the column value3892* is not an SQL {@code REF} value3893* @see #getRef(int)3894*/3895public Ref getRef(String colName) throws SQLException {3896throw new UnsupportedOperationException();3897}38983899/**3900* Retrieves the value of the designated column in this3901* {@code CachedRowSetImpl} object as a {@code Blob} object3902* in the Java programming language.3903*3904* @param colName a {@code String} object that must match the3905* SQL name of a column in this rowset, ignoring case3906* @return a {@code Blob} object representing an SQL {@code BLOB} value3907* @throws SQLException if (1) the given column name is not the name of3908* a column in this rowset, (2) the cursor is not on one of3909* this rowset's rows or its insert row, or (3) the designated3910* column does not store an SQL {@code BLOB} value3911* @see #getBlob(int)3912*/3913public Blob getBlob(String colName) throws SQLException {3914throw new UnsupportedOperationException();3915}39163917/**3918* Retrieves the value of the designated column in this3919* {@code CachedRowSetImpl} object as a {@code Clob} object3920* in the Java programming language.3921*3922* @param colName a {@code String} object that must match the3923* SQL name of a column in this rowset, ignoring case3924* @return a {@code Clob} object representing an SQL3925* {@code CLOB} value3926* @throws SQLException if (1) the given column name is not the name of3927* a column in this rowset, (2) the cursor is not on one of3928* this rowset's rows or its insert row, or (3) the designated3929* column does not store an SQL {@code CLOB} value3930* @see #getClob(int)3931*/3932public Clob getClob(String colName) throws SQLException {3933throw new UnsupportedOperationException();3934}39353936/**3937* Retrieves the value of the designated column in this3938* {@code CachedRowSetImpl} object as an {@code Array} object3939* in the Java programming langugage.3940*3941* @param colName a {@code String} object that must match the3942* SQL name of a column in this rowset, ignoring case3943* @return an {@code Array} object representing an SQL3944* {@code ARRAY} value3945* @throws SQLException if (1) the given column name is not the name of3946* a column in this rowset, (2) the cursor is not on one of3947* this rowset's rows or its insert row, or (3) the designated3948* column does not store an SQL {@code ARRAY} value3949* @see #getArray(int)3950*/3951public Array getArray(String colName) throws SQLException {3952throw new UnsupportedOperationException();3953}39543955/**3956* Retrieves the value of the designated column in the current row3957* of this {@code CachedRowSetImpl} object as a {@code java.sql.Date}3958* object, using the given {@code Calendar} object to construct an3959* appropriate millisecond value for the date.3960*3961* @param columnIndex the first column is {@code 1}, the second3962* is {@code 2}, and so on; must be {@code 1} or larger3963* and equal to or less than the number of columns in the rowset3964* @param cal the {@code java.util.Calendar} object to use in3965* constructing the date3966* @return the column value; if the value is SQL {@code NULL},3967* the result is {@code null}3968* @throws SQLException if (1) the given column name is not the name of3969* a column in this rowset, (2) the cursor is not on one of3970* this rowset's rows or its insert row, or (3) the designated3971* column does not store an SQL {@code DATE} or3972* {@code TIMESTAMP} value3973*/3974public java.sql.Date getDate(int columnIndex, Calendar cal) throws SQLException {3975throw new UnsupportedOperationException();3976}39773978/**3979* Retrieves the value of the designated column in the current row3980* of this {@code CachedRowSetImpl} object as a {@code java.sql.Date}3981* object, using the given {@code Calendar} object to construct an3982* appropriate millisecond value for the date.3983*3984* @param columnName a {@code String} object that must match the3985* SQL name of a column in this rowset, ignoring case3986* @param cal the {@code java.util.Calendar} object to use in3987* constructing the date3988* @return the column value; if the value is SQL {@code NULL},3989* the result is {@code null}3990* @throws SQLException if (1) the given column name is not the name of3991* a column in this rowset, (2) the cursor is not on one of3992* this rowset's rows or its insert row, or (3) the designated3993* column does not store an SQL {@code DATE} or3994* {@code TIMESTAMP} value3995*/3996public java.sql.Date getDate(String columnName, Calendar cal) throws SQLException {3997throw new UnsupportedOperationException();3998}39994000/**4001* Retrieves the value of the designated column in the current row4002* of this {@code CachedRowSetImpl} object as a {@code java.sql.Time}4003* object, using the given {@code Calendar} object to construct an4004* appropriate millisecond value for the date.4005*4006* @param columnIndex the first column is {@code 1}, the second4007* is {@code 2}, and so on; must be {@code 1} or larger4008* and equal to or less than the number of columns in the rowset4009* @param cal the {@code java.util.Calendar} object to use in4010* constructing the date4011* @return the column value; if the value is SQL {@code NULL},4012* the result is {@code null}4013* @throws SQLException if (1) the given column name is not the name of4014* a column in this rowset, (2) the cursor is not on one of4015* this rowset's rows or its insert row, or (3) the designated4016* column does not store an SQL {@code TIME} or4017* {@code TIMESTAMP} value4018*/4019public java.sql.Time getTime(int columnIndex, Calendar cal) throws SQLException {4020throw new UnsupportedOperationException();4021}40224023/**4024* Retrieves the value of the designated column in the current row4025* of this {@code CachedRowSetImpl} object as a {@code java.sql.Time}4026* object, using the given {@code Calendar} object to construct an4027* appropriate millisecond value for the date.4028*4029* @param columnName a {@code String} object that must match the4030* SQL name of a column in this rowset, ignoring case4031* @param cal the {@code java.util.Calendar} object to use in4032* constructing the date4033* @return the column value; if the value is SQL {@code NULL},4034* the result is {@code null}4035* @throws SQLException if (1) the given column name is not the name of4036* a column in this rowset, (2) the cursor is not on one of4037* this rowset's rows or its insert row, or (3) the designated4038* column does not store an SQL {@code TIME} or4039* {@code TIMESTAMP} value4040*/4041public java.sql.Time getTime(String columnName, Calendar cal) throws SQLException {4042throw new UnsupportedOperationException();4043}40444045/**4046* Retrieves the value of the designated column in the current row4047* of this {@code CachedRowSetImpl} object as a {@code java.sql.Timestamp}4048* object, using the given {@code Calendar} object to construct an4049* appropriate millisecond value for the date.4050*4051* @param columnIndex the first column is {@code 1}, the second4052* is {@code 2}, and so on; must be {@code 1} or larger4053* and equal to or less than the number of columns in the rowset4054* @param cal the {@code java.util.Calendar} object to use in4055* constructing the date4056* @return the column value; if the value is SQL {@code NULL},4057* the result is {@code null}4058* @throws SQLException if (1) the given column name is not the name of4059* a column in this rowset, (2) the cursor is not on one of4060* this rowset's rows or its insert row, or (3) the designated4061* column does not store an SQL {@code TIME} or4062* {@code TIMESTAMP} value4063*/4064public java.sql.Timestamp getTimestamp(int columnIndex, Calendar cal) throws SQLException {4065throw new UnsupportedOperationException();4066}40674068/**4069* Retrieves the value of the designated column in the current row4070* of this {@code CachedRowSetImpl} object as a4071* {@code java.sql.Timestamp} object, using the given4072* {@code Calendar} object to construct an appropriate4073* millisecond value for the date.4074*4075* @param columnName a {@code String} object that must match the4076* SQL name of a column in this rowset, ignoring case4077* @param cal the {@code java.util.Calendar} object to use in4078* constructing the date4079* @return the column value; if the value is SQL {@code NULL},4080* the result is {@code null}4081* @throws SQLException if (1) the given column name is not the name of4082* a column in this rowset, (2) the cursor is not on one of4083* this rowset's rows or its insert row, or (3) the designated4084* column does not store an SQL {@code DATE},4085* {@code TIME}, or {@code TIMESTAMP} value4086*/4087public java.sql.Timestamp getTimestamp(String columnName, Calendar cal) throws SQLException {4088throw new UnsupportedOperationException();4089}40904091/*4092* RowSetInternal Interface4093*/40944095/**4096* Retrieves the {@code Connection} object passed to this4097* {@code CachedRowSetImpl} object. This connection may be4098* used to populate this rowset with data or to write data back4099* to its underlying data source.4100*4101* @return the {@code Connection} object passed to this rowset;4102* may be {@code null} if there is no connection4103* @throws SQLException if an error occurs4104*/4105public Connection getConnection() throws SQLException{4106throw new UnsupportedOperationException();4107}41084109/**4110* Sets the metadata for this {@code CachedRowSetImpl} object4111* with the given {@code RowSetMetaData} object.4112*4113* @param md a {@code RowSetMetaData} object instance containing4114* metadata about the columsn in the rowset4115* @throws SQLException if invalid meta data is supplied to the4116* rowset4117*/4118public void setMetaData(RowSetMetaData md) throws SQLException {4119throw new UnsupportedOperationException();4120}41214122/**4123* Returns a result set containing the original value of the rowset. The4124* original value is the state of the {@code CachedRowSetImpl} after the4125* last population or synchronization (whichever occurred most recently) with4126* the data source.4127* <p>4128* The cursor is positioned before the first row in the result set.4129* Only rows contained in the result set returned by {@code getOriginal()}4130* are said to have an original value.4131*4132* @return the original result set of the rowset4133* @throws SQLException if an error occurs produce the4134* {@code ResultSet} object4135*/4136public ResultSet getOriginal() throws SQLException {4137throw new UnsupportedOperationException();4138}41394140/**4141* Returns a result set containing the original value of the current4142* row only.4143* The original value is the state of the {@code CachedRowSetImpl} after4144* the last population or synchronization (whichever occurred most recently)4145* with the data source.4146*4147* @return the original result set of the row4148* @throws SQLException if there is no current row4149* @see #setOriginalRow4150*/4151public ResultSet getOriginalRow() throws SQLException {4152throw new UnsupportedOperationException();41534154}41554156/**4157* Marks the current row in this rowset as being an original row.4158*4159* @throws SQLException if there is no current row4160* @see #getOriginalRow4161*/4162public void setOriginalRow() throws SQLException {4163throw new UnsupportedOperationException();4164}41654166/**4167* Marks all rows in this rowset as being original rows. Any updates4168* made to the rows become the original values for the rowset.4169* Calls to the method {@code setOriginal} connot be reversed.4170*4171* @throws SQLException if an error occurs4172*/4173public void setOriginal() throws SQLException {4174throw new UnsupportedOperationException();4175}41764177/**4178* Returns an identifier for the object (table) that was used to create this4179* rowset.4180*4181* @return a {@code String} object that identifies the table from4182* which this {@code CachedRowSetImpl} object was derived4183* @throws SQLException if an error occurs4184*/4185public String getTableName() throws SQLException {4186throw new UnsupportedOperationException();4187}41884189/**4190* Sets the identifier for the table from which this rowset was derived4191* to the given table name.4192*4193* @param tabName a {@code String} object that identifies the4194* table from which this {@code CachedRowSetImpl} object4195* was derived4196* @throws SQLException if an error occurs4197*/4198public void setTableName(String tabName) throws SQLException {4199throw new UnsupportedOperationException();4200}42014202/**4203* Returns the columns that make a key to uniquely identify a4204* row in this {@code CachedRowSetImpl} object.4205*4206* @return an array of column numbers that constitutes a primary4207* key for this rowset. This array should be empty4208* if no column is representitive of a primary key4209* @throws SQLException if the rowset is empty or no columns4210* are designated as primary keys4211* @see #setKeyColumns4212*/4213public int[] getKeyColumns() throws SQLException {4214throw new UnsupportedOperationException();4215}421642174218/**4219* Sets this {@code CachedRowSetImpl} object's4220* {@code keyCols} field with the given array of column4221* numbers, which forms a key for uniquely identifying a row4222* in this rowset.4223*4224* @param keys an array of {@code int} indicating the4225* columns that form a primary key for this4226* {@code CachedRowSetImpl} object; every4227* element in the array must be greater than4228* {@code 0} and less than or equal to the number4229* of columns in this rowset4230* @throws SQLException if any of the numbers in the4231* given array is not valid for this rowset4232* @see #getKeyColumns4233*/4234public void setKeyColumns(int [] keys) throws SQLException {4235throw new UnsupportedOperationException();4236}42374238/**4239* Sets the designated column in either the current row or the insert4240* row of this {@code CachedRowSetImpl} object with the given4241* {@code double} value.4242*4243* This method updates a column value in either the current row or4244* the insert row of this rowset, but it does not update the4245* database. If the cursor is on a row in the rowset, the4246* method {@link #updateRow} must be called to update the database.4247* If the cursor is on the insert row, the method {@link #insertRow}4248* must be called, which will insert the new row into both this rowset4249* and the database. Both of these methods must be called before the4250* cursor moves to another row.4251*4252* @param columnIndex the first column is {@code 1}, the second4253* is {@code 2}, and so on; must be {@code 1} or larger4254* and equal to or less than the number of columns in this rowset4255* @param ref the new column {@code java.sql.Ref} value4256* @throws SQLException if (1) the given column index is out of bounds,4257* (2) the cursor is not on one of this rowset's rows or its4258* insert row, or (3) this rowset is4259* {@code ResultSet.CONCUR_READ_ONLY}4260*/4261public void updateRef(int columnIndex, java.sql.Ref ref) throws SQLException {4262throw new UnsupportedOperationException();4263}42644265/**4266* Sets the designated column in either the current row or the insert4267* row of this {@code CachedRowSetImpl} object with the given4268* {@code double} value.4269*4270* This method updates a column value in either the current row or4271* the insert row of this rowset, but it does not update the4272* database. If the cursor is on a row in the rowset, the4273* method {@link #updateRow} must be called to update the database.4274* If the cursor is on the insert row, the method {@link #insertRow}4275* must be called, which will insert the new row into both this rowset4276* and the database. Both of these methods must be called before the4277* cursor moves to another row.4278*4279* @param columnName a {@code String} object that must match the4280* SQL name of a column in this rowset, ignoring case4281* @param ref the new column {@code java.sql.Ref} value4282* @throws SQLException if (1) the given column name does not match the4283* name of a column in this rowset, (2) the cursor is not on4284* one of this rowset's rows or its insert row, or (3) this4285* rowset is {@code ResultSet.CONCUR_READ_ONLY}4286*/4287public void updateRef(String columnName, java.sql.Ref ref) throws SQLException {4288throw new UnsupportedOperationException();4289}42904291/**4292* Sets the designated column in either the current row or the insert4293* row of this {@code CachedRowSetImpl} object with the given4294* {@code double} value.4295*4296* This method updates a column value in either the current row or4297* the insert row of this rowset, but it does not update the4298* database. If the cursor is on a row in the rowset, the4299* method {@link #updateRow} must be called to update the database.4300* If the cursor is on the insert row, the method {@link #insertRow}4301* must be called, which will insert the new row into both this rowset4302* and the database. Both of these methods must be called before the4303* cursor moves to another row.4304*4305* @param columnIndex the first column is {@code 1}, the second4306* is {@code 2}, and so on; must be {@code 1} or larger4307* and equal to or less than the number of columns in this rowset4308* @param c the new column {@code Clob} value4309* @throws SQLException if (1) the given column index is out of bounds,4310* (2) the cursor is not on one of this rowset's rows or its4311* insert row, or (3) this rowset is4312* {@code ResultSet.CONCUR_READ_ONLY}4313*/4314public void updateClob(int columnIndex, Clob c) throws SQLException {4315throw new UnsupportedOperationException();4316}43174318/**4319* Sets the designated column in either the current row or the insert4320* row of this {@code CachedRowSetImpl} object with the given4321* {@code double} value.4322*4323* This method updates a column value in either the current row or4324* the insert row of this rowset, but it does not update the4325* database. If the cursor is on a row in the rowset, the4326* method {@link #updateRow} must be called to update the database.4327* If the cursor is on the insert row, the method {@link #insertRow}4328* must be called, which will insert the new row into both this rowset4329* and the database. Both of these methods must be called before the4330* cursor moves to another row.4331*4332* @param columnName a {@code String} object that must match the4333* SQL name of a column in this rowset, ignoring case4334* @param c the new column {@code Clob} value4335* @throws SQLException if (1) the given column name does not match the4336* name of a column in this rowset, (2) the cursor is not on4337* one of this rowset's rows or its insert row, or (3) this4338* rowset is {@code ResultSet.CONCUR_READ_ONLY}4339*/4340public void updateClob(String columnName, Clob c) throws SQLException {4341throw new UnsupportedOperationException();4342}43434344/**4345* Sets the designated column in either the current row or the insert4346* row of this {@code CachedRowSetImpl} object with the given4347* {@code java.sql.Blob} value.4348*4349* This method updates a column value in either the current row or4350* the insert row of this rowset, but it does not update the4351* database. If the cursor is on a row in the rowset, the4352* method {@link #updateRow} must be called to update the database.4353* If the cursor is on the insert row, the method {@link #insertRow}4354* must be called, which will insert the new row into both this rowset4355* and the database. Both of these methods must be called before the4356* cursor moves to another row.4357*4358* @param columnIndex the first column is {@code 1}, the second4359* is {@code 2}, and so on; must be {@code 1} or larger4360* and equal to or less than the number of columns in this rowset4361* @param b the new column {@code Blob} value4362* @throws SQLException if (1) the given column index is out of bounds,4363* (2) the cursor is not on one of this rowset's rows or its4364* insert row, or (3) this rowset is4365* {@code ResultSet.CONCUR_READ_ONLY}4366*/4367public void updateBlob(int columnIndex, Blob b) throws SQLException {4368throw new UnsupportedOperationException();4369}43704371/**4372* Sets the designated column in either the current row or the insert4373* row of this {@code CachedRowSetImpl} object with the given4374* {@code java.sql.Blob } value.4375*4376* This method updates a column value in either the current row or4377* the insert row of this rowset, but it does not update the4378* database. If the cursor is on a row in the rowset, the4379* method {@link #updateRow} must be called to update the database.4380* If the cursor is on the insert row, the method {@link #insertRow}4381* must be called, which will insert the new row into both this rowset4382* and the database. Both of these methods must be called before the4383* cursor moves to another row.4384*4385* @param columnName a {@code String} object that must match the4386* SQL name of a column in this rowset, ignoring case4387* @param b the new column {@code Blob} value4388* @throws SQLException if (1) the given column name does not match the4389* name of a column in this rowset, (2) the cursor is not on4390* one of this rowset's rows or its insert row, or (3) this4391* rowset is {@code ResultSet.CONCUR_READ_ONLY}4392*/4393public void updateBlob(String columnName, Blob b) throws SQLException {4394throw new UnsupportedOperationException();4395}43964397/**4398* Sets the designated column in either the current row or the insert4399* row of this {@code CachedRowSetImpl} object with the given4400* {@code java.sql.Array} values.4401*4402* This method updates a column value in either the current row or4403* the insert row of this rowset, but it does not update the4404* database. If the cursor is on a row in the rowset, the4405* method {@link #updateRow} must be called to update the database.4406* If the cursor is on the insert row, the method {@link #insertRow}4407* must be called, which will insert the new row into both this rowset4408* and the database. Both of these methods must be called before the4409* cursor moves to another row.4410*4411* @param columnIndex the first column is {@code 1}, the second4412* is {@code 2}, and so on; must be {@code 1} or larger4413* and equal to or less than the number of columns in this rowset4414* @param a the new column {@code Array} value4415* @throws SQLException if (1) the given column index is out of bounds,4416* (2) the cursor is not on one of this rowset's rows or its4417* insert row, or (3) this rowset is4418* {@code ResultSet.CONCUR_READ_ONLY}4419*/4420public void updateArray(int columnIndex, Array a) throws SQLException {4421throw new UnsupportedOperationException();4422}44234424/**4425* Sets the designated column in either the current row or the insert4426* row of this {@code CachedRowSetImpl} object with the given4427* {@code java.sql.Array} value.4428*4429* This method updates a column value in either the current row or4430* the insert row of this rowset, but it does not update the4431* database. If the cursor is on a row in the rowset, the4432* method {@link #updateRow} must be called to update the database.4433* If the cursor is on the insert row, the method {@link #insertRow}4434* must be called, which will insert the new row into both this rowset4435* and the database. Both of these methods must be called before the4436* cursor moves to another row.4437*4438* @param columnName a {@code String} object that must match the4439* SQL name of a column in this rowset, ignoring case4440* @param a the new column {@code Array} value4441* @throws SQLException if (1) the given column name does not match the4442* name of a column in this rowset, (2) the cursor is not on4443* one of this rowset's rows or its insert row, or (3) this4444* rowset is {@code ResultSet.CONCUR_READ_ONLY}4445*/4446public void updateArray(String columnName, Array a) throws SQLException {4447throw new UnsupportedOperationException();4448}444944504451/**4452* Retrieves the value of the designated column in this4453* {@code CachedRowSetImpl} object as a {@code java.net.URL} object4454* in the Java programming language.4455*4456* @return a java.net.URL object containing the resource reference described by4457* the URL4458* @throws SQLException if (1) the given column index is out of bounds,4459* (2) the cursor is not on one of this rowset's rows or its4460* insert row, or (3) the designated column does not store an4461* SQL {@code DATALINK} value.4462* @see #getURL(String)4463*/4464public java.net.URL getURL(int columnIndex) throws SQLException {4465throw new UnsupportedOperationException();4466}44674468/**4469* Retrieves the value of the designated column in this4470* {@code CachedRowSetImpl} object as a {@code java.net.URL} object4471* in the Java programming language.4472*4473* @return a java.net.URL object containing the resource reference described by4474* the URL4475* @throws SQLException if (1) the given column name not the name of a column4476* in this rowset, or4477* (2) the cursor is not on one of this rowset's rows or its4478* insert row, or (3) the designated column does not store an4479* SQL {@code DATALINK} value.4480* @see #getURL(int)4481*/4482public java.net.URL getURL(String columnName) throws SQLException {4483throw new UnsupportedOperationException();44844485}44864487/**4488* The first warning reported by calls on this {@code CachedRowSetImpl}4489* object is returned. Subsequent {@code CachedRowSetImpl} warnings will4490* be chained to this {@code SQLWarning}. All {@code RowSetWarnings}4491* warnings are generated in the disconnected environment and remain a4492* seperate warning chain to that provided by the {@code getWarnings}4493* method.4494*4495* <P>The warning chain is automatically cleared each time a new4496* row is read.4497*4498* <P><B>Note:</B> This warning chain only covers warnings caused4499* by {@code CachedRowSet} (and their child interface)4500* methods. All {@code SQLWarnings} can be obtained using the4501* {@code getWarnings} method which tracks warnings generated4502* by the underlying JDBC driver.4503* @return the first SQLWarning or null4504*4505*/4506public RowSetWarning getRowSetWarnings() {4507throw new UnsupportedOperationException();4508}45094510/**4511* Commits all changes performed by the {@code acceptChanges()}4512* methods4513*4514* @see java.sql.Connection#commit4515*/4516public void commit() throws SQLException {4517throw new UnsupportedOperationException();4518}45194520/**4521* Rolls back all changes performed by the {@code acceptChanges()}4522* methods4523*4524* @see java.sql.Connection#rollback4525*/4526public void rollback() throws SQLException {4527throw new UnsupportedOperationException();4528}45294530/**4531* Rolls back all changes performed by the {@code acceptChanges()}4532* to the last {@code Savepoint} transaction marker.4533*4534* @see java.sql.Connection#rollback(Savepoint)4535*/4536public void rollback(Savepoint s) throws SQLException {4537throw new UnsupportedOperationException();4538}45394540/**4541* Unsets the designated parameter to the given int array.4542* This was set using {@code setMatchColumn}4543* as the column which will form the basis of the join.4544* <P>4545* The parameter value unset by this method should be same4546* as was set.4547*4548* @param columnIdxes the index into this rowset4549* object's internal representation of parameter values4550* @throws SQLException if an error occurs or the4551* parameter index is out of bounds or if the columnIdx is4552* not the same as set using {@code setMatchColumn(int [])}4553*/4554public void unsetMatchColumn(int[] columnIdxes) throws SQLException {4555throw new UnsupportedOperationException();4556}45574558/**4559* Unsets the designated parameter to the given String array.4560* This was set using {@code setMatchColumn}4561* as the column which will form the basis of the join.4562* <P>4563* The parameter value unset by this method should be same4564* as was set.4565*4566* @param columnIdxes the index into this rowset4567* object's internal representation of parameter values4568* @throws SQLException if an error occurs or the4569* parameter index is out of bounds or if the columnName is4570* not the same as set using {@code setMatchColumn(String [])}4571*/4572public void unsetMatchColumn(String[] columnIdxes) throws SQLException {4573throw new UnsupportedOperationException();4574}45754576/**4577* Retrieves the column name as {@code String} array4578* that was set using {@code setMatchColumn(String [])}4579* for this rowset.4580*4581* @return a {@code String} array object that contains the column names4582* for the rowset which has this the match columns4583*4584* @throws SQLException if an error occurs or column name is not set4585*/4586public String[] getMatchColumnNames() throws SQLException {4587throw new UnsupportedOperationException();4588}45894590/**4591* Retrieves the column id as {@code int} array that was set using4592* {@code setMatchColumn(int [])} for this rowset.4593*4594* @return an {@code int} array object that contains the column ids4595* for the rowset which has this as the match columns.4596*4597* @throws SQLException if an error occurs or column index is not set4598*/4599public int[] getMatchColumnIndexes() throws SQLException {4600throw new UnsupportedOperationException();4601}46024603/**4604* Sets the designated parameter to the given int array.4605* This forms the basis of the join for the4606* {@code JoinRowSet} as the column which will form the basis of the4607* join.4608* <P>4609* The parameter value set by this method is stored internally and4610* will be supplied as the appropriate parameter in this rowset's4611* command when the method {@code getMatchColumnIndexes} is called.4612*4613* @param columnIdxes the indexes into this rowset4614* object's internal representation of parameter values; the4615* first parameter is 0, the second is 1, and so on; must be4616* {@code 0} or greater4617* @throws SQLException if an error occurs or the4618* parameter index is out of bounds4619*/4620public void setMatchColumn(int[] columnIdxes) throws SQLException {4621throw new UnsupportedOperationException();4622}46234624/**4625* Sets the designated parameter to the given String array.4626* This forms the basis of the join for the4627* {@code JoinRowSet} as the column which will form the basis of the4628* join.4629* <P>4630* The parameter value set by this method is stored internally and4631* will be supplied as the appropriate parameter in this rowset's4632* command when the method {@code getMatchColumn} is called.4633*4634* @param columnNames the name of the column into this rowset4635* object's internal representation of parameter values4636* @throws SQLException if an error occurs or the4637* parameter index is out of bounds4638*/4639public void setMatchColumn(String[] columnNames) throws SQLException {4640throw new UnsupportedOperationException();4641}464246434644/**4645* Sets the designated parameter to the given {@code int}4646* object. This forms the basis of the join for the4647* {@code JoinRowSet} as the column which will form the basis of the4648* join.4649* <P>4650* The parameter value set by this method is stored internally and4651* will be supplied as the appropriate parameter in this rowset's4652* command when the method {@code getMatchColumn} is called.4653*4654* @param columnIdx the index into this rowset4655* object's internal representation of parameter values; the4656* first parameter is 0, the second is 1, and so on; must be4657* {@code 0} or greater4658* @throws SQLException if an error occurs or the4659* parameter index is out of bounds4660*/4661public void setMatchColumn(int columnIdx) throws SQLException {4662throw new UnsupportedOperationException();4663}46644665/**4666* Sets the designated parameter to the given {@code String}4667* object. This forms the basis of the join for the4668* {@code JoinRowSet} as the column which will form the basis of the4669* join.4670* <P>4671* The parameter value set by this method is stored internally and4672* will be supplied as the appropriate parameter in this rowset's4673* command when the method {@code getMatchColumn} is called.4674*4675* @param columnName the name of the column into this rowset4676* object's internal representation of parameter values4677* @throws SQLException if an error occurs or the4678* parameter index is out of bounds4679*/4680public void setMatchColumn(String columnName) throws SQLException {4681throw new UnsupportedOperationException();4682}46834684/**4685* Unsets the designated parameter to the given {@code int}4686* object. This was set using {@code setMatchColumn}4687* as the column which will form the basis of the join.4688* <P>4689* The parameter value unset by this method should be same4690* as was set.4691*4692* @param columnIdx the index into this rowset4693* object's internal representation of parameter values4694* @throws SQLException if an error occurs or the4695* parameter index is out of bounds or if the columnIdx is4696* not the same as set using {@code setMatchColumn(int)}4697*/4698public void unsetMatchColumn(int columnIdx) throws SQLException {4699throw new UnsupportedOperationException();4700}47014702/**4703* Unsets the designated parameter to the given {@code String}4704* object. This was set using {@code setMatchColumn}4705* as the column which will form the basis of the join.4706* <P>4707* The parameter value unset by this method should be same4708* as was set.4709*4710* @param columnName the index into this rowset4711* object's internal representation of parameter values4712* @throws SQLException if an error occurs or the4713* parameter index is out of bounds or if the columnName is4714* not the same as set using {@code setMatchColumn(String)}4715*/4716public void unsetMatchColumn(String columnName) throws SQLException {4717throw new UnsupportedOperationException();4718}47194720/**4721* Notifies registered listeners that a RowSet object in the given RowSetEvent4722* object has populated a number of additional rows. The {@code numRows} parameter4723* ensures that this event will only be fired every {@code numRow}.4724* <p>4725* The source of the event can be retrieved with the method event.getSource.4726*4727* @param event a {@code RowSetEvent} object that contains the4728* {@code RowSet} object that is the source of the events4729* @param numRows when populating, the number of rows interval on which the4730* {@code CachedRowSet} populated should fire; the default value4731* is zero; cannot be less than {@code fetchSize} or zero4732*/4733public void rowSetPopulated(RowSetEvent event, int numRows) throws SQLException {4734throw new UnsupportedOperationException();4735}47364737/**4738* Populates this {@code CachedRowSet} object with data from4739* the given {@code ResultSet} object. While related to the {@code populate(ResultSet)}4740* method, an additional parameter is provided to allow starting position within4741* the {@code ResultSet} from where to populate the CachedRowSet4742* instance.4743*4744* This method is an alternative to the method {@code execute}4745* for filling the rowset with data. The method {@code populate}4746* does not require that the properties needed by the method4747* {@code execute}, such as the {@code command} property,4748* be set. This is true because the method {@code populate}4749* is given the {@code ResultSet} object from4750* which to get data and thus does not need to use the properties4751* required for setting up a connection and executing this4752* {@code CachedRowSetImpl} object's command.4753* <P>4754* After populating this rowset with data, the method4755* {@code populate} sets the rowset's metadata and4756* then sends a {@code RowSetChangedEvent} object4757* to all registered listeners prior to returning.4758*4759* @param data the {@code ResultSet} object containing the data4760* to be read into this {@code CachedRowSetImpl} object4761* @param start the integer specifing the position in the4762* {@code ResultSet} object to popultate the4763* {@code CachedRowSetImpl} object.4764* @throws SQLException if an error occurs; or the max row setting is4765* violated while populating the RowSet.Also id the start position4766* is negative.4767* @see #execute4768*/4769public void populate(ResultSet data, int start) throws SQLException{4770throw new UnsupportedOperationException();47714772}47734774/**4775* The nextPage gets the next page, that is a {@code CachedRowSetImpl} object4776* containing the number of rows specified by page size.4777* @return boolean value true indicating whether there are more pages to come and4778* false indicating that this is the last page.4779* @throws SQLException if an error occurs or this called before calling populate.4780*/4781public boolean nextPage() throws SQLException {4782throw new UnsupportedOperationException();4783}47844785/**4786* This is the setter function for setting the size of the page, which specifies4787* how many rows have to be retrived at a time.4788*4789* @param size which is the page size4790* @throws SQLException if size is less than zero or greater than max rows.4791*/4792public void setPageSize (int size) throws SQLException {4793throw new UnsupportedOperationException();4794}47954796/**4797* This is the getter function for the size of the page.4798*4799* @return an integer that is the page size.4800*/4801public int getPageSize() {4802throw new UnsupportedOperationException();4803}480448054806/**4807* Retrieves the data present in the page prior to the page from where it is4808* called.4809* @return boolean value true if it retrieves the previous page, flase if it4810* is on the first page.4811* @throws SQLException if it is called before populate is called or ResultSet4812* is of type {@code ResultSet.TYPE_FORWARD_ONLY} or if an error4813* occurs.4814*/4815public boolean previousPage() throws SQLException {4816throw new UnsupportedOperationException();4817}48184819/**4820* Updates the designated column with a character stream value, which will4821* have the specified number of bytes. The driver does the necessary conversion4822* from Java character format to the national character set in the database.4823* It is intended for use when updating NCHAR, NVARCHAR and LONGNVARCHAR columns.4824* The updater methods are used to update column values in the current row or4825* the insert row. The updater methods do not update the underlying database;4826* instead the updateRow or insertRow methods are called to update the database.4827*4828* @param columnIndex - the first column is 1, the second is 2, ...4829* @param x - the new column value4830* @param length - the length of the stream4831* @exception SQLException if a database access error occurs4832* @since 1.64833*/4834public void updateNCharacterStream(int columnIndex,4835java.io.Reader x,4836int length)4837throws SQLException {4838throw new UnsupportedOperationException("Operation not yet supported");4839}48404841/**4842* Updates the designated column with a character stream value, which will4843* have the specified number of bytes. The driver does the necessary conversion4844* from Java character format to the national character set in the database.4845* It is intended for use when updating NCHAR,NVARCHAR and LONGNVARCHAR columns.4846* The updater methods are used to update column values in the current row or4847* the insert row. The updater methods do not update the underlying database;4848* instead the updateRow or insertRow methods are called to update the database.4849*4850* @param columnName - name of the Column4851* @param x - the new column value4852* @param length - the length of the stream4853* @exception SQLException if a database access error occurs4854* @since 1.64855*/4856public void updateNCharacterStream(String columnName,4857java.io.Reader x,4858int length)4859throws SQLException {4860throw new UnsupportedOperationException("Operation not yet supported");4861}48624863/**4864* This method re populates the resBundle4865* during the deserialization process4866*4867*/4868private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {4869// Default state initialization happens here4870ois.defaultReadObject();4871// Initialization of transient Res Bundle happens here .4872try {4873resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();4874} catch(IOException ioe) {4875throw new RuntimeException(ioe);4876}48774878}48794880static final long serialVersionUID = -3345004441725080251L;4881} //end class488248834884