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