home *** CD-ROM | disk | FTP | other *** search
/ Apple Developer Connection Student Program / ADC Tools Sampler CD Disk 3 1999.iso / Metrowerks CodeWarrior / Java Support / Java_Source / Java2 / src / java / sql / ResultSet.java < prev    next >
Encoding:
Java Source  |  1999-05-28  |  76.4 KB  |  2,004 lines  |  [TEXT/CWIE]

  1. /*
  2.  * @(#)ResultSet.java    1.17 98/09/22
  3.  * 
  4.  * Copyright 1996-1998 by Sun Microsystems, Inc.,
  5.  * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
  6.  * All rights reserved.
  7.  *
  8.  * This software is the confidential and proprietary information
  9.  * of Sun Microsystems, Inc. ("Confidential Information").  You
  10.  * shall not disclose such Confidential Information and shall use
  11.  * it only in accordance with the terms of the license agreement
  12.  * you entered into with Sun.
  13.  */
  14.  
  15. package java.sql;
  16.  
  17. import java.math.BigDecimal;
  18. import java.util.Calendar;
  19.  
  20. /**
  21.  * <P>A ResultSet provides access to a table of data.  A ResultSet
  22.  * object is usually generated by executing a Statement. 
  23.  * 
  24.  * <P>A ResultSet maintains a cursor pointing to its current row of
  25.  * data.  Initially the cursor is positioned before the first row.
  26.  * The 'next' method moves the cursor to the next row.
  27.  *
  28.  * <P>The getXXX methods retrieve column values for the current
  29.  * row.  You can retrieve values using either the index number of the
  30.  * column or the name of the column.  In general, using the 
  31.  * column index will be more efficient.  Columns are numbered from 1.
  32.  *
  33.  * <P>For maximum portability, ResultSet columns within each row should be
  34.  * read in left-to-right order and each column should be read only once.
  35.  *
  36.  * <P>For the getXXX methods, the JDBC driver attempts to convert the
  37.  * underlying data to the specified Java type and returns a suitable
  38.  * Java value.  See the JDBC specification for allowable mappings
  39.  * from SQL types to Java types with the ResultSet.getXXX methods.
  40.  *
  41.  * <P>Column names used as input to getXXX methods are case
  42.  * insensitive.  When performing a getXXX using a column name, if
  43.  * several columns have the same name, then the value of the first
  44.  * matching column will be returned. The column name option is
  45.  * designed to be used when column names are used in the SQL
  46.  * query. For columns that are NOT explicitly named in the query, it
  47.  * is best to use column numbers. If column names are used, there is
  48.  * no way for the programmer to guarantee that they actually refer to
  49.  * the intended columns.
  50.  *
  51.  * <P>A ResultSet is automatically closed by the Statement that
  52.  * generated it when that Statement is closed, re-executed, or used
  53.  * to retrieve the next result from a sequence of multiple results.
  54.  * 
  55.  * <P>The number, types and properties of a ResultSet's columns are
  56.  * provided by the ResulSetMetaData object returned by the getMetaData
  57.  * method.
  58.  *
  59.  * @see Statement#executeQuery 
  60.  * @see Statement#getResultSet 
  61.  * @see ResultSetMetaData 
  62.  */
  63.  
  64. public interface ResultSet {
  65.  
  66.     /**
  67.      * Moves the cursor down one row from its current position.
  68.      * A ResultSet cursor is initially positioned before the first row; the
  69.      * first call to next makes the first row the current row; the
  70.      * second call makes the second row the current row, and so on. 
  71.      *
  72.      * <P>If an input stream is open for the current row, a call
  73.      * to the method <code>next</code> will
  74.      * implicitly close it. The ResultSet's warning chain is cleared
  75.      * when a new row is read.
  76.      *
  77.      * @return true if the new current row is valid; false if there
  78.      * are no more rows 
  79.      * @exception SQLException if a database access error occurs
  80.      */
  81.     boolean next() throws SQLException;
  82.  
  83.  
  84.     /**
  85.      * Releases this <code>ResultSet</code> object's database and
  86.      * JDBC resources immediately instead of waiting for
  87.      * this to happen when it is automatically closed.
  88.      *
  89.      * <P><B>Note:</B> A ResultSet is automatically closed by the
  90.      * Statement that generated it when that Statement is closed,
  91.      * re-executed, or is used to retrieve the next result from a
  92.      * sequence of multiple results. A ResultSet is also automatically
  93.      * closed when it is garbage collected.  
  94.      *
  95.      * @exception SQLException if a database access error occurs
  96.      */
  97.     void close() throws SQLException;
  98.  
  99.     /**
  100.      * Reports whether
  101.      * the last column read had a value of SQL NULL.
  102.      * Note that you must first call getXXX on a column to try to read
  103.      * its value and then call wasNull() to see if the value read was
  104.      * SQL NULL.
  105.      *
  106.      * @return true if last column read was SQL NULL and false otherwise
  107.      * @exception SQLException if a database access error occurs
  108.      */
  109.     boolean wasNull() throws SQLException;
  110.     
  111.     //======================================================================
  112.     // Methods for accessing results by column index
  113.     //======================================================================
  114.  
  115.     /**
  116.      * Gets the value of a column in the current row as a Java String.
  117.      *
  118.      * @param columnIndex the first column is 1, the second is 2, ...
  119.      * @return the column value; if the value is SQL NULL, the result is null
  120.      * @exception SQLException if a database access error occurs
  121.      */
  122.     String getString(int columnIndex) throws SQLException;
  123.  
  124.     /**
  125.      * Gets the value of a column in the current row as a Java boolean.
  126.      *
  127.      * @param columnIndex the first column is 1, the second is 2, ...
  128.      * @return the column value; if the value is SQL NULL, the result is false
  129.      * @exception SQLException if a database access error occurs
  130.      */
  131.     boolean getBoolean(int columnIndex) throws SQLException;
  132.  
  133.     /**
  134.      * Gets the value of a column in the current row as a Java byte.
  135.      *
  136.      * @param columnIndex the first column is 1, the second is 2, ...
  137.      * @return the column value; if the value is SQL NULL, the result is 0
  138.      * @exception SQLException if a database access error occurs
  139.      */
  140.     byte getByte(int columnIndex) throws SQLException;
  141.  
  142.     /**
  143.      * Gets the value of a column in the current row as a Java short.
  144.      *
  145.      * @param columnIndex the first column is 1, the second is 2, ...
  146.      * @return the column value; if the value is SQL NULL, the result is 0
  147.      * @exception SQLException if a database access error occurs
  148.      */
  149.     short getShort(int columnIndex) throws SQLException;
  150.  
  151.     /**
  152.      * Gets the value of a column in the current row as a Java int.
  153.      *
  154.      * @param columnIndex the first column is 1, the second is 2, ...
  155.      * @return the column value; if the value is SQL NULL, the result is 0
  156.      * @exception SQLException if a database access error occurs
  157.      */
  158.     int getInt(int columnIndex) throws SQLException;
  159.  
  160.     /**
  161.      * Gets the value of a column in the current row as a Java long.
  162.      *
  163.      * @param columnIndex the first column is 1, the second is 2, ...
  164.      * @return the column value; if the value is SQL NULL, the result is 0
  165.      * @exception SQLException if a database access error occurs
  166.      */
  167.     long getLong(int columnIndex) throws SQLException;
  168.  
  169.     /**
  170.      * Gets the value of a column in the current row as a Java float.
  171.      *
  172.      * @param columnIndex the first column is 1, the second is 2, ...
  173.      * @return the column value; if the value is SQL NULL, the result is 0
  174.      * @exception SQLException if a database access error occurs
  175.      */
  176.     float getFloat(int columnIndex) throws SQLException;
  177.  
  178.     /**
  179.      * Gets the value of a column in the current row as a Java double.
  180.      *
  181.      * @param columnIndex the first column is 1, the second is 2, ...
  182.      * @return the column value; if the value is SQL NULL, the result is 0
  183.      * @exception SQLException if a database access error occurs
  184.      */
  185.     double getDouble(int columnIndex) throws SQLException;
  186.  
  187.     /**
  188.      * Gets the value of a column in the current row as a java.math.BigDecimal object.
  189.      *
  190.      * @param columnIndex the first column is 1, the second is 2, ...
  191.      * @param scale the number of digits to the right of the decimal
  192.      * @return the column value; if the value is SQL NULL, the result is null
  193.      * @exception SQLException if a database access error occurs
  194.      * @deprecated
  195.      */
  196.     BigDecimal getBigDecimal(int columnIndex, int scale) throws SQLException;
  197.  
  198.     /**
  199.      * Gets the value of a column in the current row as a Java byte array.
  200.      * The bytes represent the raw values returned by the driver.
  201.      *
  202.      * @param columnIndex the first column is 1, the second is 2, ...
  203.      * @return the column value; if the value is SQL NULL, the result is null
  204.      * @exception SQLException if a database access error occurs
  205.      */
  206.     byte[] getBytes(int columnIndex) throws SQLException;
  207.  
  208.     /**
  209.      * Gets the value of a column in the current row as a java.sql.Date object.
  210.      *
  211.      * @param columnIndex the first column is 1, the second is 2, ...
  212.      * @return the column value; if the value is SQL NULL, the result is null
  213.      * @exception SQLException if a database access error occurs
  214.      */
  215.     java.sql.Date getDate(int columnIndex) throws SQLException;
  216.  
  217.     /**
  218.      * Gets the value of a column in the current row as a java.sql.Time object.
  219.      *
  220.      * @param columnIndex the first column is 1, the second is 2, ...
  221.      * @return the column value; if the value is SQL NULL, the result is null
  222.      * @exception SQLException if a database access error occurs
  223.      */
  224.     java.sql.Time getTime(int columnIndex) throws SQLException;
  225.  
  226.     /**
  227.      * Gets the value of a column in the current row as a java.sql.Timestamp object.
  228.      *
  229.      * @param columnIndex the first column is 1, the second is 2, ...
  230.      * @return the column value; if the value is SQL NULL, the result is null
  231.      * @exception SQLException if a database access error occurs
  232.      */
  233.     java.sql.Timestamp getTimestamp(int columnIndex) throws SQLException;
  234.  
  235.     /**
  236.      * Gets the value of a column in the current row as a stream of
  237.      * ASCII characters. The value can then be read in chunks from the
  238.      * stream. This method is particularly
  239.      * suitable for retrieving large LONGVARCHAR values.  The JDBC driver will
  240.      * do any necessary conversion from the database format into ASCII.
  241.      *
  242.      * <P><B>Note:</B> All the data in the returned stream must be
  243.      * read prior to getting the value of any other column. The next
  244.      * call to a get method implicitly closes the stream.  Also, a
  245.      * stream may return 0 when the method <code>available</code>
  246.      * is called whether there is data
  247.      * available or not.
  248.      *
  249.      * @param columnIndex the first column is 1, the second is 2, ...
  250.      * @return a Java input stream that delivers the database column value
  251.      * as a stream of one byte ASCII characters.  If the value is SQL NULL
  252.      * then the result is null.  
  253.      * @exception SQLException if a database access error occurs
  254.      */
  255.     java.io.InputStream getAsciiStream(int columnIndex) throws SQLException;
  256.  
  257.     /**
  258.      * Gets the value of a column in the current row as a stream of
  259.      * Unicode characters. The value can then be read in chunks from the
  260.      * stream. This method is particularly
  261.      * suitable for retrieving large LONGVARCHAR values.  The JDBC driver will
  262.      * do any necessary conversion from the database format into Unicode.
  263.      * The byte format of the Unicode stream must Java UTF-8,
  264.      * as specified in the Java Virtual Machine Specification.
  265.      *
  266.      * <P><B>Note:</B> All the data in the returned stream must be
  267.      * read prior to getting the value of any other column. The next
  268.      * call to a get method implicitly closes the stream. Also, a
  269.      * stream may return 0 when the method <code>available</code>
  270.      * is called whether there is data
  271.      * available or not.
  272.      *
  273.      * @param columnIndex the first column is 1, the second is 2, ...
  274.      * @return a Java input stream that delivers the database column value
  275.      * as a stream of two-byte Unicode characters.  If the value is SQL NULL
  276.      * then the result is null.  
  277.      * @exception SQLException if a database access error occurs
  278.      * @deprecated
  279.      */
  280.     java.io.InputStream getUnicodeStream(int columnIndex) throws SQLException;
  281.  
  282.     /**
  283.      * Gets the value of a column in the current row as a stream of
  284.      * uninterpreted bytes. The value can then be read in chunks from the
  285.      * stream. This method is particularly
  286.      * suitable for retrieving large LONGVARBINARY values.
  287.      *
  288.      * <P><B>Note:</B> All the data in the returned stream must be
  289.      * read prior to getting the value of any other column. The next
  290.      * call to a get method implicitly closes the stream. Also, a
  291.      * stream may return 0 when the method <code>available</code>
  292.      * is called whether there is data
  293.      * available or not.
  294.      *
  295.      * @param columnIndex the first column is 1, the second is 2, ...
  296.      * @return a Java input stream that delivers the database column value
  297.      * as a stream of uninterpreted bytes.  If the value is SQL NULL
  298.      * then the result is null.  
  299.      * @exception SQLException if a database access error occurs
  300.      */
  301.     java.io.InputStream getBinaryStream(int columnIndex)
  302.         throws SQLException;
  303.  
  304.  
  305.     //======================================================================
  306.     // Methods for accessing results by column name
  307.     //======================================================================
  308.  
  309.     /**
  310.      * Gets the value of a column in the current row as a Java String.
  311.      *
  312.      * @param columnName the SQL name of the column
  313.      * @return the column value; if the value is SQL NULL, the result is null
  314.      * @exception SQLException if a database access error occurs
  315.      */
  316.     String getString(String columnName) throws SQLException;
  317.  
  318.     /**
  319.      * Gets the value of a column in the current row as a Java boolean.
  320.      *
  321.      * @param columnName the SQL name of the column
  322.      * @return the column value; if the value is SQL NULL, the result is false
  323.      * @exception SQLException if a database access error occurs
  324.      */
  325.     boolean getBoolean(String columnName) throws SQLException;
  326.  
  327.     /**
  328.      * Gets the value of a column in the current row as a Java byte.
  329.      *
  330.      * @param columnName the SQL name of the column
  331.      * @return the column value; if the value is SQL NULL, the result is 0
  332.      * @exception SQLException if a database access error occurs
  333.      */
  334.     byte getByte(String columnName) throws SQLException;
  335.  
  336.     /**
  337.      * Gets the value of a column in the current row as a Java short.
  338.      *
  339.      * @param columnName the SQL name of the column
  340.      * @return the column value; if the value is SQL NULL, the result is 0
  341.      * @exception SQLException if a database access error occurs
  342.      */
  343.     short getShort(String columnName) throws SQLException;
  344.  
  345.     /**
  346.      * Gets the value of a column in the current row as a Java int.
  347.      *
  348.      * @param columnName the SQL name of the column
  349.      * @return the column value; if the value is SQL NULL, the result is 0
  350.      * @exception SQLException if a database access error occurs
  351.      */
  352.     int getInt(String columnName) throws SQLException;
  353.  
  354.     /**
  355.      * Gets the value of a column in the current row as a Java long.
  356.      *
  357.      * @param columnName the SQL name of the column
  358.      * @return the column value; if the value is SQL NULL, the result is 0
  359.      * @exception SQLException if a database access error occurs
  360.      */
  361.     long getLong(String columnName) throws SQLException;
  362.  
  363.     /**
  364.      * Gets the value of a column in the current row as a Java float.
  365.      *
  366.      * @param columnName the SQL name of the column
  367.      * @return the column value; if the value is SQL NULL, the result is 0
  368.      * @exception SQLException if a database access error occurs
  369.      */
  370.     float getFloat(String columnName) throws SQLException;
  371.  
  372.     /**
  373.      * Gets the value of a column in the current row as a Java double.
  374.      *
  375.      * @param columnName the SQL name of the column
  376.      * @return the column value; if the value is SQL NULL, the result is 0
  377.      * @exception SQLException if a database access error occurs
  378.      */
  379.     double getDouble(String columnName) throws SQLException;
  380.  
  381.     /**
  382.      * Gets the value of a column in the current row as a java.math.BigDecimal 
  383.      * object.
  384.      *
  385.      * @param columnName the SQL name of the column
  386.      * @param scale the number of digits to the right of the decimal
  387.      * @return the column value; if the value is SQL NULL, the result is null
  388.      * @exception SQLException if a database access error occurs
  389.      * @deprecated
  390.      */
  391.     BigDecimal getBigDecimal(String columnName, int scale) throws SQLException;
  392.  
  393.     /**
  394.      * Gets the value of a column in the current row as a Java byte array.
  395.      * The bytes represent the raw values returned by the driver.
  396.      *
  397.      * @param columnName the SQL name of the column
  398.      * @return the column value; if the value is SQL NULL, the result is null
  399.      * @exception SQLException if a database access error occurs
  400.      */
  401.     byte[] getBytes(String columnName) throws SQLException;
  402.  
  403.     /**
  404.      * Gets the value of a column in the current row as a java.sql.Date object.
  405.      *
  406.      * @param columnName the SQL name of the column
  407.      * @return the column value; if the value is SQL NULL, the result is null
  408.      * @exception SQLException if a database access error occurs
  409.      */
  410.     java.sql.Date getDate(String columnName) throws SQLException;
  411.  
  412.     /**
  413.      * Gets the value of a column in the current row as a java.sql.Time object.
  414.      *
  415.      * @param columnName the SQL name of the column
  416.      * @return the column value; if the value is SQL NULL, the result is null
  417.      * @exception SQLException if a database access error occurs
  418.      */
  419.     java.sql.Time getTime(String columnName) throws SQLException;
  420.  
  421.     /**
  422.      * Gets the value of a column in the current row as a java.sql.Timestamp object.
  423.      *
  424.      * @param columnName the SQL name of the column
  425.      * @return the column value; if the value is SQL NULL, the result is null
  426.      * @exception SQLException if a database access error occurs
  427.      */
  428.     java.sql.Timestamp getTimestamp(String columnName) throws SQLException;
  429.  
  430.     /**
  431.      * Gets the value of a column in the current row as a stream of
  432.      * ASCII characters. The value can then be read in chunks from the
  433.      * stream. This method is particularly
  434.      * suitable for retrieving large LONGVARCHAR values.  The JDBC driver will
  435.      * do any necessary conversion from the database format into ASCII.
  436.      *
  437.      * <P><B>Note:</B> All the data in the returned stream must be
  438.      * read prior to getting the value of any other column. The next
  439.      * call to a get method implicitly closes the stream. Also, a
  440.      * stream may return 0 when the method <code>available</code>
  441.      * is called whether there is data
  442.      * available or not.
  443.      *
  444.      * @param columnName the SQL name of the column
  445.      * @return a Java input stream that delivers the database column value
  446.      * as a stream of one byte ASCII characters.  If the value is SQL NULL
  447.      * then the result is null.
  448.      * @exception SQLException if a database access error occurs
  449.      */
  450.     java.io.InputStream getAsciiStream(String columnName) throws SQLException;
  451.  
  452.     /**
  453.      * Gets the value of a column in the current row as a stream of
  454.      * Unicode characters. The value can then be read in chunks from the
  455.      * stream. This method is particularly
  456.      * suitable for retrieving large LONGVARCHAR values.  The JDBC driver will
  457.      * do any necessary conversion from the database format into Unicode.
  458.      * The byte format of the Unicode stream must be Java UTF-8,
  459.      * as defined in the Java Virtual Machine Specification.
  460.      *
  461.      * <P><B>Note:</B> All the data in the returned stream must be
  462.      * read prior to getting the value of any other column. The next
  463.      * call to a get method implicitly closes the stream. Also, a
  464.      * stream may return 0 when the method <code>available</code>
  465.      * is called whether there is data
  466.      * available or not.
  467.      *
  468.      * @param columnName the SQL name of the column
  469.      * @return a Java input stream that delivers the database column value
  470.      * as a stream of two-byte Unicode characters.  If the value is SQL NULL
  471.      * then the result is null.
  472.      * @exception SQLException if a database access error occurs
  473.      * @deprecated
  474.      */
  475.     java.io.InputStream getUnicodeStream(String columnName) throws SQLException;
  476.  
  477.     /**
  478.      * Gets the value of a column in the current row as a stream of
  479.      * uninterpreted bytes. The value can then be read in chunks from the
  480.      * stream. This method is particularly
  481.      * suitable for retrieving large LONGVARBINARY values.  The JDBC driver will
  482.      * do any necessary conversion from the database format into uninterpreted
  483.      * bytes.
  484.      *
  485.      * <P><B>Note:</B> All the data in the returned stream must be
  486.      * read prior to getting the value of any other column. The next
  487.      * call to a get method implicitly closes the stream. Also, a
  488.      * stream may return 0 when the method <code>available</code>
  489.      * is called whether there is data
  490.      * available or not.
  491.      *
  492.      * @param columnName the SQL name of the column
  493.      * @return a Java input stream that delivers the database column value
  494.      * as a stream of uninterpreted bytes.  If the value is SQL NULL
  495.      * then the result is null.
  496.      * @exception SQLException if a database access error occurs
  497.      */
  498.     java.io.InputStream getBinaryStream(String columnName)
  499.         throws SQLException;
  500.  
  501.  
  502.     //=====================================================================
  503.     // Advanced features:
  504.     //=====================================================================
  505.  
  506.     /**
  507.      * <p>The first warning reported by calls on this ResultSet is
  508.      * returned. Subsequent ResultSet warnings will be chained to this
  509.      * SQLWarning.
  510.      *
  511.      * <P>The warning chain is automatically cleared each time a new
  512.      * row is read.
  513.      *
  514.      * <P><B>Note:</B> This warning chain only covers warnings caused
  515.      * by ResultSet methods.  Any warning caused by statement methods
  516.      * (such as reading OUT parameters) will be chained on the
  517.      * Statement object. 
  518.      *
  519.      * @return the first SQLWarning or null 
  520.      * @exception SQLException if a database access error occurs
  521.      */
  522.     SQLWarning getWarnings() throws SQLException;
  523.  
  524.     /**
  525.      * After this call getWarnings returns null until a new warning is
  526.      * reported for this ResultSet.  
  527.      *
  528.      * @exception SQLException if a database access error occurs
  529.      */
  530.     void clearWarnings() throws SQLException;
  531.  
  532.     /**
  533.      * Gets the name of the SQL cursor used by this ResultSet.
  534.      *
  535.      * <P>In SQL, a result table is retrieved through a cursor that is
  536.      * named. The current row of a result can be updated or deleted
  537.      * using a positioned update/delete statement that references the
  538.      * cursor name. To insure that the cursor has the proper isolation
  539.      * level to support update, the cursor's select statement should be 
  540.      * of the form 'select for update'. If the 'for update' clause is 
  541.      * omitted the positioned updates may fail.
  542.      * 
  543.      * <P>JDBC supports this SQL feature by providing the name of the
  544.      * SQL cursor used by a ResultSet. The current row of a ResultSet
  545.      * is also the current row of this SQL cursor.
  546.      *
  547.      * <P><B>Note:</B> If positioned update is not supported a
  548.      * SQLException is thrown
  549.      *
  550.      * @return the ResultSet's SQL cursor name
  551.      * @exception SQLException if a database access error occurs
  552.      */
  553.     String getCursorName() throws SQLException;
  554.  
  555.     /**
  556.      * Retrieves the  number, types and properties of a ResultSet's columns.
  557.      *
  558.      * @return the description of a ResultSet's columns
  559.      * @exception SQLException if a database access error occurs
  560.      */
  561.     ResultSetMetaData getMetaData() throws SQLException;
  562.  
  563.     /**
  564.      * <p>Gets the value of a column in the current row as a Java object.
  565.      *
  566.      * <p>This method will return the value of the given column as a
  567.      * Java object.  The type of the Java object will be the default
  568.      * Java object type corresponding to the column's SQL type,
  569.      * following the mapping for built-in types specified in the JDBC 
  570.      * spec.
  571.      *
  572.      * <p>This method may also be used to read datatabase-specific
  573.      * abstract data types.
  574.      *
  575.      * JDBC 2.0
  576.      *
  577.      * 
  578.      * In the JDBC 2.0 API, the behavior of method
  579.      * <code>getObject</code> is extended to materialize  
  580.      * data of SQL user-defined types.  When the a column contains
  581.      * a structured or distinct value, the behavior of this method is as 
  582.      * if it were a call to: getObject(columnIndex, 
  583.      * this.getStatement().getConnection().getTypeMap()).
  584.      *
  585.      * @param columnIndex the first column is 1, the second is 2, ...
  586.      * @return a java.lang.Object holding the column value  
  587.      * @exception SQLException if a database access error occurs
  588.      */
  589.     Object getObject(int columnIndex) throws SQLException;
  590.  
  591.     /**
  592.      * <p>Gets the value of a column in the current row as a Java object.
  593.      *
  594.      * <p>This method will return the value of the given column as a
  595.      * Java object.  The type of the Java object will be the default
  596.      * Java object type corresponding to the column's SQL type,
  597.      * following the mapping for built-in types specified in the JDBC 
  598.      * spec.
  599.      *
  600.      * <p>This method may also be used to read datatabase-specific
  601.      * abstract data types.
  602.      *
  603.      * JDBC 2.0
  604.      *
  605.      * In the JDBC 2.0 API, the behavior of method
  606.      * <code>getObject</code> is extended to materialize  
  607.      * data of SQL user-defined types.  When the a column contains
  608.      * a structured or distinct value, the behavior of this method is as 
  609.      * if it were a call to: getObject(columnIndex, 
  610.      * this.getStatement().getConnection().getTypeMap()).
  611.      *
  612.      * @param columnName the SQL name of the column
  613.      * @return a java.lang.Object holding the column value.  
  614.      * @exception SQLException if a database access error occurs
  615.      */
  616.     Object getObject(String columnName) throws SQLException;
  617.  
  618.     //----------------------------------------------------------------
  619.  
  620.     /**
  621.      * Maps the given Resultset column name to its ResultSet column index.
  622.      *
  623.      * @param columnName the name of the column
  624.      * @return the column index
  625.      * @exception SQLException if a database access error occurs
  626.      */
  627.     int findColumn(String columnName) throws SQLException;
  628.  
  629.  
  630.     //--------------------------JDBC 2.0-----------------------------------
  631.  
  632.     //---------------------------------------------------------------------
  633.     // Getter's and Setter's
  634.     //---------------------------------------------------------------------
  635.  
  636.     /**
  637.      * JDBC 2.0
  638.      *
  639.      * <p>Gets the value of a column in the current row as a java.io.Reader.
  640.      * @param columnIndex the first column is 1, the second is 2, ...
  641.      */
  642.     java.io.Reader getCharacterStream(int columnIndex) throws SQLException;
  643.  
  644.     /**
  645.      * JDBC 2.0
  646.      *
  647.      * <p>Gets the value of a column in the current row as a java.io.Reader.
  648.      * @param columnName the name of the column
  649.      * @return the value in the specified column as a <code>java.io.Reader</code>
  650.      */
  651.     java.io.Reader getCharacterStream(String columnName) throws SQLException;
  652.  
  653.     /**
  654.      * JDBC 2.0
  655.      *
  656.      * Gets the value of a column in the current row as a java.math.BigDecimal 
  657.      * object with full precision.
  658.      *
  659.      * @param columnIndex the first column is 1, the second is 2, ...
  660.      * @return the column value (full precision); if the value is SQL NULL, 
  661.      * the result is null
  662.      * @exception SQLException if a database access error occurs
  663.      */
  664.     BigDecimal getBigDecimal(int columnIndex) throws SQLException;
  665.  
  666.     /**
  667.      * JDBC 2.0
  668.      *
  669.      * Gets the value of a column in the current row as a java.math.BigDecimal 
  670.      * object with full precision.
  671.      * @param columnName the column name
  672.      * @return the column value (full precision); if the value is SQL NULL, 
  673.      * the result is null
  674.      * @exception SQLException if a database access error occurs
  675.      *
  676.      */
  677.     BigDecimal getBigDecimal(String columnName) throws SQLException;
  678.  
  679.     //---------------------------------------------------------------------
  680.     // Traversal/Positioning
  681.     //---------------------------------------------------------------------
  682.  
  683.     /**
  684.      * JDBC 2.0
  685.      *
  686.      * <p>Indicates whether the cursor is before the first row in the result 
  687.      * set.   
  688.      *
  689.      * @return true if the cursor is before the first row, false otherwise. Returns
  690.      * false when the result set contains no rows.
  691.      * @exception SQLException if a database access error occurs
  692.      */
  693.     boolean isBeforeFirst() throws SQLException;
  694.       
  695.     /**
  696.      * JDBC 2.0
  697.      *
  698.      * <p>Indicates whether the cursor is after the last row in the result 
  699.      * set.   
  700.      *
  701.      * @return true if the cursor is  after the last row, false otherwise.  Returns
  702.      * false when the result set contains no rows.
  703.      * @exception SQLException if a database access error occurs
  704.      */
  705.     boolean isAfterLast() throws SQLException;
  706.  
  707.     /**
  708.      * JDBC 2.0
  709.      *
  710.      * <p>Indicates whether the cursor is on the first row of the result set.   
  711.      *
  712.      * @return true if the cursor is on the first row, false otherwise.   
  713.      * @exception SQLException if a database access error occurs
  714.      */
  715.     boolean isFirst() throws SQLException;
  716.  
  717.     /**
  718.      * JDBC 2.0
  719.      *
  720.      * <p>Indicates whether the cursor is on the last row of the result set.   
  721.      * Note: Calling the method <code>isLast</code> may be expensive
  722.      * because the JDBC driver
  723.      * might need to fetch ahead one row in order to determine 
  724.      * whether the current row is the last row in the result set.
  725.      *
  726.      * @return true if the cursor is on the last row, false otherwise. 
  727.      * @exception SQLException if a database access error occurs
  728.      */
  729.     boolean isLast() throws SQLException;
  730.  
  731.     /**
  732.      * JDBC 2.0
  733.      *
  734.      * <p>Moves the cursor to the front of the result set, just before the
  735.      * first row. Has no effect if the result set contains no rows.
  736.      *
  737.      * @exception SQLException if a database access error occurs or the 
  738.      * result set type is TYPE_FORWARD_ONLY
  739.      */
  740.     void beforeFirst() throws SQLException;
  741.  
  742.     /**
  743.      * JDBC 2.0
  744.      *
  745.      * <p>Moves the cursor to the end of the result set, just after the last
  746.      * row.  Has no effect if the result set contains no rows.
  747.      *
  748.      * @exception SQLException if a database access error occurs or the 
  749.      * result set type is TYPE_FORWARD_ONLY 
  750.      */
  751.     void afterLast() throws SQLException;
  752.  
  753.     /**
  754.      * JDBC 2.0
  755.      *
  756.      * <p>Moves the cursor to the first row in the result set.  
  757.      *
  758.      * @return true if the cursor is on a valid row; false if
  759.      *         there are no rows in the result set
  760.      * @exception SQLException if a database access error occurs or the 
  761.      * result set type is TYPE_FORWARD_ONLY
  762.      */
  763.     boolean first() throws SQLException;
  764.  
  765.     /**
  766.      * JDBC 2.0
  767.      *
  768.      * <p>Moves the cursor to the last row in the result set.  
  769.      *
  770.      * @return true if the cursor is on a valid row;
  771.      * false if there are no rows in the result set
  772.      * @exception SQLException if a database access error occurs or the
  773.      * result set type is TYPE_FORWARD_ONLY.
  774.      */
  775.     boolean last() throws SQLException;
  776.  
  777.     /**
  778.      * JDBC 2.0
  779.      *
  780.      * <p>Retrieves the current row number.  The first row is number 1, the
  781.      * second number 2, and so on.  
  782.      *
  783.      * @return the current row number; 0 if there is no current row
  784.      * @exception SQLException if a database access error occurs
  785.      */
  786.     int getRow() throws SQLException;
  787.  
  788.     /**
  789.      * JDBC 2.0
  790.      *
  791.      * <p>Moves the cursor to the given row number in the result set.
  792.      *
  793.      * <p>If the row number is positive, the cursor moves to 
  794.      * the given row number with respect to the
  795.      * beginning of the result set.  The first row is row 1, the second
  796.      * is row 2, and so on. 
  797.      *
  798.      * <p>If the given row number is negative, the cursor moves to
  799.      * an absolute row position with respect to
  800.      * the end of the result set.  For example, calling
  801.      * <code>absolute(-1)</code> positions the 
  802.      * cursor on the last row, <code>absolute(-2)</code> indicates the next-to-last
  803.      * row, and so on.
  804.      *
  805.      * <p>An attempt to position the cursor beyond the first/last row in
  806.      * the result set leaves the cursor before/after the first/last
  807.      * row, respectively.
  808.      *
  809.      * <p>Note: Calling <code>absolute(1)</code> is the same
  810.      * as calling <code>first()</code>.
  811.      * Calling <code>absolute(-1)</code> is the same as calling <code>last()</code>.
  812.      *
  813.      * @return true if the cursor is on the result set; false otherwise
  814.      * @exception SQLException if a database access error occurs or 
  815.      * row is 0, or result set type is TYPE_FORWARD_ONLY.
  816.      */
  817.     boolean absolute( int row ) throws SQLException;
  818.  
  819.     /**
  820.      * JDBC 2.0
  821.      *
  822.      * <p>Moves the cursor a relative number of rows, either positive or negative.
  823.      * Attempting to move beyond the first/last row in the
  824.      * result set positions the cursor before/after the
  825.      * the first/last row. Calling <code>relative(0)</code> is valid, but does
  826.      * not change the cursor position.
  827.      *
  828.      * <p>Note: Calling <code>relative(1)</code>
  829.      * is different from calling <code>next()</code>
  830.      * because is makes sense to call <code>next()</code> when there is no current row,
  831.      * for example, when the cursor is positioned before the first row
  832.      * or after the last row of the result set.
  833.      *
  834.      * @return true if the cursor is on a row; false otherwise
  835.      * @exception SQLException if a database access error occurs, there
  836.      * is no current row, or the result set type is TYPE_FORWARD_ONLY
  837.      */
  838.     boolean relative( int rows ) throws SQLException;
  839.  
  840.     /**
  841.      * JDBC 2.0
  842.      *
  843.      * <p>Moves the cursor to the previous row in the result set.  
  844.      *
  845.      * <p>Note: <code>previous()</code> is not the same as
  846.      * <code>relative(-1)</code> because it
  847.      * makes sense to call</code>previous()</code> when there is no current row.
  848.      *
  849.      * @return true if the cursor is on a valid row; false if it is off the result set
  850.      * @exception SQLException if a database access error occurs or the
  851.      * result set type is TYPE_FORWARD_ONLY
  852.      */
  853.     boolean previous() throws SQLException;
  854.  
  855.     //---------------------------------------------------------------------
  856.     // Properties
  857.     //---------------------------------------------------------------------
  858.  
  859.     /**
  860.      * JDBC 2.0
  861.      *
  862.      * The rows in a result set will be processed in a forward direction;
  863.      * first-to-last.
  864.      */
  865.     int FETCH_FORWARD = 1000;
  866.  
  867.     /**
  868.      * JDBC 2.0
  869.      *
  870.      * The rows in a result set will be processed in a reverse direction;
  871.      * last-to-first.
  872.      */
  873.     int FETCH_REVERSE = 1001;
  874.  
  875.     /**
  876.      * JDBC 2.0
  877.      * 
  878.      * The order in which rows in a result set will be processed is unknown.
  879.      */
  880.     int FETCH_UNKNOWN = 1002;
  881.  
  882.     /**
  883.      * JDBC 2.0
  884.      *
  885.      * Gives a hint as to the direction in which the rows in this result set
  886.      * will be processed.  The initial value is determined by the statement
  887.      * that produced the result set.  The fetch direction may be changed
  888.      * at any time.
  889.      *
  890.      * @exception SQLException if a database access error occurs or
  891.      * the result set type is TYPE_FORWARD_ONLY and the fetch direction is not 
  892.      * FETCH_FORWARD.
  893.      */
  894.     void setFetchDirection(int direction) throws SQLException;
  895.  
  896.     /**
  897.      * JDBC 2.0
  898.      *
  899.      * Returns the fetch direction for this result set.
  900.      *
  901.      * @return the current fetch direction for this result set
  902.      * @exception SQLException if a database access error occurs
  903.      */
  904.     int getFetchDirection() throws SQLException;
  905.  
  906.     /**
  907.      * JDBC 2.0
  908.      *
  909.      * Gives the JDBC driver a hint as to the number of rows that should 
  910.      * be fetched from the database when more rows are needed for this result
  911.      * set.  If the fetch size specified is zero, the JDBC driver 
  912.      * ignores the value and is free to make its own best guess as to what
  913.      * the fetch size should be.  The default value is set by the statement 
  914.      * that created the result set.  The fetch size may be changed at any 
  915.      * time.
  916.      *
  917.      * @param rows the number of rows to fetch
  918.      * @exception SQLException if a database access error occurs or the
  919.      * condition 0 <= rows <= this.getMaxRows() is not satisfied.
  920.      */
  921.     void setFetchSize(int rows) throws SQLException;
  922.  
  923.     /**
  924.      * JDBC 2.0
  925.      *
  926.      * Returns the fetch size for this result set.
  927.      *
  928.      * @return the current fetch size for this result set
  929.      * @exception SQLException if a database access error occurs
  930.      */
  931.     int getFetchSize() throws SQLException;
  932.  
  933.     /**
  934.      * JDBC 2.0
  935.      * The type for a <code>ResultSet</code> object whose cursor may
  936.      * move only forward.
  937.      */
  938.     int TYPE_FORWARD_ONLY = 1003;
  939.  
  940.     /**
  941.      * JDBC 2.0
  942.      * The type for a <code>ResultSet</code> object that is scrollable
  943.      * but generally not sensitive to changes made by others.
  944.      * 
  945.      */
  946.     int TYPE_SCROLL_INSENSITIVE = 1004;
  947.  
  948.     /**
  949.      * JDBC 2.0
  950.      * The type for a <code>ResultSet</code> object that is scrollable
  951.      * and generally sensitive to changes made by others.
  952.      */
  953.     int TYPE_SCROLL_SENSITIVE = 1005;
  954.  
  955.     /**
  956.      * JDBC 2.0
  957.      *
  958.      * Returns the type of this result set.  The type is determined by
  959.      * the statement that created the result set.
  960.      *
  961.      * @return TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE, or
  962.      * TYPE_SCROLL_SENSITIVE
  963.      * @exception SQLException if a database access error occurs
  964.      */
  965.     int getType() throws SQLException;
  966.  
  967.     /**
  968.      * JDBC 2.0
  969.      * The concurrency mode for a <code>ResultSet</code> object
  970.      * that may NOT be updated.
  971.      *  
  972.      */
  973.     int CONCUR_READ_ONLY = 1007;
  974.  
  975.     /**
  976.      * JDBC 2.0
  977.      * The concurrency mode for a <code>ResultSet</code> object
  978.      * that may be updated.
  979.      * 
  980.      */
  981.     int CONCUR_UPDATABLE = 1008;
  982.  
  983.     /**
  984.      * JDBC 2.0
  985.      *
  986.      * Returns the concurrency mode of this result set.  The concurrency
  987.      * used is determined by the statement that created the result set.
  988.      *
  989.      * @return the concurrency type, CONCUR_READ_ONLY or CONCUR_UPDATABLE
  990.      * @exception SQLException if a database access error occurs
  991.      */
  992.     int getConcurrency() throws SQLException;
  993.  
  994.     //---------------------------------------------------------------------
  995.     // Updates
  996.     //---------------------------------------------------------------------
  997.  
  998.     /**
  999.      * JDBC 2.0
  1000.      *
  1001.      * Indicates whether the current row has been updated.  The value returned 
  1002.      * depends on whether or not the result set can detect updates.
  1003.      *
  1004.      * @return true if the row has been visibly updated by the owner or
  1005.      * another, and updates are detected
  1006.      * @exception SQLException if a database access error occurs
  1007.      * 
  1008.      * @see DatabaseMetaData#updatesAreDetected
  1009.      */
  1010.     boolean rowUpdated() throws SQLException;
  1011.  
  1012.     /**
  1013.      * JDBC 2.0
  1014.      *
  1015.      * Indicates whether the current row has had an insertion.  The value returned 
  1016.      * depends on whether or not the result set can detect visible inserts.
  1017.      *
  1018.      * @return true if a row has had an insertion and insertions are detected
  1019.      * @exception SQLException if a database access error occurs
  1020.      * 
  1021.      * @see DatabaseMetaData#insertsAreDetected
  1022.      */
  1023.     boolean rowInserted() throws SQLException;
  1024.    
  1025.     /**
  1026.      * JDBC 2.0
  1027.      *
  1028.      * Indicates whether a row has been deleted.  A deleted row may leave
  1029.      * a visible "hole" in a result set.  This method can be used to
  1030.      * detect holes in a result set.  The value returned depends on whether 
  1031.      * or not the result set can detect deletions.
  1032.      *
  1033.      * @return true if a row was deleted and deletions are detected
  1034.      * @exception SQLException if a database access error occurs
  1035.      * 
  1036.      * @see DatabaseMetaData#deletesAreDetected
  1037.      */
  1038.     boolean rowDeleted() throws SQLException;
  1039.  
  1040.     /**
  1041.      * JDBC 2.0
  1042.      * 
  1043.      * Give a nullable column a null value.
  1044.      * 
  1045.      * The <code>updateXXX</code> methods are used to update column values in the
  1046.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1047.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1048.      * methods are called to update the database.
  1049.      *
  1050.      * @param columnIndex the first column is 1, the second is 2, ...
  1051.      * @exception SQLException if a database access error occurs
  1052.      */
  1053.     void updateNull(int columnIndex) throws SQLException;  
  1054.  
  1055.     /**
  1056.      * JDBC 2.0
  1057.      * 
  1058.      * Updates a column with a boolean value.
  1059.      *
  1060.      * The <code>updateXXX</code> methods are used to update column values in the
  1061.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1062.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1063.      * methods are called to update the database.
  1064.      *
  1065.      * @param columnIndex the first column is 1, the second is 2, ...
  1066.      * @param x the new column value
  1067.      * @exception SQLException if a database access error occurs
  1068.      */
  1069.     void updateBoolean(int columnIndex, boolean x) throws SQLException;
  1070.  
  1071.     /**
  1072.      * JDBC 2.0
  1073.      *   
  1074.      * Updates a column with a byte value.
  1075.      *
  1076.      * The <code>updateXXX</code> methods are used to update column values in the
  1077.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1078.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1079.      * methods are called to update the database.
  1080.      *
  1081.      * @param columnIndex the first column is 1, the second is 2, ...
  1082.      * @param x the new column value
  1083.      * @exception SQLException if a database access error occurs
  1084.      */
  1085.     void updateByte(int columnIndex, byte x) throws SQLException;
  1086.  
  1087.     /**
  1088.      * JDBC 2.0
  1089.      *   
  1090.      * Updates a column with a short value.
  1091.      *
  1092.      * The <code>updateXXX</code> methods are used to update column values in the
  1093.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1094.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1095.      * methods are called to update the database.
  1096.      *
  1097.      * @param columnIndex the first column is 1, the second is 2, ...
  1098.      * @param x the new column value
  1099.      * @exception SQLException if a database access error occurs
  1100.      */
  1101.     void updateShort(int columnIndex, short x) throws SQLException;
  1102.  
  1103.     /**
  1104.      * JDBC 2.0
  1105.      *   
  1106.      * Updates a column with an integer value.
  1107.      *
  1108.      * The <code>updateXXX</code> methods are used to update column values in the
  1109.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1110.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1111.      * methods are called to update the database.
  1112.      *
  1113.      * @param columnIndex the first column is 1, the second is 2, ...
  1114.      * @param x the new column value
  1115.      * @exception SQLException if a database access error occurs
  1116.      */
  1117.     void updateInt(int columnIndex, int x) throws SQLException;
  1118.  
  1119.     /**
  1120.      * JDBC 2.0
  1121.      *   
  1122.      * Updates a column with a long value.
  1123.      *
  1124.      * The <code>updateXXX</code> methods are used to update column values in the
  1125.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1126.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1127.      * methods are called to update the database.
  1128.      *
  1129.      * @param columnIndex the first column is 1, the second is 2, ...
  1130.      * @param x the new column value
  1131.      * @exception SQLException if a database access error occurs
  1132.      */
  1133.     void updateLong(int columnIndex, long x) throws SQLException;
  1134.  
  1135.     /**
  1136.      * JDBC 2.0
  1137.      *  
  1138.      * Updates a column with a float value.
  1139.      *
  1140.      * The <code>updateXXX</code> methods are used to update column values in the
  1141.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1142.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1143.      * methods are called to update the database.
  1144.      *
  1145.      * @param columnIndex the first column is 1, the second is 2, ...
  1146.      * @param x the new column value
  1147.      * @exception SQLException if a database access error occurs
  1148.      */
  1149.     void updateFloat(int columnIndex, float x) throws SQLException;
  1150.  
  1151.     /**
  1152.      * JDBC 2.0
  1153.      *  
  1154.      * Updates a column with a Double value.
  1155.      *
  1156.      * The <code>updateXXX</code> methods are used to update column values in the
  1157.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1158.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1159.      * methods are called to update the database.
  1160.      *
  1161.      * @param columnIndex the first column is 1, the second is 2, ...
  1162.      * @param x the new column value
  1163.      * @exception SQLException if a database access error occurs
  1164.      */
  1165.     void updateDouble(int columnIndex, double x) throws SQLException;
  1166.  
  1167.     /**
  1168.      * JDBC 2.0
  1169.      *  
  1170.      * Updates a column with a BigDecimal value.
  1171.      *
  1172.      * The <code>updateXXX</code> methods are used to update column values in the
  1173.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1174.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1175.      * methods are called to update the database.
  1176.      *
  1177.      * @param columnIndex the first column is 1, the second is 2, ...
  1178.      * @param x the new column value
  1179.      * @exception SQLException if a database access error occurs
  1180.      */
  1181.     void updateBigDecimal(int columnIndex, BigDecimal x) throws SQLException;
  1182.  
  1183.     /**
  1184.      * JDBC 2.0
  1185.      *  
  1186.      * Updates a column with a String value.
  1187.      *
  1188.      * The <code>updateXXX</code> methods are used to update column values in the
  1189.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1190.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1191.      * methods are called to update the database.
  1192.      *
  1193.      * @param columnIndex the first column is 1, the second is 2, ...
  1194.      * @param x the new column value
  1195.      * @exception SQLException if a database access error occurs
  1196.      */
  1197.     void updateString(int columnIndex, String x) throws SQLException;
  1198.  
  1199.     /**
  1200.      * JDBC 2.0
  1201.      *  
  1202.      * Updates a column with a byte array value.
  1203.      *
  1204.      * The <code>updateXXX</code> methods are used to update column values in the
  1205.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1206.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1207.      * methods are called to update the database.
  1208.      *
  1209.      * @param columnIndex the first column is 1, the second is 2, ...
  1210.      * @param x the new column value
  1211.      * @exception SQLException if a database access error occurs
  1212.      */
  1213.     void updateBytes(int columnIndex, byte x[]) throws SQLException;
  1214.  
  1215.     /**
  1216.      * JDBC 2.0
  1217.      *  
  1218.      * Updates a column with a Date value.
  1219.      *
  1220.      * The <code>updateXXX</code> methods are used to update column values in the
  1221.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1222.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1223.      * methods are called to update the database.
  1224.      *
  1225.      * @param columnIndex the first column is 1, the second is 2, ...
  1226.      * @param x the new column value
  1227.      * @exception SQLException if a database access error occurs
  1228.      */
  1229.     void updateDate(int columnIndex, java.sql.Date x) throws SQLException;
  1230.  
  1231.     /**
  1232.      * JDBC 2.0
  1233.      *  
  1234.      * Updates a column with a Time value.
  1235.      *
  1236.      * The <code>updateXXX</code> methods are used to update column values in the
  1237.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1238.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1239.      * methods are called to update the database.
  1240.      *
  1241.      * @param columnIndex the first column is 1, the second is 2, ...
  1242.      * @param x the new column value
  1243.      * @exception SQLException if a database access error occurs
  1244.      */
  1245.     void updateTime(int columnIndex, java.sql.Time x) throws SQLException;
  1246.  
  1247.     /**
  1248.      * JDBC 2.0
  1249.      *  
  1250.      * Updates a column with a Timestamp value.
  1251.      *
  1252.      * The <code>updateXXX</code> methods are used to update column values in the
  1253.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1254.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1255.      * methods are called to update the database.
  1256.      *
  1257.      * @param columnIndex the first column is 1, the second is 2, ...
  1258.      * @param x the new column value
  1259.      * @exception SQLException if a database access error occurs
  1260.      */
  1261.     void updateTimestamp(int columnIndex, java.sql.Timestamp x)
  1262.       throws SQLException;
  1263.  
  1264.     /** 
  1265.      * JDBC 2.0
  1266.      *  
  1267.      * Updates a column with an ascii stream value.
  1268.      *
  1269.      * The <code>updateXXX</code> methods are used to update column values in the
  1270.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1271.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1272.      * methods are called to update the database.
  1273.      *
  1274.      * @param columnIndex the first column is 1, the second is 2, ...
  1275.      * @param x the new column value
  1276.      * @param length the length of the stream
  1277.      * @exception SQLException if a database access error occurs
  1278.      */
  1279.     void updateAsciiStream(int columnIndex, 
  1280.                java.io.InputStream x, 
  1281.                int length) throws SQLException;
  1282.  
  1283.     /** 
  1284.      * JDBC 2.0
  1285.      *  
  1286.      * Updates a column with a binary stream value.
  1287.      *
  1288.      * The <code>updateXXX</code> methods are used to update column values in the
  1289.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1290.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1291.      * methods are called to update the database.
  1292.      *
  1293.      * @param columnIndex the first column is 1, the second is 2, ...
  1294.      * @param x the new column value     
  1295.      * @param length the length of the stream
  1296.      * @exception SQLException if a database access error occurs
  1297.      */
  1298.     void updateBinaryStream(int columnIndex, 
  1299.                 java.io.InputStream x,
  1300.                 int length) throws SQLException;
  1301.  
  1302.     /**
  1303.      * JDBC 2.0
  1304.      *  
  1305.      * Updates a column with a character stream value.
  1306.      *
  1307.      * The <code>updateXXX</code> methods are used to update column values in the
  1308.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1309.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1310.      * methods are called to update the database.
  1311.      *
  1312.      * @param columnIndex the first column is 1, the second is 2, ...
  1313.      * @param x the new column value
  1314.      * @param length the length of the stream
  1315.      * @exception SQLException if a database access error occurs
  1316.      */
  1317.     void updateCharacterStream(int columnIndex,
  1318.                  java.io.Reader x,
  1319.                  int length) throws SQLException;
  1320.  
  1321.     /**
  1322.      * JDBC 2.0
  1323.      *  
  1324.      * Updates a column with an Object value.
  1325.      *
  1326.      * The <code>updateXXX</code> methods are used to update column values in the
  1327.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1328.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1329.      * methods are called to update the database.
  1330.      *
  1331.      * @param columnIndex the first column is 1, the second is 2, ...
  1332.      * @param x the new column value
  1333.      * @param scale For java.sql.Types.DECIMAL or java.sql.Types.NUMERIC types
  1334.      *  this is the number of digits after the decimal.  For all other
  1335.      *  types this value will be ignored.
  1336.      * @exception SQLException if a database access error occurs
  1337.      */
  1338.     void updateObject(int columnIndex, Object x, int scale)
  1339.       throws SQLException;
  1340.  
  1341.     /**
  1342.      * JDBC 2.0
  1343.      *  
  1344.      * Updates a column with an Object value.
  1345.      *
  1346.      * The <code>updateXXX</code> methods are used to update column values in the
  1347.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1348.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1349.      * methods are called to update the database.
  1350.      *
  1351.      * @param columnIndex the first column is 1, the second is 2, ...
  1352.      * @param x the new column value
  1353.      * @exception SQLException if a database access error occurs
  1354.      */
  1355.     void updateObject(int columnIndex, Object x) throws SQLException;
  1356.  
  1357.     /**
  1358.      * JDBC 2.0
  1359.      *  
  1360.      * Updates a column with a null value.
  1361.      *
  1362.      * The <code>updateXXX</code> methods are used to update column values in the
  1363.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1364.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1365.      * methods are called to update the database.
  1366.      *
  1367.      * @param columnName the name of the column
  1368.      * @exception SQLException if a database access error occurs
  1369.      */
  1370.     void updateNull(String columnName) throws SQLException;  
  1371.  
  1372.     /**
  1373.      * JDBC 2.0
  1374.      *  
  1375.      * Updates a column with a boolean value.
  1376.      *
  1377.      * The <code>updateXXX</code> methods are used to update column values in the
  1378.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1379.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1380.      * methods are called to update the database.
  1381.      *
  1382.      * @param columnName the name of the column
  1383.      * @param x the new column value
  1384.      * @exception SQLException if a database access error occurs
  1385.      */
  1386.     void updateBoolean(String columnName, boolean x) throws SQLException;
  1387.  
  1388.     /**
  1389.      * JDBC 2.0
  1390.      *  
  1391.      * Updates a column with a byte value.
  1392.      *
  1393.      * The <code>updateXXX</code> methods are used to update column values in the
  1394.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1395.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1396.      * methods are called to update the database.
  1397.      *
  1398.      * @param columnName the name of the column
  1399.      * @param x the new column value
  1400.      * @exception SQLException if a database access error occurs
  1401.      */
  1402.     void updateByte(String columnName, byte x) throws SQLException;
  1403.  
  1404.     /**
  1405.      * JDBC 2.0
  1406.      *  
  1407.      * Updates a column with a short value.
  1408.      *
  1409.      * The <code>updateXXX</code> methods are used to update column values in the
  1410.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1411.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1412.      * methods are called to update the database.
  1413.      *
  1414.      * @param columnName the name of the column
  1415.      * @param x the new column value
  1416.      * @exception SQLException if a database access error occurs
  1417.      */
  1418.     void updateShort(String columnName, short x) throws SQLException;
  1419.  
  1420.     /**
  1421.      * JDBC 2.0
  1422.      *  
  1423.      * Updates a column with an integer value.
  1424.      *
  1425.      * The <code>updateXXX</code> methods are used to update column values in the
  1426.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1427.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1428.      * methods are called to update the database.
  1429.      *
  1430.      * @param columnName the name of the column
  1431.      * @param x the new column value
  1432.      * @exception SQLException if a database access error occurs
  1433.      */
  1434.     void updateInt(String columnName, int x) throws SQLException;
  1435.  
  1436.     /**
  1437.      * JDBC 2.0
  1438.      *  
  1439.      * Updates a column with a long value.
  1440.      *
  1441.      * The <code>updateXXX</code> methods are used to update column values in the
  1442.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1443.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1444.      * methods are called to update the database.
  1445.      *
  1446.      * @param columnName the name of the column
  1447.      * @param x the new column value
  1448.      * @exception SQLException if a database access error occurs
  1449.      */
  1450.     void updateLong(String columnName, long x) throws SQLException;
  1451.  
  1452.     /**
  1453.      * JDBC 2.0
  1454.      *  
  1455.      * Updates a column with a float value.
  1456.      *
  1457.      * The <code>updateXXX</code> methods are used to update column values in the
  1458.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1459.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1460.      * methods are called to update the database.
  1461.      *
  1462.      * @param columnName the name of the column
  1463.      * @param x the new column value
  1464.      * @exception SQLException if a database access error occurs
  1465.      */
  1466.     void updateFloat(String columnName, float x) throws SQLException;
  1467.  
  1468.     /**
  1469.      * JDBC 2.0
  1470.      *  
  1471.      * Updates a column with a double value.
  1472.      *
  1473.      * The <code>updateXXX</code> methods are used to update column values in the
  1474.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1475.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1476.      * methods are called to update the database.
  1477.      *
  1478.      * @param columnName the name of the column
  1479.      * @param x the new column value
  1480.      * @exception SQLException if a database access error occurs
  1481.      */
  1482.     void updateDouble(String columnName, double x) throws SQLException;
  1483.  
  1484.     /**
  1485.      * JDBC 2.0
  1486.      *  
  1487.      * Updates a column with a BigDecimal value.
  1488.      *
  1489.      * The <code>updateXXX</code> methods are used to update column values in the
  1490.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1491.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1492.      * methods are called to update the database.
  1493.      *
  1494.      * @param columnName the name of the column
  1495.      * @param x the new column value
  1496.      * @exception SQLException if a database access error occurs
  1497.      */
  1498.     void updateBigDecimal(String columnName, BigDecimal x) throws SQLException;
  1499.  
  1500.     /**
  1501.      * JDBC 2.0
  1502.      *  
  1503.      * Updates a column with a String value.
  1504.      *
  1505.      * The <code>updateXXX</code> methods are used to update column values in the
  1506.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1507.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1508.      * methods are called to update the database.
  1509.      *
  1510.      * @param columnName the name of the column
  1511.      * @param x the new column value
  1512.      * @exception SQLException if a database access error occurs
  1513.      */
  1514.     void updateString(String columnName, String x) throws SQLException;
  1515.  
  1516.     /**
  1517.      * JDBC 2.0
  1518.      *  
  1519.      * Updates a column with a byte array value.
  1520.      *
  1521.      * The <code>updateXXX</code> methods are used to update column values in the
  1522.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1523.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1524.      * methods are called to update the database.
  1525.      *
  1526.      * @param columnName the name of the column
  1527.      * @param x the new column value
  1528.      * @exception SQLException if a database access error occurs
  1529.      */
  1530.     void updateBytes(String columnName, byte x[]) throws SQLException;
  1531.  
  1532.     /**
  1533.      * JDBC 2.0
  1534.      *  
  1535.      * Updates a column with a Date value.
  1536.      *
  1537.      * The <code>updateXXX</code> methods are used to update column values in the
  1538.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1539.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1540.      * methods are called to update the database.
  1541.      *
  1542.      * @param columnName the name of the column
  1543.      * @param x the new column value
  1544.      * @exception SQLException if a database access error occurs
  1545.      */
  1546.     void updateDate(String columnName, java.sql.Date x) throws SQLException;
  1547.  
  1548.     /**
  1549.      * JDBC 2.0
  1550.      *  
  1551.      * Updates a column with a Time value.
  1552.      *
  1553.      * The <code>updateXXX</code> methods are used to update column values in the
  1554.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1555.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1556.      * methods are called to update the database.
  1557.      *
  1558.      * @param columnName the name of the column
  1559.      * @param x the new column value
  1560.      * @exception SQLException if a database access error occurs
  1561.      */
  1562.     void updateTime(String columnName, java.sql.Time x) throws SQLException;
  1563.  
  1564.     /**
  1565.      * JDBC 2.0
  1566.      *  
  1567.      * Updates a column with a Timestamp value.
  1568.      *
  1569.      * The <code>updateXXX</code> methods are used to update column values in the
  1570.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1571.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1572.      * methods are called to update the database.
  1573.      *
  1574.      * @param columnName the name of the column
  1575.      * @param x the new column value
  1576.      * @exception SQLException if a database access error occurs
  1577.      */
  1578.     void updateTimestamp(String columnName, java.sql.Timestamp x)
  1579.       throws SQLException;
  1580.  
  1581.     /** 
  1582.      * JDBC 2.0
  1583.      *  
  1584.      * Updates a column with an ascii stream value.
  1585.      *
  1586.      * The <code>updateXXX</code> methods are used to update column values in the
  1587.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1588.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1589.      * methods are called to update the database.
  1590.      *
  1591.      * @param columnName the name of the column
  1592.      * @param x the new column value
  1593.      * @param length of the stream
  1594.      * @exception SQLException if a database access error occurs
  1595.      */
  1596.     void updateAsciiStream(String columnName, 
  1597.                java.io.InputStream x, 
  1598.                int length) throws SQLException;
  1599.  
  1600.     /** 
  1601.      * JDBC 2.0
  1602.      *  
  1603.      * Updates a column with a binary stream value.
  1604.      *
  1605.      * The <code>updateXXX</code> methods are used to update column values in the
  1606.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1607.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1608.      * methods are called to update the database.
  1609.      *
  1610.      * @param columnName the name of the column
  1611.      * @param x the new column value
  1612.      * @param length of the stream
  1613.      * @exception SQLException if a database access error occurs
  1614.      */
  1615.     void updateBinaryStream(String columnName, 
  1616.                 java.io.InputStream x,
  1617.                 int length) throws SQLException;
  1618.  
  1619.     /**
  1620.      * JDBC 2.0
  1621.      *  
  1622.      * Updates a column with a character stream value.
  1623.      *
  1624.      * The <code>updateXXX</code> methods are used to update column values in the
  1625.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1626.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1627.      * methods are called to update the database.
  1628.      *
  1629.      * @param columnName the name of the column
  1630.      * @param x the new column value
  1631.      * @param length of the stream
  1632.      * @exception SQLException if a database access error occurs
  1633.      */
  1634.     void updateCharacterStream(String columnName,
  1635.                  java.io.Reader reader,
  1636.                  int length) throws SQLException;
  1637.  
  1638.     /**
  1639.      * JDBC 2.0
  1640.      *  
  1641.      * Updates a column with an Object value.
  1642.      *
  1643.      * The <code>updateXXX</code> methods are used to update column values in the
  1644.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1645.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1646.      * methods are called to update the database.
  1647.      *
  1648.      * @param columnName the name of the column
  1649.      * @param x the new column value
  1650.      * @param scale For java.sql.Types.DECIMAL or java.sql.Types.NUMERIC types
  1651.      *  this is the number of digits after the decimal.  For all other
  1652.      *  types this value will be ignored.
  1653.      * @exception SQLException if a database access error occurs
  1654.      */
  1655.     void updateObject(String columnName, Object x, int scale)
  1656.       throws SQLException;
  1657.  
  1658.     /**
  1659.      * JDBC 2.0
  1660.      *  
  1661.      * Updates a column with an Object value.
  1662.      *
  1663.      * The <code>updateXXX</code> methods are used to update column values in the
  1664.      * current row, or the insert row.  The <code>updateXXX</code> methods do not 
  1665.      * update the underlying database; instead the <code>updateRow</code> or <code>insertRow</code>
  1666.      * methods are called to update the database.
  1667.      *
  1668.      * @param columnName the name of the column
  1669.      * @param x the new column value
  1670.      * @exception SQLException if a database access error occurs
  1671.      */
  1672.     void updateObject(String columnName, Object x) throws SQLException;
  1673.  
  1674.     /**
  1675.      * JDBC 2.0
  1676.      *
  1677.      * Inserts the contents of the insert row into the result set and
  1678.      * the database.  Must be on the insert row when this method is called.
  1679.      *
  1680.      * @exception SQLException if a database access error occurs,
  1681.      * if called when not on the insert row, or if not all of non-nullable columns in
  1682.      * the insert row have been given a value
  1683.      */
  1684.     void insertRow() throws SQLException;
  1685.  
  1686.     /**
  1687.      * JDBC 2.0
  1688.      *
  1689.      * Updates the underlying database with the new contents of the
  1690.      * current row.  Cannot be called when on the insert row.
  1691.      *
  1692.      * @exception SQLException if a database access error occurs or
  1693.      * if called when on the insert row
  1694.      */
  1695.     void updateRow() throws SQLException;
  1696.  
  1697.     /**
  1698.      * JDBC 2.0
  1699.      *
  1700.      * Deletes the current row from the result set and the underlying
  1701.      * database.  Cannot be called when on the insert row.
  1702.      *
  1703.      * @exception SQLException if a database access error occurs or if
  1704.      * called when on the insert row.
  1705.      */
  1706.     void deleteRow() throws SQLException;
  1707.  
  1708.     /**
  1709.      * JDBC 2.0
  1710.      *
  1711.      * Refreshes the current row with its most recent value in 
  1712.      * the database.  Cannot be called when on the insert row.
  1713.      *
  1714.      * The <code>refreshRow</code> method provides a way for an application to 
  1715.      * explicitly tell the JDBC driver to refetch a row(s) from the
  1716.      * database.  An application may want to call <code>refreshRow</code> when 
  1717.      * caching or prefetching is being done by the JDBC driver to
  1718.      * fetch the latest value of a row from the database.  The JDBC driver 
  1719.      * may actually refresh multiple rows at once if the fetch size is 
  1720.      * greater than one.
  1721.      * 
  1722.      * All values are refetched subject to the transaction isolation 
  1723.      * level and cursor sensitivity.  If <code>refreshRow</code> is called after
  1724.      * calling <code>updateXXX</code>, but before calling <code>updateRow</code>, then the
  1725.      * updates made to the row are lost.  Calling the method <code>refreshRow</code> frequently
  1726.      * will likely slow performance.
  1727.      *
  1728.      * @exception SQLException if a database access error occurs or if
  1729.      * called when on the insert row
  1730.      */
  1731.     void refreshRow() throws SQLException;
  1732.  
  1733.     /**
  1734.      * JDBC 2.0
  1735.      *
  1736.      * Cancels the updates made to a row.
  1737.      * This method may be called after calling an
  1738.      * <code>updateXXX</code> method(s) and before calling <code>updateRow</code> to rollback 
  1739.      * the updates made to a row.  If no updates have been made or 
  1740.      * <code>updateRow</code> has already been called, then this method has no 
  1741.      * effect.
  1742.      *
  1743.      * @exception SQLException if a database access error occurs or if
  1744.      * called when on the insert row
  1745.      *
  1746.      */
  1747.     void cancelRowUpdates() throws SQLException;
  1748.  
  1749.     /**
  1750.      * JDBC 2.0
  1751.      *
  1752.      * Moves the cursor to the insert row.  The current cursor position is 
  1753.      * remembered while the cursor is positioned on the insert row.
  1754.      *
  1755.      * The insert row is a special row associated with an updatable
  1756.      * result set.  It is essentially a buffer where a new row may
  1757.      * be constructed by calling the <code>updateXXX</code> methods prior to 
  1758.      * inserting the row into the result set.  
  1759.      *
  1760.      * Only the <code>updateXXX</code>, <code>getXXX</code>,
  1761.      * and <code>insertRow</code> methods may be 
  1762.      * called when the cursor is on the insert row.  All of the columns in 
  1763.      * a result set must be given a value each time this method is
  1764.      * called before calling <code>insertRow</code>.  
  1765.      * The method <code>updateXXX</code> must be called before a
  1766.      * <code>getXXX</code> method can be called on a column value.
  1767.      *
  1768.      * @exception SQLException if a database access error occurs
  1769.      * or the result set is not updatable
  1770.      */
  1771.     void moveToInsertRow() throws SQLException;
  1772.  
  1773.     /**
  1774.      * JDBC 2.0
  1775.      *
  1776.      * Moves the cursor to the remembered cursor position, usually the
  1777.      * current row.  This method has no effect if the cursor is not on the insert 
  1778.      * row. 
  1779.      *
  1780.      * @exception SQLException if a database access error occurs
  1781.      * or the result set is not updatable
  1782.      */
  1783.     void moveToCurrentRow() throws SQLException;
  1784.  
  1785.     /**
  1786.      * JDBC 2.0
  1787.      *
  1788.      * Returns the Statement that produced this <code>ResultSet</code> object.
  1789.      * If the result set was generated some other way, such as by a
  1790.      * <code>DatabaseMetaData</code> method, this method returns <code>null</code>.
  1791.      *
  1792.      * @return the Statment that produced the result set or
  1793.      * null if the result set was produced some other way
  1794.      * @exception SQLException if a database access error occurs
  1795.      */
  1796.     Statement getStatement() throws SQLException;
  1797.  
  1798.     /**
  1799.      * JDBC 2.0
  1800.      *
  1801.      * Returns the value of a column in the current row as a Java object.  
  1802.      * This method uses the given <code>Map</code> object
  1803.      * for the custom mapping of the
  1804.      * SQL structured or distinct type that is being retrieved.
  1805.      *
  1806.      * @param i the first column is 1, the second is 2, ...
  1807.      * @param map the mapping from SQL type names to Java classes
  1808.      * @return an object representing the SQL value
  1809.      */
  1810.     Object getObject(int i, java.util.Map map) throws SQLException;
  1811.  
  1812.     /**
  1813.      * JDBC 2.0
  1814.      *
  1815.      * Gets a REF(<structured-type>) column value from the current row.
  1816.      *
  1817.      * @param i the first column is 1, the second is 2, ...
  1818.      * @return a <code>Ref</code> object representing an SQL REF value
  1819.      */
  1820.     Ref getRef(int i) throws SQLException;
  1821.  
  1822.     /**
  1823.      * JDBC 2.0
  1824.      *
  1825.      * Gets a BLOB value in the current row of this <code>ResultSet</code> object.
  1826.      *
  1827.      * @param i the first column is 1, the second is 2, ...
  1828.      * @return a <code>Blob</code> object representing the SQL BLOB value in
  1829.      *         the specified column
  1830.      */
  1831.     Blob getBlob(int i) throws SQLException;
  1832.  
  1833.     /**
  1834.      * JDBC 2.0
  1835.      *
  1836.      * Gets a CLOB value in the current row of this <code>ResultSet</code> object.
  1837.      *
  1838.      * @param i the first column is 1, the second is 2, ...
  1839.      * @return a <code>Clob</code> object representing the SQL CLOB value in
  1840.      *         the specified column
  1841.      */
  1842.     Clob getClob(int i) throws SQLException;
  1843.  
  1844.     /**
  1845.      * JDBC 2.0
  1846.      *
  1847.      * Gets an SQL ARRAY value from the current row of this <code>ResultSet</code> object.
  1848.      *
  1849.      * @param i the first column is 1, the second is 2, ...
  1850.      * @return an <code>Array</code> object representing the SQL ARRAY value in
  1851.      *         the specified column
  1852.      */
  1853.     Array getArray(int i) throws SQLException;
  1854.  
  1855.     /**
  1856.      * JDBC 2.0
  1857.      *
  1858.      * Returns the value in the specified column as a Java object.  
  1859.      * This method uses the specified <code>Map</code> object for
  1860.      * custom mapping if appropriate.
  1861.      *
  1862.      * @param colName the name of the column from which to retrieve the value
  1863.      * @param map the mapping from SQL type names to Java classes
  1864.      * @return an object representing the SQL value in the specified column
  1865.      */
  1866.     Object getObject(String colName, java.util.Map map) throws SQLException;
  1867.  
  1868.     /**
  1869.      * JDBC 2.0
  1870.      *
  1871.      * Gets a REF(<structured-type>) column value from the current row.
  1872.      *
  1873.      * @param colName the column name
  1874.      * @return a <code>Ref</code> object representing the SQL REF value in
  1875.      *         the specified column
  1876.      */
  1877.     Ref getRef(String colName) throws SQLException;
  1878.  
  1879.     /**
  1880.      * JDBC 2.0
  1881.      *
  1882.      * Gets a BLOB value in the current row of this <code>ResultSet</code> object.
  1883.      *
  1884.      * @param colName the name of the column from which to retrieve the value
  1885.      * @return a <code>Blob</code> object representing the SQL BLOB value in
  1886.      *         the specified column
  1887.      */
  1888.     Blob getBlob(String colName) throws SQLException;
  1889.  
  1890.     /**
  1891.      * JDBC 2.0
  1892.      *
  1893.      * Gets a CLOB value in the current row of this <code>ResultSet</code> object.
  1894.      *
  1895.      * @param colName the name of the column from which to retrieve the value
  1896.      * @return a <code>Clob</code> object representing the SQL CLOB value in
  1897.      *         the specified column
  1898.      */
  1899.     Clob getClob(String colName) throws SQLException;
  1900.  
  1901.     /**
  1902.      * JDBC 2.0
  1903.      *
  1904.      * Gets an SQL ARRAY value in the current row of this <code>ResultSet</code> object.
  1905.      *
  1906.      * @param colName the name of the column from which to retrieve the value
  1907.      * @return an <code>Array</code> object representing the SQL ARRAY value in
  1908.      *         the specified column
  1909.      */
  1910.     Array getArray(String colName) throws SQLException;
  1911.  
  1912.     /**
  1913.      * JDBC 2.0
  1914.      *
  1915.      * Gets the value of a column in the current row as a java.sql.Date 
  1916.      * object. This method uses the given calendar to construct an appropriate millisecond
  1917.      * value for the Date if the underlying database does not store
  1918.      * timezone information.
  1919.      *
  1920.      * @param columnIndex the first column is 1, the second is 2, ...
  1921.      * @param cal the calendar to use in constructing the date
  1922.      * @return the column value; if the value is SQL NULL, the result is null
  1923.      * @exception SQLException if a database access error occurs
  1924.      */
  1925.     java.sql.Date getDate(int columnIndex, Calendar cal) throws SQLException;
  1926.  
  1927.     /**
  1928.      * Gets the value of a column in the current row as a java.sql.Date 
  1929.      * object. This method uses the given calendar to construct an appropriate millisecond
  1930.      * value for the Date, if the underlying database does not store
  1931.      * timezone information.
  1932.      *
  1933.      * @param columnName the SQL name of the column from which to retrieve the value
  1934.      * @param cal the calendar to use in constructing the date
  1935.      * @return the column value; if the value is SQL NULL, the result is null
  1936.      * @exception SQLException if a database access error occurs
  1937.      */
  1938.     java.sql.Date getDate(String columnName, Calendar cal) throws SQLException;
  1939.  
  1940.     /**
  1941.      * Gets the value of a column in the current row as a java.sql.Time 
  1942.      * object. This method uses the given calendar to construct an appropriate millisecond
  1943.      * value for the Time if the underlying database does not store
  1944.      * timezone information.
  1945.      *
  1946.      * @param columnIndex the first column is 1, the second is 2, ...
  1947.      * @param cal the calendar to use in constructing the time
  1948.      * @return the column value; if the value is SQL NULL, the result is null
  1949.      * @exception SQLException if a database access error occurs
  1950.      */
  1951.     java.sql.Time getTime(int columnIndex, Calendar cal) throws SQLException;
  1952.  
  1953.     /**
  1954.      * Gets the value of a column in the current row as a java.sql.Time 
  1955.      * object. This method uses the given calendar to construct an appropriate millisecond
  1956.      * value for the Time if the underlying database does not store
  1957.      * timezone information.
  1958.      *
  1959.      * @param columnName the SQL name of the column
  1960.      * @param cal the calendar to use in constructing the time
  1961.      * @return the column value; if the value is SQL NULL, the result is null
  1962.      * @exception SQLException if a database access error occurs
  1963.      */
  1964.     java.sql.Time getTime(String columnName, Calendar cal) throws SQLException;
  1965.  
  1966.     /**
  1967.      * Gets the value of a column in the current row as a java.sql.Timestamp 
  1968.      * object. This method uses the given calendar to construct an appropriate millisecond
  1969.      * value for the Timestamp if the underlying database does not store
  1970.      * timezone information.
  1971.      *
  1972.      * @param columnIndex the first column is 1, the second is 2, ...
  1973.      * @param cal the calendar to use in constructing the timestamp
  1974.      * @return the column value; if the value is SQL NULL, the result is null
  1975.      * @exception SQLException if a database access error occurs
  1976.      */
  1977.     java.sql.Timestamp getTimestamp(int columnIndex, Calendar cal) 
  1978.       throws SQLException;
  1979.  
  1980.     /**
  1981.      * Gets the value of a column in the current row as a java.sql.Timestamp 
  1982.      * object. This method uses the given calendar to construct an appropriate millisecond
  1983.      * value for the Timestamp if the underlying database does not store
  1984.      * timezone information.
  1985.      *
  1986.      * @param columnName the SQL name of the column
  1987.      * @param cal the calendar to use in constructing the timestamp
  1988.      * @return the column value; if the value is SQL NULL, the result is null
  1989.      * @exception SQLException if a database access error occurs
  1990.      */
  1991.     java.sql.Timestamp getTimestamp(String columnName, Calendar cal)    
  1992.       throws SQLException;
  1993. }
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004.