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