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