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