Source for java.sql.ResultSet

   1: /* ResultSet.java -- A SQL statement result set.
   2:    Copyright (C) 1999, 2000, 2002, 2006 Free Software Foundation, Inc.
   3: 
   4: This file is part of GNU Classpath.
   5: 
   6: GNU Classpath is free software; you can redistribute it and/or modify
   7: it under the terms of the GNU General Public License as published by
   8: the Free Software Foundation; either version 2, or (at your option)
   9: any later version.
  10: 
  11: GNU Classpath is distributed in the hope that it will be useful, but
  12: WITHOUT ANY WARRANTY; without even the implied warranty of
  13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14: General Public License for more details.
  15: 
  16: You should have received a copy of the GNU General Public License
  17: along with GNU Classpath; see the file COPYING.  If not, write to the
  18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  19: 02110-1301 USA.
  20: 
  21: Linking this library statically or dynamically with other modules is
  22: making a combined work based on this library.  Thus, the terms and
  23: conditions of the GNU General Public License cover the whole
  24: combination.
  25: 
  26: As a special exception, the copyright holders of this library give you
  27: permission to link this library with independent modules to produce an
  28: executable, regardless of the license terms of these independent
  29: modules, and to copy and distribute the resulting executable under
  30: terms of your choice, provided that you also meet, for each linked
  31: independent module, the terms and conditions of the license of that
  32: module.  An independent module is a module which is not derived from
  33: or based on this library.  If you modify this library, you may extend
  34: this exception to your version of the library, but you are not
  35: obligated to do so.  If you do not wish to do so, delete this
  36: exception statement from your version. */
  37: 
  38: 
  39: package java.sql;
  40: 
  41: import java.io.InputStream;
  42: import java.io.Reader;
  43: import java.math.BigDecimal;
  44: import java.net.URL;
  45: import java.util.Calendar;
  46: import java.util.Map;
  47: 
  48: /**
  49:  * This interface provides access to the data set returned by a SQL
  50:  * statement.  An instance of this interface is returned by the various
  51:  * execution methods in the <code>Statement</code>.
  52:  *
  53:  * <p> This class models a cursor, which can be stepped through one row at a
  54:  * time.  Methods are provided for accessing columns by column name or by
  55:  * index.</p>
  56:  *
  57:  * <p> Note that a result set is invalidated if the statement that returned
  58:  * it is closed.</p>
  59:  *
  60:  * @author Aaron M. Renn (arenn@urbanophile.com)
  61:  */
  62: public interface ResultSet
  63:   extends AutoCloseable
  64: {
  65:   /**
  66:    * The rows will be processed in order from first to last.
  67:    */
  68:   int FETCH_FORWARD = 1000;
  69: 
  70:   /**
  71:    * The rows will be processed in order from last to first.
  72:    */
  73:   int FETCH_REVERSE = 1001;
  74: 
  75:   /**
  76:    * The rows will be processed in an unknown order
  77:    */
  78:   int FETCH_UNKNOWN = 1002;
  79: 
  80:   /**
  81:    * This type of result set may only step forward through the rows returned.
  82:    */
  83:   int TYPE_FORWARD_ONLY = 1003;
  84: 
  85:   /**
  86:    * This type of result set is scrollable and is not sensitive to changes
  87:    * made by other statements.
  88:    */
  89:   int TYPE_SCROLL_INSENSITIVE = 1004;
  90: 
  91:   /**
  92:    * This type of result set is scrollable and is also sensitive to changes
  93:    * made by other statements.
  94:    */
  95:   int TYPE_SCROLL_SENSITIVE = 1005;
  96: 
  97:   /**
  98:    * The concurrency mode of for the result set may not be modified.
  99:    */
 100:   int CONCUR_READ_ONLY = 1007;
 101: 
 102:   /**
 103:    * The concurrency mode of for the result set may be modified.
 104:    */
 105:   int CONCUR_UPDATABLE = 1008;
 106: 
 107:   int HOLD_CURSORS_OVER_COMMIT = 1;
 108: 
 109:   int CLOSE_CURSORS_AT_COMMIT = 2;
 110: 
 111:   /**
 112:    * This method advances to the next row in the result set.  Any streams
 113:    * open on the current row are closed automatically.
 114:    *
 115:    * @return <code>true</code> if the next row exists, <code>false</code>
 116:    *         otherwise.
 117:    * @exception SQLException If an error occurs.
 118:    */
 119:   boolean next() throws SQLException;
 120: 
 121:   /**
 122:    * This method closes the result set and frees any associated resources.
 123:    *
 124:    * @exception SQLException If an error occurs.
 125:    */
 126:   void close() throws SQLException;
 127: 
 128:   /**
 129:    * This method tests whether the value of the last column that was fetched
 130:    * was actually a SQL NULL value.
 131:    *
 132:    * @return <code>true</code> if the last column fetched was a NULL,
 133:    *         <code>false</code> otherwise.
 134:    * @exception SQLException If an error occurs.
 135:    */
 136:   boolean wasNull() throws SQLException;
 137: 
 138:   /**
 139:    * This method returns the value of the specified column as a Java
 140:    * <code>String</code>.
 141:    *
 142:    * @param columnIndex The index of the column to return.
 143:    * @return The column value as a <code>String</code>.
 144:    * @exception SQLException If an error occurs.
 145:    */
 146:   String getString(int columnIndex) throws SQLException;
 147: 
 148:   /**
 149:    * This method returns the value of the specified column as a Java
 150:    * <code>boolean</code>.
 151:    *
 152:    * @param columnIndex The index of the column to return.
 153:    * @return The column value as a <code>boolean</code>.
 154:    * @exception SQLException If an error occurs.
 155:    */
 156:   boolean getBoolean(int columnIndex) throws SQLException;
 157: 
 158:   /**
 159:    * This method returns the value of the specified column as a Java
 160:    * <code>byte</code>.
 161:    *
 162:    * @param columnIndex The index of the column to return.
 163:    * @return The column value as a <code>byte</code>.
 164:    * @exception SQLException If an error occurs.
 165:    */
 166:   byte getByte(int columnIndex) throws SQLException;
 167: 
 168:   /**
 169:    * This method returns the value of the specified column as a Java
 170:    * <code>short</code>.
 171:    *
 172:    * @param columnIndex The index of the column to return.
 173:    * @return The column value as a <code>short</code>.
 174:    * @exception SQLException If an error occurs.
 175:    */
 176:   short getShort(int columnIndex) throws SQLException;
 177: 
 178:   /**
 179:    * This method returns the value of the specified column as a Java
 180:    * <code>int</code>.
 181:    *
 182:    * @param columnIndex The index of the column to return.
 183:    * @return The column value as a <code>int</code>.
 184:    * @exception SQLException If an error occurs.
 185:    */
 186:   int getInt(int columnIndex) throws SQLException;
 187: 
 188:   /**
 189:    * This method returns the value of the specified column as a Java
 190:    * <code>long</code>.
 191:    *
 192:    * @param columnIndex The index of the column to return.
 193:    * @return The column value as a <code>long</code>.
 194:    * @exception SQLException If an error occurs.
 195:    */
 196:   long getLong(int columnIndex) throws SQLException;
 197: 
 198:   /**
 199:    * This method returns the value of the specified column as a Java
 200:    * <code>float</code>.
 201:    *
 202:    * @param columnIndex The index of the column to return.
 203:    * @return The column value as a <code>float</code>.
 204:    * @exception SQLException If an error occurs.
 205:    */
 206:   float getFloat(int columnIndex) throws SQLException;
 207: 
 208:   /**
 209:    * This method returns the value of the specified column as a Java
 210:    * <code>double</code>.
 211:    *
 212:    * @param columnIndex The index of the column to return.
 213:    * @return The column value as a <code>double</code>.
 214:    * @exception SQLException If an error occurs.
 215:    */
 216:   double getDouble(int columnIndex) throws SQLException;
 217: 
 218:   /**
 219:    * This method returns the value of the specified column as a Java
 220:    * <code>BigDecimal</code>.
 221:    *
 222:    * @param columnIndex The index of the column to return.
 223:    * @param scale The number of digits to the right of the decimal to return.
 224:    * @return The column value as a <code>BigDecimal</code>.
 225:    * @exception SQLException If an error occurs.
 226:    * @deprecated
 227:    */
 228:   BigDecimal getBigDecimal(int columnIndex, int scale)
 229:     throws SQLException;
 230: 
 231:   /**
 232:    * This method returns the value of the specified column as a Java
 233:    * byte array.
 234:    *
 235:    * @param columnIndex The index of the column to return.
 236:    * @return The column value as a byte array
 237:    * @exception SQLException If an error occurs.
 238:    */
 239:   byte[] getBytes(int columnIndex) throws SQLException;
 240: 
 241:   /**
 242:    * This method returns the value of the specified column as a Java
 243:    * <code>java.sql.Date</code>.
 244:    *
 245:    * @param columnIndex The index of the column to return.
 246:    * @return The column value as a <code>java.sql.Date</code>.
 247:    * @exception SQLException If an error occurs.
 248:    */
 249:   Date getDate(int columnIndex) throws SQLException;
 250: 
 251:   /**
 252:    * This method returns the value of the specified column as a Java
 253:    * <code>java.sql.Time</code>.
 254:    *
 255:    * @param columnIndex The index of the column to return.
 256:    * @return The column value as a <code>java.sql.Time</code>.
 257:    * @exception SQLException If an error occurs.
 258:    */
 259:   Time getTime(int columnIndex) throws SQLException;
 260: 
 261:   /**
 262:    * This method returns the value of the specified column as a Java
 263:    * <code>java.sql.Timestamp</code>.
 264:    *
 265:    * @param columnIndex The index of the column to return.
 266:    * @return The column value as a <code>java.sql.Timestamp</code>.
 267:    * @exception SQLException If an error occurs.
 268:    */
 269:   Timestamp getTimestamp(int columnIndex) throws SQLException;
 270: 
 271:   /**
 272:    * This method returns the value of the specified column as an ASCII
 273:    * stream.  Note that all the data from this stream must be read before
 274:    * fetching the value of any other column.  Please also be aware that
 275:    * calling <code>next()</code> or <code>close()</code> on this result set
 276:    * will close this stream as well.
 277:    *
 278:    * @param columnIndex The index of the column to return.
 279:    * @return The column value as an ASCII <code>InputStream</code>.
 280:    * @exception SQLException If an error occurs.
 281:    */
 282:   InputStream getAsciiStream(int columnIndex) throws SQLException;
 283: 
 284:   /**
 285:    * This method returns the value of the specified column as a Unicode UTF-8
 286:    * stream.  Note that all the data from this stream must be read before
 287:    * fetching the value of any other column.  Please also be aware that
 288:    * calling <code>next()</code> or <code>close()</code> on this result set
 289:    * will close this stream as well.
 290:    *
 291:    * @param columnIndex The index of the column to return.
 292:    * @return The column value as a Unicode UTF-8 <code>InputStream</code>.
 293:    * @exception SQLException If an error occurs.
 294:    * @deprecated Use getCharacterStream instead.
 295:    */
 296:   InputStream getUnicodeStream(int columnIndex) throws SQLException;
 297: 
 298:   /**
 299:    * This method returns the value of the specified column as a raw byte
 300:    * stream.  Note that all the data from this stream must be read before
 301:    * fetching the value of any other column.  Please also be aware that
 302:    * calling <code>next()</code> or <code>close()</code> on this result set
 303:    * will close this stream as well.
 304:    *
 305:    * @param columnIndex The index of the column to return.
 306:    * @return The column value as a raw byte <code>InputStream</code>.
 307:    * @exception SQLException If an error occurs.
 308:    */
 309:   InputStream getBinaryStream(int columnIndex) throws SQLException;
 310: 
 311:   /**
 312:    * This method returns the value of the specified column as a Java
 313:    * <code>String</code>.
 314:    *
 315:    * @param columnName The name of the column to return.
 316:    * @return The column value as a <code>String</code>.
 317:    * @exception SQLException If an error occurs.
 318:    */
 319:   String getString(String columnName) throws SQLException;
 320: 
 321:   /**
 322:    * This method returns the value of the specified column as a Java
 323:    * <code>boolean</code>.
 324:    *
 325:    * @param columnName The name of the column to return.
 326:    * @return The column value as a <code>boolean</code>.
 327:    * @exception SQLException If an error occurs.
 328:    */
 329:   boolean getBoolean(String columnName) throws SQLException;
 330: 
 331:   /**
 332:    * This method returns the value of the specified column as a Java
 333:    * <code>byte</code>.
 334:    *
 335:    * @param columnName The name of the column to return.
 336:    * @return The column value as a <code>byte</code>.
 337:    * @exception SQLException If an error occurs.
 338:    */
 339:   byte getByte(String columnName) throws SQLException;
 340: 
 341:   /**
 342:    * This method returns the value of the specified column as a Java
 343:    * <code>short</code>.
 344:    *
 345:    * @param columnName The name of the column to return.
 346:    * @return The column value as a <code>short</code>.
 347:    * @exception SQLException If an error occurs.
 348:    */
 349:   short getShort(String columnName) throws SQLException;
 350: 
 351:   /**
 352:    * This method returns the value of the specified column as a Java
 353:    * <code>int</code>.
 354:    *
 355:    * @param columnName The name of the column to return.
 356:    * @return The column value as a <code>int</code>.
 357:    * @exception SQLException If an error occurs.
 358:    */
 359:   int getInt(String columnName) throws SQLException;
 360: 
 361:   /**
 362:    * This method returns the value of the specified column as a Java
 363:    * <code>long</code>.
 364:    *
 365:    * @param columnName The name of the column to return.
 366:    * @return The column value as a <code>long</code>.
 367:    * @exception SQLException If an error occurs.
 368:    */
 369:   long getLong(String columnName) throws SQLException;
 370: 
 371:   /**
 372:    * This method returns the value of the specified column as a Java
 373:    * <code>float</code>.
 374:    *
 375:    * @param columnName The name of the column to return.
 376:    * @return The column value as a <code>float</code>.
 377:    * @exception SQLException If an error occurs.
 378:    */
 379:   float getFloat(String columnName) throws SQLException;
 380: 
 381:   /**
 382:    * This method returns the value of the specified column as a Java
 383:    * <code>double</code>.
 384:    *
 385:    * @param columnName The name of the column to return.
 386:    * @return The column value as a <code>double</code>.
 387:    * @exception SQLException If an error occurs.
 388:    */
 389:   double getDouble(String columnName) throws SQLException;
 390: 
 391:   /**
 392:    * This method returns the value of the specified column as a Java
 393:    * <code>BigDecimal</code>.
 394:    *
 395:    * @param columnName The name of the column to return.
 396:    * @return The column value as a <code>BigDecimal</code>.
 397:    * @exception SQLException If an error occurs.
 398:    * @deprecated
 399:    */
 400:   BigDecimal getBigDecimal(String columnName, int scale)
 401:     throws SQLException;
 402: 
 403:   /**
 404:    * This method returns the value of the specified column as a Java
 405:    * byte array.
 406:    *
 407:    * @param columnName The name of the column to return.
 408:    * @return The column value as a byte array
 409:    * @exception SQLException If an error occurs.
 410:    */
 411:   byte[] getBytes(String columnName) throws SQLException;
 412: 
 413:   /**
 414:    * This method returns the value of the specified column as a Java
 415:    * <code>java.sql.Date</code>.
 416:    *
 417:    * @param columnName The name of the column to return.
 418:    * @return The column value as a <code>java.sql.Date</code>.
 419:    * @exception SQLException If an error occurs.
 420:    */
 421:   Date getDate(String columnName) throws SQLException;
 422: 
 423:   /**
 424:    * This method returns the value of the specified column as a Java
 425:    * <code>java.sql.Time</code>.
 426:    *
 427:    * @param columnName The name of the column to return.
 428:    * @return The column value as a <code>java.sql.Time</code>.
 429:    * @exception SQLException If an error occurs.
 430:    */
 431:   Time getTime(String columnName) throws SQLException;
 432: 
 433:   /**
 434:    * This method returns the value of the specified column as a Java
 435:    * <code>java.sql.Timestamp</code>.
 436:    *
 437:    * @param columnName The name of the column to return.
 438:    * @return The column value as a <code>java.sql.Timestamp</code>.
 439:    * @exception SQLException If an error occurs.
 440:    */
 441:   Timestamp getTimestamp(String columnName) throws SQLException;
 442: 
 443:   /**
 444:    * This method returns the value of the specified column as an ASCII
 445:    * stream.  Note that all the data from this stream must be read before
 446:    * fetching the value of any other column.  Please also be aware that
 447:    * calling <code>next()</code> or <code>close()</code> on this result set
 448:    * will close this stream as well.
 449:    *
 450:    * @param columnName The name of the column to return.
 451:    * @return The column value as an ASCII <code>InputStream</code>.
 452:    * @exception SQLException If an error occurs.
 453:    */
 454:   InputStream getAsciiStream(String columnName) throws SQLException;
 455: 
 456:   /**
 457:    * This method returns the value of the specified column as a Unicode UTF-8
 458:    * stream.  Note that all the data from this stream must be read before
 459:    * fetching the value of any other column.  Please also be aware that
 460:    * calling <code>next()</code> or <code>close()</code> on this result set
 461:    * will close this stream as well.
 462:    *
 463:    * @param columnName The name of the column to return.
 464:    * @return The column value as a Unicode UTF-8 <code>InputStream</code>.
 465:    * @exception SQLException If an error occurs.
 466:    * @deprecated Use getCharacterStream instead.
 467:    */
 468:   InputStream getUnicodeStream(String columnName) throws SQLException;
 469: 
 470:   /**
 471:    * This method returns the value of the specified column as a raw byte
 472:    * stream.  Note that all the data from this stream must be read before
 473:    * fetching the value of any other column.  Please also be aware that
 474:    * calling <code>next()</code> or <code>close()</code> on this result set
 475:    * will close this stream as well.
 476:    *
 477:    * @param columnName The name of the column to return.
 478:    * @return The column value as a raw byte <code>InputStream</code>.
 479:    * @exception SQLException If an error occurs.
 480:    */
 481:   InputStream getBinaryStream(String columnName) throws SQLException;
 482: 
 483:   /**
 484:    * This method returns the first SQL warning associated with this result
 485:    * set.  Any additional warnings will be chained to this one.
 486:    *
 487:    * @return The first SQLWarning for this result set, or <code>null</code> if
 488:    *         there are no warnings.
 489:    * @exception SQLException If an error occurs.
 490:    */
 491:   SQLWarning getWarnings() throws SQLException;
 492: 
 493:   /**
 494:    * This method clears all warnings associated with this result set.
 495:    *
 496:    * @exception SQLException If an error occurs.
 497:    */
 498:   void clearWarnings() throws SQLException;
 499: 
 500:   /**
 501:    * This method returns the name of the database cursor used by this
 502:    * result set.
 503:    *
 504:    * @return The name of the database cursor used by this result set.
 505:    * @exception SQLException If an error occurs.
 506:    */
 507:   String getCursorName() throws SQLException;
 508: 
 509:   /**
 510:    * This method returns data about the columns returned as part of the
 511:    * result set as a <code>ResultSetMetaData</code> instance.
 512:    *
 513:    * @return The <code>ResultSetMetaData</code> instance for this result set.
 514:    * @exception SQLException If an error occurs.
 515:    */
 516:   ResultSetMetaData getMetaData() throws SQLException;
 517: 
 518:   /**
 519:    * This method returns the value of the specified column as a Java
 520:    * <code>Object</code>.
 521:    *
 522:    * @param columnIndex The index of the column to return.
 523:    * @return The column value as an <code>Object</code>.
 524:    * @exception SQLException If an error occurs.
 525:    */
 526:   Object getObject(int columnIndex) throws SQLException;
 527: 
 528:   /**
 529:    * This method returns the value of the specified column as a Java
 530:    * <code>Object</code>.
 531:    *
 532:    * @param columnName The name of the column to return.
 533:    * @return The column value as an <code>Object</code>.
 534:    * @exception SQLException If an error occurs.
 535:    */
 536:   Object getObject(String columnName) throws SQLException;
 537: 
 538:   /**
 539:    * This method returns the column index of the specified named column.
 540:    *
 541:    * @param columnName The name of the column.
 542:    * @return The index of the column.
 543:    * @exception SQLException If an error occurs.
 544:    */
 545:   int findColumn(String columnName) throws SQLException;
 546: 
 547:   /**
 548:    * This method returns the value of the specified column as a character
 549:    * stream.  Note that all the data from this stream must be read before
 550:    * fetching the value of any other column.  Please also be aware that
 551:    * calling <code>next()</code> or <code>close()</code> on this result set
 552:    * will close this stream as well.
 553:    *
 554:    * @param columnIndex The index of the column to return.
 555:    * @return The column value as an character <code>Reader</code>.
 556:    * @exception SQLException If an error occurs.
 557:    */
 558:   Reader getCharacterStream(int columnIndex) throws SQLException;
 559: 
 560:   /**
 561:    * This method returns the value of the specified column as a character
 562:    * stream.  Note that all the data from this stream must be read before
 563:    * fetching the value of any other column.  Please also be aware that
 564:    * calling <code>next()</code> or <code>close()</code> on this result set
 565:    * will close this stream as well.
 566:    *
 567:    * @param columnName The name of the column to return.
 568:    * @return The column value as an character <code>Reader</code>.
 569:    * @exception SQLException If an error occurs.
 570:    */
 571:   Reader getCharacterStream(String columnName) throws SQLException;
 572: 
 573:   /**
 574:    * This method returns the value of the specified column as a Java
 575:    * <code>BigDecimal</code>.
 576:    *
 577:    * @param columnIndex The index of the column to return.
 578:    * @return The column value as a <code>BigDecimal</code>.
 579:    * @exception SQLException If an error occurs.
 580:    */
 581:   BigDecimal getBigDecimal(int columnIndex) throws SQLException;
 582: 
 583:   /**
 584:    * This method returns the value of the specified column as a Java
 585:    * <code>BigDecimal</code>.
 586:    *
 587:    * @param columnName The name of the column to return.
 588:    * @return The column value as a <code>BigDecimal</code>.
 589:    * @exception SQLException If an error occurs.
 590:    */
 591:   BigDecimal getBigDecimal(String columnName) throws SQLException;
 592: 
 593:   /**
 594:    * This method tests whether or not the cursor is before the first row
 595:    * in the result set.
 596:    *
 597:    * @return <code>true</code> if the cursor is positioned before the first
 598:    *         row, <code>false</code> otherwise.
 599:    * @exception SQLException If an error occurs.
 600:    */
 601:   boolean isBeforeFirst() throws SQLException;
 602: 
 603:   /**
 604:    * This method tests whether or not the cursor is after the last row
 605:    * in the result set.
 606:    *
 607:    * @return <code>true</code> if the cursor is positioned after the last
 608:    *         row, <code>false</code> otherwise.
 609:    * @exception SQLException If an error occurs.
 610:    */
 611:   boolean isAfterLast() throws SQLException;
 612: 
 613:   /**
 614:    * This method tests whether or not the cursor is positioned on the first
 615:    * row in the result set.
 616:    *
 617:    * @return <code>true</code> if the cursor is positioned on the first
 618:    *         row, <code>false</code> otherwise.
 619:    * @exception SQLException If an error occurs.
 620:    */
 621:   boolean isFirst() throws SQLException;
 622: 
 623:   /**
 624:    * This method tests whether or not the cursor is on the last row
 625:    * in the result set.
 626:    *
 627:    * @return <code>true</code> if the cursor is positioned on the last
 628:    *         row, <code>false</code> otherwise.
 629:    * @exception SQLException If an error occurs.
 630:    */
 631:   boolean isLast() throws SQLException;
 632: 
 633:   /**
 634:    * This method repositions the cursor to before the first row in the
 635:    * result set.
 636:    *
 637:    * @exception SQLException If an error occurs.
 638:    */
 639:   void beforeFirst() throws SQLException;
 640: 
 641:   /**
 642:    * This method repositions the cursor to after the last row in the result
 643:    * set.
 644:    *
 645:    * @exception SQLException If an error occurs.
 646:    */
 647:   void afterLast() throws SQLException;
 648: 
 649:   /**
 650:    * This method repositions the cursor on the first row in the
 651:    * result set.
 652:    *
 653:    * @return <code>true</code> if the cursor is on a valid row;
 654:    *         <code>false</code> if there are no rows in the result set.
 655:    * @exception SQLException If an error occurs.
 656:    */
 657:   boolean first() throws SQLException;
 658: 
 659:   /**
 660:    * This method repositions the cursor on the last row in the result
 661:    * set.
 662:    *
 663:    * @return <code>true</code> if the cursor is on a valid row;
 664:    *         <code>false</code> if there are no rows in the result set.
 665:    * @exception SQLException If an error occurs.
 666:    */
 667:   boolean last() throws SQLException;
 668: 
 669:   /**
 670:    * This method returns the current row number in the cursor.  Numbering
 671:    * begins at index 1.
 672:    *
 673:    * @return The current row number, or 0 if there is not current row.
 674:    * @exception SQLException If an error occurs.
 675:    */
 676:   int getRow() throws SQLException;
 677: 
 678:   /**
 679:    * This method positions the result set to the specified absolute row.
 680:    * Positive numbers are row offsets from the beginning of the result
 681:    * set (numbering starts from row 1) and negative numbers are row offsets
 682:    * from the end of the result set (numbering starts from -1).
 683:    *
 684:    * @param row The row to position the result set to.
 685:    *
 686:    * @return <code>true</code> if the current position was changed,
 687:    *         <code>false</code> otherwise.
 688:    * @exception SQLException If an error occurs.
 689:    */
 690:   boolean absolute(int row) throws SQLException;
 691: 
 692:   /**
 693:    * This method moves the result set position relative to the current row.
 694:    * The offset can be positive or negative.
 695:    *
 696:    * @param rows The number of row positions to move.
 697:    * @return <code>true</code> if the current position was changed,
 698:    *         <code>false</code> otherwise.
 699:    * @exception SQLException If an error occurs.
 700:    */
 701:   boolean relative(int rows) throws SQLException;
 702: 
 703:   /**
 704:    * This method moves the current position to the previous row in the
 705:    * result set.
 706:    *
 707:    * @return <code>true</code> if the previous row exists, <code>false</code>
 708:    *         otherwise.
 709:    * @exception SQLException If an error occurs.
 710:    */
 711:   boolean previous() throws SQLException;
 712: 
 713:   /**
 714:    * This method provides a hint to the driver about which direction the
 715:    * result set will be processed in.
 716:    *
 717:    * @param direction The direction in which rows will be processed. The
 718:    *                  allowed values are the <code>FETCH_*</code> constants
 719:    *                  defined in this interface.
 720:    * @exception SQLException If an error occurs.
 721:    */
 722:   void setFetchDirection(int direction) throws SQLException;
 723: 
 724:   /**
 725:    * This method returns the current fetch direction for this result set.
 726:    *
 727:    * @return The fetch direction for this result set.
 728:    * @exception SQLException If an error occurs.
 729:    */
 730:   int getFetchDirection() throws SQLException;
 731: 
 732:   /**
 733:    * This method provides a hint to the driver about how many rows at a
 734:    * time it should fetch from the database.
 735:    *
 736:    * @param rows The number of rows the driver should fetch per call.
 737:    * @exception SQLException If an error occurs.
 738:    */
 739:   void setFetchSize(int rows) throws SQLException;
 740: 
 741:   /**
 742:    * This method returns the current number of rows that will be fetched
 743:    * from the database at a time.
 744:    *
 745:    * @return The current fetch size for this result set.
 746:    * @exception SQLException If an error occurs.
 747:    */
 748:   int getFetchSize() throws SQLException;
 749: 
 750:   /**
 751:    * This method returns the result set type of this result set.  This will
 752:    * be one of the <code>TYPE_*</code> constants defined in this interface.
 753:    *
 754:    * @return The result set type.
 755:    * @exception SQLException If an error occurs.
 756:    */
 757:   int getType() throws SQLException;
 758: 
 759:   /**
 760:    * This method returns the concurrency type of this result set.  This will
 761:    * be one of the <code>CONCUR_*</code> constants defined in this interface.
 762:    *
 763:    * @return The result set concurrency type.
 764:    * @exception SQLException If an error occurs.
 765:    */
 766:   int getConcurrency() throws SQLException;
 767: 
 768:   /**
 769:    * This method tests whether or not the current row in the result set
 770:    * has been updated.  Updates must be visible in order of this method to
 771:    * detect the update.
 772:    *
 773:    * @return <code>true</code> if the row has been updated, <code>false</code>
 774:    *         otherwise.
 775:    * @exception SQLException If an error occurs.
 776:    */
 777:   boolean rowUpdated() throws SQLException;
 778: 
 779:   /**
 780:    * This method tests whether or not the current row in the result set
 781:    * has been inserted.  Inserts must be visible in order of this method to
 782:    * detect the insert.
 783:    *
 784:    * @return <code>true</code> if the row has been inserted, <code>false</code>
 785:    *         otherwise.
 786:    * @exception SQLException If an error occurs.
 787:    */
 788:   boolean rowInserted() throws SQLException;
 789: 
 790:   /**
 791:    * This method tests whether or not the current row in the result set
 792:    * has been deleted.  Deletes must be visible in order of this method to
 793:    * detect the deletion.
 794:    *
 795:    * @return <code>true</code> if the row has been deleted, <code>false</code>
 796:    *         otherwise.
 797:    * @exception SQLException If an error occurs.
 798:    */
 799:   boolean rowDeleted() throws SQLException;
 800: 
 801:   /**
 802:    * This method updates the specified column to have a NULL value.  This
 803:    * does not update the actual database.  <code>updateRow</code> must be
 804:    * called in order to do that.
 805:    *
 806:    * @param columnIndex The index of the column to update.
 807:    * @exception SQLException If an error occurs.
 808:    */
 809:   void updateNull(int columnIndex) throws SQLException;
 810: 
 811:   /**
 812:    * This method updates the specified column to have a boolean value.  This
 813:    * does not update the actual database.  <code>updateRow</code> must be
 814:    * called in order to do that.
 815:    *
 816:    * @param columnIndex The index of the column to update.
 817:    * @param value The new value of the column.
 818:    * @exception SQLException If an error occurs.
 819:    */
 820:   void updateBoolean(int columnIndex, boolean value) throws SQLException;
 821: 
 822:   /**
 823:    * This method updates the specified column to have a byte value.  This
 824:    * does not update the actual database.  <code>updateRow</code> must be
 825:    * called in order to do that.
 826:    *
 827:    * @param columnIndex The index of the column to update.
 828:    * @param value The new value of the column.
 829:    * @exception SQLException If an error occurs.
 830:    */
 831:   void updateByte(int columnIndex, byte value) throws SQLException;
 832: 
 833:   /**
 834:    * This method updates the specified column to have a short value.  This
 835:    * does not update the actual database.  <code>updateRow</code> must be
 836:    * called in order to do that.
 837:    *
 838:    * @param columnIndex The index of the column to update.
 839:    * @param value The new value of the column.
 840:    * @exception SQLException If an error occurs.
 841:    */
 842:   void updateShort(int columnIndex, short value) throws SQLException;
 843: 
 844:   /**
 845:    * This method updates the specified column to have an int value.  This
 846:    * does not update the actual database.  <code>updateRow</code> must be
 847:    * called in order to do that.
 848:    *
 849:    * @param columnIndex The index of the column to update.
 850:    * @param value The new value of the column.
 851:    * @exception SQLException If an error occurs.
 852:    */
 853:   void updateInt(int columnIndex, int value) throws SQLException;
 854: 
 855:   /**
 856:    * This method updates the specified column to have a long value.  This
 857:    * does not update the actual database.  <code>updateRow</code> must be
 858:    * called in order to do that.
 859:    *
 860:    * @param columnIndex The index of the column to update.
 861:    * @param value The new value of the column.
 862:    * @exception SQLException If an error occurs.
 863:    */
 864:   void updateLong(int columnIndex, long value) throws SQLException;
 865: 
 866:   /**
 867:    * This method updates the specified column to have a float value.  This
 868:    * does not update the actual database.  <code>updateRow</code> must be
 869:    * called in order to do that.
 870:    *
 871:    * @param columnIndex The index of the column to update.
 872:    * @param value The new value of the column.
 873:    * @exception SQLException If an error occurs.
 874:    */
 875:   void updateFloat(int columnIndex, float value) throws SQLException;
 876: 
 877:   /**
 878:    * This method updates the specified column to have a double value.  This
 879:    * does not update the actual database.  <code>updateRow</code> must be
 880:    * called in order to do that.
 881:    *
 882:    * @param columnIndex The index of the column to update.
 883:    * @param value The new value of the column.
 884:    * @exception SQLException If an error occurs.
 885:    */
 886:   void updateDouble(int columnIndex, double value) throws SQLException;
 887: 
 888:   /**
 889:    * This method updates the specified column to have a BigDecimal value.  This
 890:    * does not update the actual database.  <code>updateRow</code> must be
 891:    * called in order to do that.
 892:    *
 893:    * @param columnIndex The index of the column to update.
 894:    * @param value The new value of the column.
 895:    * @exception SQLException If an error occurs.
 896:    */
 897:   void updateBigDecimal(int columnIndex, BigDecimal value)
 898:     throws SQLException;
 899: 
 900:   /**
 901:    * This method updates the specified column to have a String value.  This
 902:    * does not update the actual database.  <code>updateRow</code> must be
 903:    * called in order to do that.
 904:    *
 905:    * @param columnIndex The index of the column to update.
 906:    * @param value The new value of the column.
 907:    * @exception SQLException If an error occurs.
 908:    */
 909:   void updateString(int columnIndex, String value) throws SQLException;
 910: 
 911:   /**
 912:    * This method updates the specified column to have a byte array value.  This
 913:    * does not update the actual database.  <code>updateRow</code> must be
 914:    * called in order to do that.
 915:    *
 916:    * @param columnIndex The index of the column to update.
 917:    * @param value The new value of the column.
 918:    * @exception SQLException If an error occurs.
 919:    */
 920:   void updateBytes(int columnIndex, byte[] value) throws SQLException;
 921: 
 922:   /**
 923:    * This method updates the specified column to have a java.sql.Date value.  This
 924:    * does not update the actual database.  <code>updateRow</code> must be
 925:    * called in order to do that.
 926:    *
 927:    * @param columnIndex The index of the column to update.
 928:    * @param value The new value of the column.
 929:    * @exception SQLException If an error occurs.
 930:    */
 931:   void updateDate(int columnIndex, Date value) throws SQLException;
 932: 
 933:   /**
 934:    * This method updates the specified column to have a java.sql.Time value.  This
 935:    * does not update the actual database.  <code>updateRow</code> must be
 936:    * called in order to do that.
 937:    *
 938:    * @param columnIndex The index of the column to update.
 939:    * @param value The new value of the column.
 940:    * @exception SQLException If an error occurs.
 941:    */
 942:   void updateTime(int columnIndex, Time value) throws SQLException;
 943: 
 944:   /**
 945:    * This method updates the specified column to have a java.sql.Timestamp value.
 946:    * This does not update the actual database.  <code>updateRow</code> must be
 947:    * called in order to do that.
 948:    *
 949:    * @param columnIndex The index of the column to update.
 950:    * @param value The new value of the column.
 951:    * @exception SQLException If an error occurs.
 952:    */
 953:   void updateTimestamp(int columnIndex, Timestamp value)
 954:     throws SQLException;
 955: 
 956:   /**
 957:    * This method updates the specified column from an ASCII text stream.
 958:    * This does not update the actual database.  <code>updateRow</code> must be
 959:    * called in order to do that.
 960:    *
 961:    * @param columnIndex The index of the column to update.
 962:    * @param stream The stream from which the column value is updated.
 963:    * @param count The length of the stream.
 964:    * @exception SQLException If an error occurs.
 965:    */
 966:   void updateAsciiStream(int columnIndex, InputStream stream, int count)
 967:     throws SQLException;
 968: 
 969:   /**
 970:    * This method updates the specified column from a binary stream.
 971:    * This does not update the actual database.  <code>updateRow</code> must be
 972:    * called in order to do that.
 973:    *
 974:    * @param columnIndex The index of the column to update.
 975:    * @param stream The stream from which the column value is updated.
 976:    * @param count The length of the stream.
 977:    * @exception SQLException If an error occurs.
 978:    */
 979:   void updateBinaryStream(int columnIndex, InputStream stream, int count)
 980:     throws SQLException;
 981: 
 982:   /**
 983:    * This method updates the specified column from a character stream.
 984:    * This does not update the actual database.  <code>updateRow</code> must be
 985:    * called in order to do that.
 986:    *
 987:    * @param columnIndex The index of the column to update.
 988:    * @param reader The reader from which the column value is updated.
 989:    * @param count The length of the stream.
 990:    * @exception SQLException If an error occurs.
 991:    */
 992:   void updateCharacterStream(int columnIndex, Reader reader, int count)
 993:     throws SQLException;
 994: 
 995:   /**
 996:    * This method updates the specified column to have an Object value.
 997:    * This does not update the actual database.  <code>updateRow</code> must be
 998:    * called in order to do that.
 999:    *
1000:    * @param columnIndex The index of the column to update.
1001:    * @param value The new value of the column.
1002:    * @param scale The scale of the object in question, which is used only
1003:    *              for numeric type objects.
1004:    * @exception SQLException If an error occurs.
1005:    */
1006:   void updateObject(int columnIndex, Object value, int scale)
1007:     throws SQLException;
1008: 
1009:   /**
1010:    * This method updates the specified column to have an Object value.
1011:    * This does not update the actual database.  <code>updateRow</code> must be
1012:    * called in order to do that.
1013:    *
1014:    * @param columnIndex The index of the column to update.
1015:    * @param value The new value of the column.
1016:    * @exception SQLException If an error occurs.
1017:    */
1018:   void updateObject(int columnIndex, Object value) throws SQLException;
1019: 
1020:   /**
1021:    * This method updates the specified column to have a NULL value.  This
1022:    * does not update the actual database.  <code>updateRow</code> must be
1023:    * called in order to do that.
1024:    *
1025:    * @param columnName The name of the column to update.
1026:    * @exception SQLException If an error occurs.
1027:    */
1028:   void updateNull(String columnName) throws SQLException;
1029: 
1030:   /**
1031:    * This method updates the specified column to have a boolean value.  This
1032:    * does not update the actual database.  <code>updateRow</code> must be
1033:    * called in order to do that.
1034:    *
1035:    * @param columnName The name of the column to update.
1036:    * @param value The new value of the column.
1037:    * @exception SQLException If an error occurs.
1038:    */
1039:   void updateBoolean(String columnName, boolean value) throws SQLException;
1040: 
1041:   /**
1042:    * This method updates the specified column to have a byte value.  This
1043:    * does not update the actual database.  <code>updateRow</code> must be
1044:    * called in order to do that.
1045:    *
1046:    * @param columnName The name of the column to update.
1047:    * @param value The new value of the column.
1048:    * @exception SQLException If an error occurs.
1049:    */
1050:   void updateByte(String columnName, byte value) throws SQLException;
1051: 
1052:   /**
1053:    * This method updates the specified column to have a short value.  This
1054:    * does not update the actual database.  <code>updateRow</code> must be
1055:    * called in order to do that.
1056:    *
1057:    * @param columnName The name of the column to update.
1058:    * @param value The new value of the column.
1059:    * @exception SQLException If an error occurs.
1060:    */
1061:   void updateShort(String columnName, short value) throws SQLException;
1062: 
1063:   /**
1064:    * This method updates the specified column to have an int value.  This
1065:    * does not update the actual database.  <code>updateRow</code> must be
1066:    * called in order to do that.
1067:    *
1068:    * @param columnName The name of the column to update.
1069:    * @param value The new value of the column.
1070:    * @exception SQLException If an error occurs.
1071:    */
1072:   void updateInt(String columnName, int value) throws SQLException;
1073: 
1074:   /**
1075:    * This method updates the specified column to have a long value.  This
1076:    * does not update the actual database.  <code>updateRow</code> must be
1077:    * called in order to do that.
1078:    *
1079:    * @param columnName The name of the column to update.
1080:    * @param value The new value of the column.
1081:    * @exception SQLException If an error occurs.
1082:    */
1083:   void updateLong(String columnName, long value) throws SQLException;
1084: 
1085:   /**
1086:    * This method updates the specified column to have a float value.  This
1087:    * does not update the actual database.  <code>updateRow</code> must be
1088:    * called in order to do that.
1089:    *
1090:    * @param columnName The name of the column to update.
1091:    * @param value The new value of the column.
1092:    * @exception SQLException If an error occurs.
1093:    */
1094:   void updateFloat(String columnName, float value) throws SQLException;
1095: 
1096:   /**
1097:    * This method updates the specified column to have a double value.  This
1098:    * does not update the actual database.  <code>updateRow</code> must be
1099:    * called in order to do that.
1100:    *
1101:    * @param columnName The name of the column to update.
1102:    * @param value The new value of the column.
1103:    * @exception SQLException If an error occurs.
1104:    */
1105:   void updateDouble(String columnName, double value) throws SQLException;
1106: 
1107:   /**
1108:    * This method updates the specified column to have a BigDecimal value.  This
1109:    * does not update the actual database.  <code>updateRow</code> must be
1110:    * called in order to do that.
1111:    *
1112:    * @param columnName The name of the column to update.
1113:    * @param value The new value of the column.
1114:    * @exception SQLException If an error occurs.
1115:    */
1116:   void updateBigDecimal(String columnName, BigDecimal value)
1117:     throws SQLException;
1118: 
1119:   /**
1120:    * This method updates the specified column to have a String value.  This
1121:    * does not update the actual database.  <code>updateRow</code> must be
1122:    * called in order to do that.
1123:    *
1124:    * @param columnName The name of the column to update.
1125:    * @param value The new value of the column.
1126:    * @exception SQLException If an error occurs.
1127:    */
1128:   void updateString(String columnName, String value) throws SQLException;
1129: 
1130:   /**
1131:    * This method updates the specified column to have a byte array value.  This
1132:    * does not update the actual database.  <code>updateRow</code> must be
1133:    * called in order to do that.
1134:    *
1135:    * @param columnName The name of the column to update.
1136:    * @param value The new value of the column.
1137:    * @exception SQLException If an error occurs.
1138:    */
1139:   void updateBytes(String columnName, byte[] value) throws SQLException;
1140: 
1141:   /**
1142:    * This method updates the specified column to have a java.sql.Date value.  This
1143:    * does not update the actual database.  <code>updateRow</code> must be
1144:    * called in order to do that.
1145:    *
1146:    * @param columnName The name of the column to update.
1147:    * @param value The new value of the column.
1148:    * @exception SQLException If an error occurs.
1149:    */
1150:   void updateDate(String columnName, Date value) throws SQLException;
1151: 
1152:   /**
1153:    * This method updates the specified column to have a java.sql.Time value.  This
1154:    * does not update the actual database.  <code>updateRow</code> must be
1155:    * called in order to do that.
1156:    *
1157:    * @param columnName The name of the column to update.
1158:    * @param value The new value of the column.
1159:    * @exception SQLException If an error occurs.
1160:    */
1161:   void updateTime(String columnName, Time value) throws SQLException;
1162: 
1163:   /**
1164:    * This method updates the specified column to have a java.sql.Timestamp value.
1165:    * This does not update the actual database.  <code>updateRow</code> must be
1166:    * called in order to do that.
1167:    *
1168:    * @param columnName The name of the column to update.
1169:    * @param value The new value of the column.
1170:    * @exception SQLException If an error occurs.
1171:    */
1172:   void updateTimestamp(String columnName, Timestamp value)
1173:     throws SQLException;
1174: 
1175:   /**
1176:    * This method updates the specified column from an ASCII text stream.
1177:    * This does not update the actual database.  <code>updateRow</code> must be
1178:    * called in order to do that.
1179:    *
1180:    * @param columnName The name of the column to update.
1181:    * @param stream The stream from which the column value is updated.
1182:    * @param count The length of the stream.
1183:    * @exception SQLException If an error occurs.
1184:    */
1185:   void updateAsciiStream(String columnName, InputStream stream, int count)
1186:     throws SQLException;
1187: 
1188:   /**
1189:    * This method updates the specified column from a binary stream.
1190:    * This does not update the actual database.  <code>updateRow</code> must be
1191:    * called in order to do that.
1192:    *
1193:    * @param columnName The name of the column to update.
1194:    * @param stream The stream from which the column value is updated.
1195:    * @param count The length of the stream.
1196:    * @exception SQLException If an error occurs.
1197:    */
1198:   void updateBinaryStream(String columnName, InputStream stream, int count)
1199:     throws SQLException;
1200: 
1201:   /**
1202:    * This method updates the specified column from a character stream.
1203:    * This does not update the actual database.  <code>updateRow</code> must be
1204:    * called in order to do that.
1205:    *
1206:    * @param columnName The name of the column to update.
1207:    * @param reader The reader from which the column value is updated.
1208:    * @param count The length of the stream.
1209:    * @exception SQLException If an error occurs.
1210:    */
1211:   void updateCharacterStream(String columnName, Reader reader, int count)
1212:     throws SQLException;
1213: 
1214:   /**
1215:    * This method updates the specified column to have an Object value.
1216:    * This does not update the actual database.  <code>updateRow</code> must be
1217:    * called in order to do that.
1218:    *
1219:    * @param columnName The name of the column to update.
1220:    * @param value The new value of the column.
1221:    * @param scale The scale of the object in question, which is used only
1222:    *              for numeric type objects.
1223:    * @exception SQLException If an error occurs.
1224:    */
1225:   void updateObject(String columnName, Object value, int scale)
1226:     throws SQLException;
1227: 
1228:   /**
1229:    * This method updates the specified column to have an Object value.
1230:    * This does not update the actual database.  <code>updateRow</code> must be
1231:    * called in order to do that.
1232:    *
1233:    * @param columnName The name of the column to update.
1234:    * @param value The new value of the column.
1235:    * @exception SQLException If an error occurs.
1236:    */
1237:   void updateObject(String columnName, Object value) throws SQLException;
1238: 
1239:   /**
1240:    * This method inserts the current row into the database.  The result set
1241:    * must be positioned on the insert row in order to call this method
1242:    * successfully.
1243:    *
1244:    * @exception SQLException If an error occurs.
1245:    */
1246:   void insertRow() throws SQLException;
1247: 
1248:   /**
1249:    * This method updates the current row in the database.
1250:    *
1251:    * @exception SQLException If an error occurs.
1252:    */
1253:   void updateRow() throws SQLException;
1254: 
1255:   /**
1256:    * This method deletes the current row in the database.
1257:    *
1258:    * @exception SQLException If an error occurs.
1259:    */
1260:   void deleteRow() throws SQLException;
1261: 
1262:   /**
1263:    * This method refreshes the contents of the current row from the database.
1264:    *
1265:    * @exception SQLException If an error occurs.
1266:    */
1267:   void refreshRow() throws SQLException;
1268: 
1269:   /**
1270:    * This method cancels any changes that have been made to a row.  If
1271:    * the <code>rowUpdate</code> method has been called, then the changes
1272:    * cannot be undone.
1273:    *
1274:    * @exception SQLException If an error occurs.
1275:    */
1276:   void cancelRowUpdates() throws SQLException;
1277: 
1278:   /**
1279:    * This method positions the result set to the "insert row", which allows
1280:    * a new row to be inserted into the database from the result set.
1281:    *
1282:    * @exception SQLException If an error occurs.
1283:    */
1284:   void moveToInsertRow() throws SQLException;
1285: 
1286:   /**
1287:    * This method moves the result set position from the insert row back to
1288:    * the current row that was selected prior to moving to the insert row.
1289:    *
1290:    * @exception SQLException If an error occurs.
1291:    */
1292:   void moveToCurrentRow() throws SQLException;
1293: 
1294:   /**
1295:    * This method returns a the <code>Statement</code> that was used to
1296:    * produce this result set.
1297:    *
1298:    * @return The <code>Statement</code> used to produce this result set.
1299:    *
1300:    * @exception SQLException If an error occurs.
1301:    */
1302:   Statement getStatement() throws SQLException;
1303: 
1304:   /**
1305:    * This method returns the value of the specified column as a Java
1306:    * <code>Object</code> using the specified SQL type to Java type map.
1307:    *
1308:    * @param columnIndex The index of the column to return.
1309:    * @param map The SQL type to Java type map to use.
1310:    * @return The value of the column as an <code>Object</code>.
1311:    * @exception SQLException If an error occurs.
1312:    */
1313:   Object getObject(int columnIndex, Map<String, Class<?>> map)
1314:     throws SQLException;
1315: 
1316:   /**
1317:    * This method returns a <code>Ref</code> for the specified column which
1318:    * represents the structured type for the column.
1319:    *
1320:    * @param columnIndex The index of the column to return.
1321:    * @return A <code>Ref</code> object for the column
1322:    * @exception SQLException If an error occurs.
1323:    */
1324:   Ref getRef(int columnIndex) throws SQLException;
1325: 
1326:   /**
1327:    * This method returns the specified column value as a BLOB.
1328:    *
1329:    * @param columnIndex The index of the column value to return.
1330:    * @return The value of the column as a BLOB.
1331:    * @exception SQLException If an error occurs.
1332:    */
1333:   Blob getBlob(int columnIndex) throws SQLException;
1334: 
1335:   /**
1336:    * This method returns the specified column value as a CLOB.
1337:    *
1338:    * @param columnIndex The index of the column value to return.
1339:    * @return The value of the column as a CLOB.
1340:    * @exception SQLException If an error occurs.
1341:    */
1342:   Clob getClob(int columnIndex) throws SQLException;
1343: 
1344:   /**
1345:    * This method returns the specified column value as an <code>Array</code>.
1346:    *
1347:    * @param columnIndex The index of the column value to return.
1348:    * @return The value of the column as an <code>Array</code>.
1349:    * @exception SQLException If an error occurs.
1350:    */
1351:   Array getArray(int columnIndex) throws SQLException;
1352: 
1353:   /**
1354:    * This method returns the value of the specified column as a Java
1355:    * <code>Object</code> using the specified SQL type to Java type map.
1356:    *
1357:    * @param columnName The name of the column to return.
1358:    * @param map The SQL type to Java type map to use.
1359:    * @return The value of the column as an <code>Object</code>.
1360:    * @exception SQLException If an error occurs.
1361:    */
1362:   Object getObject(String columnName, Map<String, Class<?>> map)
1363:     throws SQLException;
1364: 
1365:   /**
1366:    * This method returns a <code>Ref</code> for the specified column which
1367:    * represents the structured type for the column.
1368:    *
1369:    * @param columnName  The name of the column to return.
1370:    * @return A <code>Ref</code> object for the column
1371:    * @exception SQLException If an error occurs.
1372:    */
1373:   Ref getRef(String columnName) throws SQLException;
1374: 
1375:   /**
1376:    * This method returns the specified column value as a BLOB.
1377:    *
1378:    * @param columnName The name of the column value to return.
1379:    * @return The value of the column as a BLOB.
1380:    * @exception SQLException If an error occurs.
1381:    */
1382:   Blob getBlob(String columnName) throws SQLException;
1383: 
1384:   /**
1385:    * This method returns the specified column value as a CLOB.
1386:    *
1387:    * @param columnName The name of the column value to return.
1388:    * @return The value of the column as a CLOB.
1389:    * @exception SQLException If an error occurs.
1390:    */
1391:   Clob getClob(String columnName) throws SQLException;
1392: 
1393:   /**
1394:    * This method returns the specified column value as an <code>Array</code>.
1395:    *
1396:    * @param columnName The name of the column value to return.
1397:    * @return The value of the column as an <code>Array</code>.
1398:    * @exception SQLException If an error occurs.
1399:    */
1400:   Array getArray(String columnName) throws SQLException;
1401: 
1402:   /**
1403:    * This method returns the specified column value as a
1404:    * <code>java.sql.Date</code>.  The specified <code>Calendar</code> is used
1405:    * to generate a value for the date if the database does not support
1406:    * timezones.
1407:    *
1408:    * @param columnIndex The index of the column value to return.
1409:    * @param cal The <code>Calendar</code> to use for calculating timezones.
1410:    * @return The value of the column as a <code>java.sql.Date</code>.
1411:    * @exception SQLException If an error occurs.
1412:    */
1413:   Date getDate(int columnIndex, Calendar cal) throws SQLException;
1414: 
1415:   /**
1416:    * This method returns the specified column value as a
1417:    * <code>java.sql.Date</code>.  The specified <code>Calendar</code> is used
1418:    * to generate a value for the date if the database does not support
1419:    * timezones.
1420:    *
1421:    * @param columnName The name of the column value to return.
1422:    * @param cal The <code>Calendar</code> to use for calculating timezones.
1423:    * @return The value of the column as a <code>java.sql.Date</code>.
1424:    * @exception SQLException If an error occurs.
1425:    */
1426:   Date getDate(String columnName, Calendar cal) throws SQLException;
1427: 
1428:   /**
1429:    * This method returns the specified column value as a
1430:    * <code>java.sql.Time</code>.  The specified <code>Calendar</code> is used
1431:    * to generate a value for the time if the database does not support
1432:    * timezones.
1433:    *
1434:    * @param columnIndex The index of the column value to return.
1435:    * @param cal The <code>Calendar</code> to use for calculating timezones.
1436:    * @return The value of the column as a <code>java.sql.Time</code>.
1437:    * @exception SQLException If an error occurs.
1438:    */
1439:   Time getTime(int columnIndex, Calendar cal) throws SQLException;
1440: 
1441:   /**
1442:    * This method returns the specified column value as a
1443:    * <code>java.sql.Time</code>.  The specified <code>Calendar</code> is used
1444:    * to generate a value for the time if the database does not support
1445:    * timezones.
1446:    *
1447:    * @param columnName The name of the column value to return.
1448:    * @param cal The <code>Calendar</code> to use for calculating timezones.
1449:    * @return The value of the column as a <code>java.sql.Time</code>.
1450:    * @exception SQLException If an error occurs.
1451:    */
1452:   Time getTime(String columnName, Calendar cal) throws SQLException;
1453: 
1454:   /**
1455:    * This method returns the specified column value as a
1456:    * <code>java.sql.Timestamp</code>.  The specified <code>Calendar</code> is used
1457:    * to generate a value for the timestamp if the database does not support
1458:    * timezones.
1459:    *
1460:    * @param columnIndex The index of the column value to return.
1461:    * @param cal The <code>Calendar</code> to use for calculating timezones.
1462:    * @return The value of the column as a <code>java.sql.Timestamp</code>.
1463:    * @exception SQLException If an error occurs.
1464:    */
1465:   Timestamp getTimestamp(int columnIndex, Calendar cal)
1466:     throws SQLException;
1467: 
1468:   /**
1469:    * This method returns the specified column value as a
1470:    * <code>java.sql.Timestamp</code>.  The specified <code>Calendar</code> is used
1471:    * to generate a value for the timestamp if the database does not support
1472:    * timezones.
1473:    *
1474:    * @param columnName The name of the column value to return.
1475:    * @param cal The <code>Calendar</code> to use for calculating timezones.
1476:    *
1477:    * @return The value of the column as a <code>java.sql.Timestamp</code>.
1478:    *
1479:    * @exception SQLException If an error occurs.
1480:    */
1481:   Timestamp getTimestamp(String columnName, Calendar cal)
1482:     throws SQLException;
1483: 
1484:   /**
1485:    * This method returns the specified column value as a
1486:    * <code>java.net.URL</code>.
1487:    *
1488:    * @param columnIndex The index of the column value to return.
1489:    * @exception SQLException If an error occurs.
1490:    * @since 1.4
1491:    */
1492:   URL getURL(int columnIndex) throws SQLException;
1493: 
1494:   /**
1495:    * This method returns the specified column value as a
1496:    * <code>java.net.URL</code>.
1497:    *
1498:    * @param columnName The name of the column value to return.
1499:    * @exception SQLException If an error occurs.
1500:    * @since 1.4
1501:    */
1502:   URL getURL(String columnName) throws SQLException;
1503: 
1504:   /**
1505:    * This method updates the specified column to have a
1506:    * <code>java.sql.Ref</code> value.
1507:    * This does not update the actual database. <code>updateRow</code> must be
1508:    * called in order to do that.
1509:    *
1510:    * @parm columnIndex The index of the column value to update.
1511:    * @parm value The <code>java.sql.Ref</code> used to set the new value
1512:    *             of the column.
1513:    * @exception SQLException If an error occurs.
1514:    * @since 1.4
1515:    */
1516:   void updateRef(int columnIndex, Ref value) throws SQLException;
1517: 
1518:   /**
1519:    * This method updates the specified column to have a
1520:    * <code>java.sql.Ref</code> value.
1521:    * This does not update the actual database. <code>updateRow</code> must be
1522:    * called in order to do that.
1523:    *
1524:    * @parm columnName The name of the column value to update.
1525:    * @parm value The <code>java.sql.Ref</code> used to set the new value
1526:    *             of the column.
1527:    * @exception SQLException If an error occurs.
1528:    * @since 1.4
1529:    */
1530:   void updateRef(String columnName, Ref value) throws SQLException;
1531: 
1532:   /**
1533:    * This method updates the specified column to have a
1534:    * <code>java.sql.Blob</code> value.
1535:    * This does not update the actual database. <code>updateRow</code> must be
1536:    * called in order to do that.
1537:    *
1538:    * @parm columnIndex The index of the column value to update.
1539:    * @parm value The <code>java.sql.Blob</code> used to set the new value
1540:    *             of the column.
1541:    * @exception SQLException If an error occurs.
1542:    * @since 1.4
1543:    */
1544:   void updateBlob(int columnIndex, Blob value) throws SQLException;
1545: 
1546:   /**
1547:    * This method updates the specified column to have a
1548:    * <code>java.sql.Blob</code> value.
1549:    * This does not update the actual database. <code>updateRow</code> must be
1550:    * called in order to do that.
1551:    *
1552:    * @parm columnName The name of the column value to update.
1553:    * @parm value The <code>java.sql.Blob</code> used to set the new value
1554:    *             of the column.
1555:    * @exception SQLException If an error occurs.
1556:    * @since 1.4
1557:    */
1558:   void updateBlob(String columnName, Blob value) throws SQLException;
1559: 
1560:   /**
1561:    * This method updates the specified column to have a
1562:    * <code>java.sql.Clob</code> value.
1563:    * This does not update the actual database. <code>updateRow</code> must be
1564:    * called in order to do that.
1565:    *
1566:    * @parm columnIndex The index of the column value to update.
1567:    * @parm value The <code>java.sql.Clob</code> used to set the new value
1568:    *             of the column.
1569:    * @exception SQLException If an error occurs.
1570:    * @since 1.4
1571:    */
1572:   void updateClob(int columnIndex, Clob value) throws SQLException;
1573: 
1574:   /**
1575:    * This method updates the specified column to have a
1576:    * <code>java.sql.Clob</code> value.
1577:    * This does not update the actual database. <code>updateRow</code> must be
1578:    * called in order to do that.
1579:    *
1580:    * @parm columnName The name of the column value to update.
1581:    * @parm value The <code>java.sql.Clob</code> used to set the new value
1582:    *             of the column.
1583:    * @exception SQLException If an error occurs.
1584:    * @since 1.4
1585:    */
1586:   void updateClob(String columnName, Clob value) throws SQLException;
1587: 
1588:   /**
1589:    * This method updates the specified column to have a
1590:    * <code>java.sqlArray</code> value.
1591:    * This does not update the actual database. <code>updateRow</code> must be
1592:    * called in order to do that.
1593:    *
1594:    * @parm columnIndex The index of the column value to update.
1595:    * @parm value The new value of the column.
1596:    * @exception SQLException If an error occurs.
1597:    * @since 1.4
1598:    */
1599:   void updateArray(int columnIndex, Array value) throws SQLException;
1600: 
1601:   /**
1602:    * This method updates the specified column to have a
1603:    * <code>java.sqlArray</code> value.
1604:    * This does not update the actual database. <code>updateRow</code> must be
1605:    * called in order to do that.
1606:    *
1607:    * @parm columnName The name of the column value to update.
1608:    * @parm value The new value of the column.
1609:    * @exception SQLException If an error occurs.
1610:    * @since 1.4
1611:    */
1612:   void updateArray(String columnName, Array value) throws SQLException;
1613: }