src/java.sql/share/classes/javax/sql/RowSet.java
changeset 47216 71c04702a3d5
parent 32010 d9955e832a3f
equal deleted inserted replaced
47215:4ebc2e2fb97c 47216:71c04702a3d5
       
     1 /*
       
     2  * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.  Oracle designates this
       
     8  * particular file as subject to the "Classpath" exception as provided
       
     9  * by Oracle in the LICENSE file that accompanied this code.
       
    10  *
       
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    14  * version 2 for more details (a copy is included in the LICENSE file that
       
    15  * accompanied this code).
       
    16  *
       
    17  * You should have received a copy of the GNU General Public License version
       
    18  * 2 along with this work; if not, write to the Free Software Foundation,
       
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    20  *
       
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    22  * or visit www.oracle.com if you need additional information or have any
       
    23  * questions.
       
    24  */
       
    25 
       
    26 package javax.sql;
       
    27 
       
    28 import java.sql.*;
       
    29 import java.io.*;
       
    30 import java.math.*;
       
    31 import java.util.*;
       
    32 
       
    33 /**
       
    34  * The interface that adds support to the JDBC API for the
       
    35  * JavaBeans™ component model.
       
    36  * A rowset, which can be used as a JavaBeans component in
       
    37  * a visual Bean development environment, can be created and
       
    38  * configured at design time and executed at run time.
       
    39  * <P>
       
    40  * The <code>RowSet</code>
       
    41  * interface provides a set of JavaBeans properties that allow a <code>RowSet</code>
       
    42  * instance to be configured to connect to a JDBC data source and read
       
    43  * some data from the data source.  A group of setter methods (<code>setInt</code>,
       
    44  * <code>setBytes</code>, <code>setString</code>, and so on)
       
    45  * provide a way to pass input parameters to a rowset's command property.
       
    46  * This command is the SQL query the rowset uses when it gets its data from
       
    47  * a relational database, which is generally the case.
       
    48  * <P>
       
    49  * The <code>RowSet</code>
       
    50  * interface supports JavaBeans events, allowing other components in an
       
    51  * application to be notified when an event occurs on a rowset,
       
    52  * such as a change in its value.
       
    53  *
       
    54  * <P>The <code>RowSet</code> interface is unique in that it is intended to be
       
    55  * implemented using the rest of the JDBC API.  In other words, a
       
    56  * <code>RowSet</code> implementation is a layer of software that executes "on top"
       
    57  * of a JDBC driver.  Implementations of the <code>RowSet</code> interface can
       
    58  * be provided by anyone, including JDBC driver vendors who want to
       
    59  * provide a <code>RowSet</code> implementation as part of their JDBC products.
       
    60  * <P>
       
    61  * A <code>RowSet</code> object may make a connection with a data source and
       
    62  * maintain that connection throughout its life cycle, in which case it is
       
    63  * called a <i>connected</i> rowset.  A rowset may also make a connection with
       
    64  * a data source, get data from it, and then close the connection. Such a rowset
       
    65  * is called a <i>disconnected</i> rowset.  A disconnected rowset may make
       
    66  * changes to its data while it is disconnected and then send the changes back
       
    67  * to the original source of the data, but it must reestablish a connection to do so.
       
    68  * <P>
       
    69  * A disconnected rowset may have a {@code Reader} (a <code>RowSetReader</code> object)
       
    70  * and a writer (a <code>RowSetWriter</code> object) associated with it.
       
    71  * The {@code Reader} may be implemented in many different ways to populate a rowset
       
    72  * with data, including getting data from a non-relational data source. The
       
    73  * writer can also be implemented in many different ways to propagate changes
       
    74  * made to the rowset's data back to the underlying data source.
       
    75  * <P>
       
    76  * Rowsets are easy to use.  The <code>RowSet</code> interface extends the standard
       
    77  * <code>java.sql.ResultSet</code> interface.  The <code>RowSetMetaData</code>
       
    78  * interface extends the <code>java.sql.ResultSetMetaData</code> interface.
       
    79  * Thus, developers familiar
       
    80  * with the JDBC API will have to learn a minimal number of new APIs to
       
    81  * use rowsets.  In addition, third-party software tools that work with
       
    82  * JDBC <code>ResultSet</code> objects will also easily be made to work with rowsets.
       
    83  *
       
    84  * @since 1.4
       
    85  */
       
    86 
       
    87 public interface RowSet extends ResultSet {
       
    88 
       
    89   //-----------------------------------------------------------------------
       
    90   // Properties
       
    91   //-----------------------------------------------------------------------
       
    92 
       
    93   //-----------------------------------------------------------------------
       
    94   // The following properties may be used to create a Connection.
       
    95   //-----------------------------------------------------------------------
       
    96 
       
    97   /**
       
    98    * Retrieves the url property this <code>RowSet</code> object will use to
       
    99    * create a connection if it uses the <code>DriverManager</code>
       
   100    * instead of a <code>DataSource</code> object to establish the connection.
       
   101    * The default value is <code>null</code>.
       
   102    *
       
   103    * @return a string url
       
   104    * @exception SQLException if a database access error occurs
       
   105    * @see #setUrl
       
   106    */
       
   107   String getUrl() throws SQLException;
       
   108 
       
   109   /**
       
   110    * Sets the URL this <code>RowSet</code> object will use when it uses the
       
   111    * <code>DriverManager</code> to create a connection.
       
   112    *
       
   113    * Setting this property is optional.  If a URL is used, a JDBC driver
       
   114    * that accepts the URL must be loaded before the
       
   115    * rowset is used to connect to a database.  The rowset will use the URL
       
   116    * internally to create a database connection when reading or writing
       
   117    * data.  Either a URL or a data source name is used to create a
       
   118    * connection, whichever was set to non null value most recently.
       
   119    *
       
   120    * @param url a string value; may be <code>null</code>
       
   121    * @exception SQLException if a database access error occurs
       
   122    * @see #getUrl
       
   123    */
       
   124   void setUrl(String url) throws SQLException;
       
   125 
       
   126   /**
       
   127    * Retrieves the logical name that identifies the data source for this
       
   128    * <code>RowSet</code> object.
       
   129    *
       
   130    * @return a data source name
       
   131    * @see #setDataSourceName
       
   132    * @see #setUrl
       
   133    */
       
   134   String getDataSourceName();
       
   135 
       
   136   /**
       
   137    * Sets the data source name property for this <code>RowSet</code> object to the
       
   138    * given <code>String</code>.
       
   139    * <P>
       
   140    * The value of the data source name property can be used to do a lookup of
       
   141    * a <code>DataSource</code> object that has been registered with a naming
       
   142    * service.  After being retrieved, the <code>DataSource</code> object can be
       
   143    * used to create a connection to the data source that it represents.
       
   144    *
       
   145    * @param name the logical name of the data source for this <code>RowSet</code>
       
   146    *        object; may be <code>null</code>
       
   147    * @exception SQLException if a database access error occurs
       
   148    * @see #getDataSourceName
       
   149    */
       
   150   void setDataSourceName(String name) throws SQLException;
       
   151 
       
   152   /**
       
   153    * Retrieves the username used to create a database connection for this
       
   154    * <code>RowSet</code> object.
       
   155    * The username property is set at run time before calling the method
       
   156    * <code>execute</code>.  It is
       
   157    * not usually part of the serialized state of a <code>RowSet</code> object.
       
   158    *
       
   159    * @return the username property
       
   160    * @see #setUsername
       
   161    */
       
   162   String getUsername();
       
   163 
       
   164   /**
       
   165    * Sets the username property for this <code>RowSet</code> object to the
       
   166    * given <code>String</code>.
       
   167    *
       
   168    * @param name a user name
       
   169    * @exception SQLException if a database access error occurs
       
   170    * @see #getUsername
       
   171    */
       
   172   void setUsername(String name) throws SQLException;
       
   173 
       
   174   /**
       
   175    * Retrieves the password used to create a database connection.
       
   176    * The password property is set at run time before calling the method
       
   177    * <code>execute</code>.  It is not usually part of the serialized state
       
   178    * of a <code>RowSet</code> object.
       
   179    *
       
   180    * @return the password for making a database connection
       
   181    * @see #setPassword
       
   182    */
       
   183   String getPassword();
       
   184 
       
   185   /**
       
   186    * Sets the database password for this <code>RowSet</code> object to
       
   187    * the given <code>String</code>.
       
   188    *
       
   189    * @param password the password string
       
   190    * @exception SQLException if a database access error occurs
       
   191    * @see #getPassword
       
   192    */
       
   193   void setPassword(String password) throws SQLException;
       
   194 
       
   195   /**
       
   196    * Retrieves the transaction isolation level set for this
       
   197    * <code>RowSet</code> object.
       
   198    *
       
   199    * @return the transaction isolation level; one of
       
   200    *      <code>Connection.TRANSACTION_READ_UNCOMMITTED</code>,
       
   201    *      <code>Connection.TRANSACTION_READ_COMMITTED</code>,
       
   202    *      <code>Connection.TRANSACTION_REPEATABLE_READ</code>, or
       
   203    *      <code>Connection.TRANSACTION_SERIALIZABLE</code>
       
   204    * @see #setTransactionIsolation
       
   205    */
       
   206   int getTransactionIsolation();
       
   207 
       
   208   /**
       
   209    * Sets the transaction isolation level for this <code>RowSet</code> object.
       
   210    *
       
   211    * @param level the transaction isolation level; one of
       
   212    *      <code>Connection.TRANSACTION_READ_UNCOMMITTED</code>,
       
   213    *      <code>Connection.TRANSACTION_READ_COMMITTED</code>,
       
   214    *      <code>Connection.TRANSACTION_REPEATABLE_READ</code>, or
       
   215    *      <code>Connection.TRANSACTION_SERIALIZABLE</code>
       
   216    * @exception SQLException if a database access error occurs
       
   217    * @see #getTransactionIsolation
       
   218    */
       
   219   void setTransactionIsolation(int level) throws SQLException;
       
   220 
       
   221   /**
       
   222    * Retrieves the <code>Map</code> object associated with this
       
   223    * <code>RowSet</code> object, which specifies the custom mapping
       
   224    * of SQL user-defined types, if any.  The default is for the
       
   225    * type map to be empty.
       
   226    *
       
   227    * @return a <code>java.util.Map</code> object containing the names of
       
   228    *         SQL user-defined types and the Java classes to which they are
       
   229    *         to be mapped
       
   230    *
       
   231    * @exception SQLException if a database access error occurs
       
   232    * @see #setTypeMap
       
   233    */
       
   234    java.util.Map<String,Class<?>> getTypeMap() throws SQLException;
       
   235 
       
   236   /**
       
   237    * Installs the given <code>java.util.Map</code> object as the default
       
   238    * type map for this <code>RowSet</code> object. This type map will be
       
   239    * used unless another type map is supplied as a method parameter.
       
   240    *
       
   241    * @param map  a <code>java.util.Map</code> object containing the names of
       
   242    *         SQL user-defined types and the Java classes to which they are
       
   243    *         to be mapped
       
   244    * @exception SQLException if a database access error occurs
       
   245    * @see #getTypeMap
       
   246    */
       
   247    void setTypeMap(java.util.Map<String,Class<?>> map) throws SQLException;
       
   248 
       
   249   //-----------------------------------------------------------------------
       
   250   // The following properties may be used to create a Statement.
       
   251   //-----------------------------------------------------------------------
       
   252 
       
   253   /**
       
   254    * Retrieves this <code>RowSet</code> object's command property.
       
   255    *
       
   256    * The command property contains a command string, which must be an SQL
       
   257    * query, that can be executed to fill the rowset with data.
       
   258    * The default value is <code>null</code>.
       
   259    *
       
   260    * @return the command string; may be <code>null</code>
       
   261    * @see #setCommand
       
   262    */
       
   263   String getCommand();
       
   264 
       
   265   /**
       
   266    * Sets this <code>RowSet</code> object's command property to the given
       
   267    * SQL query.
       
   268    *
       
   269    * This property is optional
       
   270    * when a rowset gets its data from a data source that does not support
       
   271    * commands, such as a spreadsheet.
       
   272    *
       
   273    * @param cmd the SQL query that will be used to get the data for this
       
   274    *        <code>RowSet</code> object; may be <code>null</code>
       
   275    * @exception SQLException if a database access error occurs
       
   276    * @see #getCommand
       
   277    */
       
   278   void setCommand(String cmd) throws SQLException;
       
   279 
       
   280   /**
       
   281    * Retrieves whether this <code>RowSet</code> object is read-only.
       
   282    * If updates are possible, the default is for a rowset to be
       
   283    * updatable.
       
   284    * <P>
       
   285    * Attempts to update a read-only rowset will result in an
       
   286    * <code>SQLException</code> being thrown.
       
   287    *
       
   288    * @return <code>true</code> if this <code>RowSet</code> object is
       
   289    *         read-only; <code>false</code> if it is updatable
       
   290    * @see #setReadOnly
       
   291    */
       
   292   boolean isReadOnly();
       
   293 
       
   294   /**
       
   295    * Sets whether this <code>RowSet</code> object is read-only to the
       
   296    * given <code>boolean</code>.
       
   297    *
       
   298    * @param value <code>true</code> if read-only; <code>false</code> if
       
   299    *        updatable
       
   300    * @exception SQLException if a database access error occurs
       
   301    * @see #isReadOnly
       
   302    */
       
   303   void setReadOnly(boolean value) throws SQLException;
       
   304 
       
   305   /**
       
   306    * Retrieves the maximum number of bytes that may be returned
       
   307    * for certain column values.
       
   308    * This limit applies only to <code>BINARY</code>,
       
   309    * <code>VARBINARY</code>, <code>LONGVARBINARYBINARY</code>, <code>CHAR</code>,
       
   310    * <code>VARCHAR</code>, <code>LONGVARCHAR</code>, <code>NCHAR</code>
       
   311    * and <code>NVARCHAR</code> columns.
       
   312    * If the limit is exceeded, the excess data is silently discarded.
       
   313    *
       
   314    * @return the current maximum column size limit; zero means that there
       
   315    *          is no limit
       
   316    * @exception SQLException if a database access error occurs
       
   317    * @see #setMaxFieldSize
       
   318    */
       
   319   int getMaxFieldSize() throws SQLException;
       
   320 
       
   321   /**
       
   322    * Sets the maximum number of bytes that can be returned for a column
       
   323    * value to the given number of bytes.
       
   324    * This limit applies only to <code>BINARY</code>,
       
   325    * <code>VARBINARY</code>, <code>LONGVARBINARYBINARY</code>, <code>CHAR</code>,
       
   326    * <code>VARCHAR</code>, <code>LONGVARCHAR</code>, <code>NCHAR</code>
       
   327    * and <code>NVARCHAR</code> columns.
       
   328    * If the limit is exceeded, the excess data is silently discarded.
       
   329    * For maximum portability, use values greater than 256.
       
   330    *
       
   331    * @param max the new max column size limit in bytes; zero means unlimited
       
   332    * @exception SQLException if a database access error occurs
       
   333    * @see #getMaxFieldSize
       
   334    */
       
   335   void setMaxFieldSize(int max) throws SQLException;
       
   336 
       
   337   /**
       
   338    * Retrieves the maximum number of rows that this <code>RowSet</code>
       
   339    * object can contain.
       
   340    * If the limit is exceeded, the excess rows are silently dropped.
       
   341    *
       
   342    * @return the current maximum number of rows that this <code>RowSet</code>
       
   343    *         object can contain; zero means unlimited
       
   344    * @exception SQLException if a database access error occurs
       
   345    * @see #setMaxRows
       
   346    */
       
   347   int getMaxRows() throws SQLException;
       
   348 
       
   349   /**
       
   350    * Sets the maximum number of rows that this <code>RowSet</code>
       
   351    * object can contain to the specified number.
       
   352    * If the limit is exceeded, the excess rows are silently dropped.
       
   353    *
       
   354    * @param max the new maximum number of rows; zero means unlimited
       
   355    * @exception SQLException if a database access error occurs
       
   356    * @see #getMaxRows
       
   357    */
       
   358   void setMaxRows(int max) throws SQLException;
       
   359 
       
   360   /**
       
   361    * Retrieves whether escape processing is enabled for this
       
   362    * <code>RowSet</code> object.
       
   363    * If escape scanning is enabled, which is the default, the driver will do
       
   364    * escape substitution before sending an SQL statement to the database.
       
   365    *
       
   366    * @return <code>true</code> if escape processing is enabled;
       
   367    *         <code>false</code> if it is disabled
       
   368    * @exception SQLException if a database access error occurs
       
   369    * @see #setEscapeProcessing
       
   370    */
       
   371   boolean getEscapeProcessing() throws SQLException;
       
   372 
       
   373   /**
       
   374    * Sets escape processing for this <code>RowSet</code> object on or
       
   375    * off. If escape scanning is on (the default), the driver will do
       
   376    * escape substitution before sending an SQL statement to the database.
       
   377    *
       
   378    * @param enable <code>true</code> to enable escape processing;
       
   379    *        <code>false</code> to disable it
       
   380    * @exception SQLException if a database access error occurs
       
   381    * @see #getEscapeProcessing
       
   382    */
       
   383   void setEscapeProcessing(boolean enable) throws SQLException;
       
   384 
       
   385   /**
       
   386    * Retrieves the maximum number of seconds the driver will wait for
       
   387    * a statement to execute.
       
   388    * If this limit is exceeded, an <code>SQLException</code> is thrown.
       
   389    *
       
   390    * @return the current query timeout limit in seconds; zero means
       
   391    *          unlimited
       
   392    * @exception SQLException if a database access error occurs
       
   393    * @see #setQueryTimeout
       
   394    */
       
   395   int getQueryTimeout() throws SQLException;
       
   396 
       
   397   /**
       
   398    * Sets the maximum time the driver will wait for
       
   399    * a statement to execute to the given number of seconds.
       
   400    * If this limit is exceeded, an <code>SQLException</code> is thrown.
       
   401    *
       
   402    * @param seconds the new query timeout limit in seconds; zero means
       
   403    *        that there is no limit
       
   404    * @exception SQLException if a database access error occurs
       
   405    * @see #getQueryTimeout
       
   406    */
       
   407   void setQueryTimeout(int seconds) throws SQLException;
       
   408 
       
   409   /**
       
   410    * Sets the type of this <code>RowSet</code> object to the given type.
       
   411    * This method is used to change the type of a rowset, which is by
       
   412    * default read-only and non-scrollable.
       
   413    *
       
   414    * @param type one of the <code>ResultSet</code> constants specifying a type:
       
   415    *        <code>ResultSet.TYPE_FORWARD_ONLY</code>,
       
   416    *        <code>ResultSet.TYPE_SCROLL_INSENSITIVE</code>, or
       
   417    *        <code>ResultSet.TYPE_SCROLL_SENSITIVE</code>
       
   418    * @exception SQLException if a database access error occurs
       
   419    * @see java.sql.ResultSet#getType
       
   420    */
       
   421   void setType(int type) throws SQLException;
       
   422 
       
   423   /**
       
   424    * Sets the concurrency of this <code>RowSet</code> object to the given
       
   425    * concurrency level. This method is used to change the concurrency level
       
   426    * of a rowset, which is by default <code>ResultSet.CONCUR_READ_ONLY</code>
       
   427    *
       
   428    * @param concurrency one of the <code>ResultSet</code> constants specifying a
       
   429    *        concurrency level:  <code>ResultSet.CONCUR_READ_ONLY</code> or
       
   430    *        <code>ResultSet.CONCUR_UPDATABLE</code>
       
   431    * @exception SQLException if a database access error occurs
       
   432    * @see ResultSet#getConcurrency
       
   433    */
       
   434   void setConcurrency(int concurrency) throws SQLException;
       
   435 
       
   436   //-----------------------------------------------------------------------
       
   437   // Parameters
       
   438   //-----------------------------------------------------------------------
       
   439 
       
   440   /**
       
   441    * The <code>RowSet</code> setter methods are used to set any input parameters
       
   442    * needed by the <code>RowSet</code> object's command.
       
   443    * Parameters are set at run time, as opposed to design time.
       
   444    */
       
   445 
       
   446   /**
       
   447    * Sets the designated parameter in this <code>RowSet</code> object's SQL
       
   448    * command to SQL <code>NULL</code>.
       
   449    *
       
   450    * <P><B>Note:</B> You must specify the parameter's SQL type.
       
   451    *
       
   452    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   453    * @param sqlType a SQL type code defined by <code>java.sql.Types</code>
       
   454    * @exception SQLException if a database access error occurs
       
   455    */
       
   456   void setNull(int parameterIndex, int sqlType) throws SQLException;
       
   457 
       
   458   /**
       
   459      * Sets the designated parameter to SQL <code>NULL</code>.
       
   460      *
       
   461      * <P><B>Note:</B> You must specify the parameter's SQL type.
       
   462      *
       
   463      * @param parameterName the name of the parameter
       
   464      * @param sqlType the SQL type code defined in <code>java.sql.Types</code>
       
   465      * @exception SQLException if a database access error occurs or
       
   466      * this method is called on a closed <code>CallableStatement</code>
       
   467      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   468      * this method
       
   469      * @since 1.4
       
   470      */
       
   471     void setNull(String parameterName, int sqlType) throws SQLException;
       
   472 
       
   473   /**
       
   474    * Sets the designated parameter in this <code>RowSet</code> object's SQL
       
   475    * command to SQL <code>NULL</code>. This version of the method <code>setNull</code>
       
   476    * should  be used for SQL user-defined types (UDTs) and <code>REF</code> type
       
   477    * parameters.  Examples of UDTs include: <code>STRUCT</code>, <code>DISTINCT</code>,
       
   478    * <code>JAVA_OBJECT</code>, and named array types.
       
   479    *
       
   480    * <P><B>Note:</B> To be portable, applications must give the
       
   481    * SQL type code and the fully qualified SQL type name when specifying
       
   482    * a NULL UDT or <code>REF</code> parameter.  In the case of a UDT,
       
   483    * the name is the type name of the parameter itself.  For a <code>REF</code>
       
   484    * parameter, the name is the type name of the referenced type.  If
       
   485    * a JDBC driver does not need the type code or type name information,
       
   486    * it may ignore it.
       
   487    *
       
   488    * Although it is intended for UDT and <code>REF</code> parameters,
       
   489    * this method may be used to set a null parameter of any JDBC type.
       
   490    * If the parameter does not have a user-defined or <code>REF</code> type,
       
   491    * the typeName parameter is ignored.
       
   492    *
       
   493    *
       
   494    * @param paramIndex the first parameter is 1, the second is 2, ...
       
   495    * @param sqlType a value from <code>java.sql.Types</code>
       
   496    * @param typeName the fully qualified name of an SQL UDT or the type
       
   497    *        name of the SQL structured type being referenced by a <code>REF</code>
       
   498    *        type; ignored if the parameter is not a UDT or <code>REF</code> type
       
   499    * @exception SQLException if a database access error occurs
       
   500    */
       
   501   void setNull (int paramIndex, int sqlType, String typeName)
       
   502     throws SQLException;
       
   503 
       
   504   /**
       
   505      * Sets the designated parameter to SQL <code>NULL</code>.
       
   506      * This version of the method <code>setNull</code> should
       
   507      * be used for user-defined types and REF type parameters.  Examples
       
   508      * of user-defined types include: STRUCT, DISTINCT, JAVA_OBJECT, and
       
   509      * named array types.
       
   510      *
       
   511      * <P><B>Note:</B> To be portable, applications must give the
       
   512      * SQL type code and the fully-qualified SQL type name when specifying
       
   513      * a NULL user-defined or REF parameter.  In the case of a user-defined type
       
   514      * the name is the type name of the parameter itself.  For a REF
       
   515      * parameter, the name is the type name of the referenced type.  If
       
   516      * a JDBC driver does not need the type code or type name information,
       
   517      * it may ignore it.
       
   518      *
       
   519      * Although it is intended for user-defined and Ref parameters,
       
   520      * this method may be used to set a null parameter of any JDBC type.
       
   521      * If the parameter does not have a user-defined or REF type, the given
       
   522      * typeName is ignored.
       
   523      *
       
   524      *
       
   525      * @param parameterName the name of the parameter
       
   526      * @param sqlType a value from <code>java.sql.Types</code>
       
   527      * @param typeName the fully-qualified name of an SQL user-defined type;
       
   528      *        ignored if the parameter is not a user-defined type or
       
   529      *        SQL <code>REF</code> value
       
   530      * @exception SQLException if a database access error occurs or
       
   531      * this method is called on a closed <code>CallableStatement</code>
       
   532      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   533      * this method
       
   534      * @since 1.4
       
   535      */
       
   536     void setNull (String parameterName, int sqlType, String typeName)
       
   537         throws SQLException;
       
   538 
       
   539   /**
       
   540    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   541    * to the given Java <code>boolean</code> value. The driver converts this to
       
   542    * an SQL <code>BIT</code> value before sending it to the database.
       
   543    *
       
   544    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   545    * @param x the parameter value
       
   546    * @exception SQLException if a database access error occurs
       
   547    */
       
   548   void setBoolean(int parameterIndex, boolean x) throws SQLException;
       
   549 
       
   550   /**
       
   551      * Sets the designated parameter to the given Java <code>boolean</code> value.
       
   552      * The driver converts this
       
   553      * to an SQL <code>BIT</code> or <code>BOOLEAN</code> value when it sends it to the database.
       
   554      *
       
   555      * @param parameterName the name of the parameter
       
   556      * @param x the parameter value
       
   557      * @exception SQLException if a database access error occurs or
       
   558      * this method is called on a closed <code>CallableStatement</code>
       
   559      * @see #getBoolean
       
   560      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   561      * this method
       
   562      * @since 1.4
       
   563      */
       
   564     void setBoolean(String parameterName, boolean x) throws SQLException;
       
   565 
       
   566   /**
       
   567    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   568    * to the given Java <code>byte</code> value. The driver converts this to
       
   569    * an SQL <code>TINYINT</code> value before sending it to the database.
       
   570    *
       
   571    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   572    * @param x the parameter value
       
   573    * @exception SQLException if a database access error occurs
       
   574    */
       
   575   void setByte(int parameterIndex, byte x) throws SQLException;
       
   576 
       
   577   /**
       
   578      * Sets the designated parameter to the given Java <code>byte</code> value.
       
   579      * The driver converts this
       
   580      * to an SQL <code>TINYINT</code> value when it sends it to the database.
       
   581      *
       
   582      * @param parameterName the name of the parameter
       
   583      * @param x the parameter value
       
   584      * @exception SQLException if a database access error occurs or
       
   585      * this method is called on a closed <code>CallableStatement</code>
       
   586      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   587      * this method
       
   588      * @see #getByte
       
   589      * @since 1.4
       
   590      */
       
   591     void setByte(String parameterName, byte x) throws SQLException;
       
   592 
       
   593   /**
       
   594    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   595    * to the given Java <code>short</code> value. The driver converts this to
       
   596    * an SQL <code>SMALLINT</code> value before sending it to the database.
       
   597    *
       
   598    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   599    * @param x the parameter value
       
   600    * @exception SQLException if a database access error occurs
       
   601    */
       
   602   void setShort(int parameterIndex, short x) throws SQLException;
       
   603 
       
   604   /**
       
   605      * Sets the designated parameter to the given Java <code>short</code> value.
       
   606      * The driver converts this
       
   607      * to an SQL <code>SMALLINT</code> value when it sends it to the database.
       
   608      *
       
   609      * @param parameterName the name of the parameter
       
   610      * @param x the parameter value
       
   611      * @exception SQLException if a database access error occurs or
       
   612      * this method is called on a closed <code>CallableStatement</code>
       
   613      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   614      * this method
       
   615      * @see #getShort
       
   616      * @since 1.4
       
   617      */
       
   618     void setShort(String parameterName, short x) throws SQLException;
       
   619 
       
   620   /**
       
   621    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   622    * to the given Java <code>int</code> value. The driver converts this to
       
   623    * an SQL <code>INTEGER</code> value before sending it to the database.
       
   624    *
       
   625    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   626    * @param x the parameter value
       
   627    * @exception SQLException if a database access error occurs
       
   628    */
       
   629   void setInt(int parameterIndex, int x) throws SQLException;
       
   630 
       
   631   /**
       
   632      * Sets the designated parameter to the given Java <code>int</code> value.
       
   633      * The driver converts this
       
   634      * to an SQL <code>INTEGER</code> value when it sends it to the database.
       
   635      *
       
   636      * @param parameterName the name of the parameter
       
   637      * @param x the parameter value
       
   638      * @exception SQLException if a database access error occurs or
       
   639      * this method is called on a closed <code>CallableStatement</code>
       
   640      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   641      * this method
       
   642      * @see #getInt
       
   643      * @since 1.4
       
   644      */
       
   645     void setInt(String parameterName, int x) throws SQLException;
       
   646 
       
   647   /**
       
   648    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   649    * to the given Java <code>long</code> value. The driver converts this to
       
   650    * an SQL <code>BIGINT</code> value before sending it to the database.
       
   651    *
       
   652    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   653    * @param x the parameter value
       
   654    * @exception SQLException if a database access error occurs
       
   655    */
       
   656   void setLong(int parameterIndex, long x) throws SQLException;
       
   657 
       
   658   /**
       
   659      * Sets the designated parameter to the given Java <code>long</code> value.
       
   660      * The driver converts this
       
   661      * to an SQL <code>BIGINT</code> value when it sends it to the database.
       
   662      *
       
   663      * @param parameterName the name of the parameter
       
   664      * @param x the parameter value
       
   665      * @exception SQLException if a database access error occurs or
       
   666      * this method is called on a closed <code>CallableStatement</code>
       
   667      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   668      * this method
       
   669      * @see #getLong
       
   670      * @since 1.4
       
   671      */
       
   672     void setLong(String parameterName, long x) throws SQLException;
       
   673 
       
   674   /**
       
   675    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   676    * to the given Java <code>float</code> value. The driver converts this to
       
   677    * an SQL <code>REAL</code> value before sending it to the database.
       
   678    *
       
   679    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   680    * @param x the parameter value
       
   681    * @exception SQLException if a database access error occurs
       
   682    */
       
   683   void setFloat(int parameterIndex, float x) throws SQLException;
       
   684 
       
   685   /**
       
   686      * Sets the designated parameter to the given Java <code>float</code> value.
       
   687      * The driver converts this
       
   688      * to an SQL <code>FLOAT</code> value when it sends it to the database.
       
   689      *
       
   690      * @param parameterName the name of the parameter
       
   691      * @param x the parameter value
       
   692      * @exception SQLException if a database access error occurs or
       
   693      * this method is called on a closed <code>CallableStatement</code>
       
   694      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   695      * this method
       
   696      * @see #getFloat
       
   697      * @since 1.4
       
   698      */
       
   699     void setFloat(String parameterName, float x) throws SQLException;
       
   700 
       
   701   /**
       
   702    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   703    * to the given Java <code>double</code> value. The driver converts this to
       
   704    * an SQL <code>DOUBLE</code> value before sending it to the database.
       
   705    *
       
   706    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   707    * @param x the parameter value
       
   708    * @exception SQLException if a database access error occurs
       
   709    */
       
   710   void setDouble(int parameterIndex, double x) throws SQLException;
       
   711 
       
   712   /**
       
   713      * Sets the designated parameter to the given Java <code>double</code> value.
       
   714      * The driver converts this
       
   715      * to an SQL <code>DOUBLE</code> value when it sends it to the database.
       
   716      *
       
   717      * @param parameterName the name of the parameter
       
   718      * @param x the parameter value
       
   719      * @exception SQLException if a database access error occurs or
       
   720      * this method is called on a closed <code>CallableStatement</code>
       
   721      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   722      * this method
       
   723      * @see #getDouble
       
   724      * @since 1.4
       
   725      */
       
   726     void setDouble(String parameterName, double x) throws SQLException;
       
   727 
       
   728   /**
       
   729    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   730    * to the given {@code java.math.BigDecimal} value.
       
   731    * The driver converts this to
       
   732    * an SQL <code>NUMERIC</code> value before sending it to the database.
       
   733    *
       
   734    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   735    * @param x the parameter value
       
   736    * @exception SQLException if a database access error occurs
       
   737    */
       
   738   void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException;
       
   739 
       
   740   /**
       
   741      * Sets the designated parameter to the given
       
   742      * <code>java.math.BigDecimal</code> value.
       
   743      * The driver converts this to an SQL <code>NUMERIC</code> value when
       
   744      * it sends it to the database.
       
   745      *
       
   746      * @param parameterName the name of the parameter
       
   747      * @param x the parameter value
       
   748      * @exception SQLException if a database access error occurs or
       
   749      * this method is called on a closed <code>CallableStatement</code>
       
   750      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   751      * this method
       
   752      * @see #getBigDecimal
       
   753      * @since 1.4
       
   754      */
       
   755     void setBigDecimal(String parameterName, BigDecimal x) throws SQLException;
       
   756 
       
   757   /**
       
   758    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   759    * to the given Java <code>String</code> value. Before sending it to the
       
   760    * database, the driver converts this to an SQL <code>VARCHAR</code> or
       
   761    * <code>LONGVARCHAR</code> value, depending on the argument's size relative
       
   762    * to the driver's limits on <code>VARCHAR</code> values.
       
   763    *
       
   764    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   765    * @param x the parameter value
       
   766    * @exception SQLException if a database access error occurs
       
   767    */
       
   768   void setString(int parameterIndex, String x) throws SQLException;
       
   769 
       
   770   /**
       
   771      * Sets the designated parameter to the given Java <code>String</code> value.
       
   772      * The driver converts this
       
   773      * to an SQL <code>VARCHAR</code> or <code>LONGVARCHAR</code> value
       
   774      * (depending on the argument's
       
   775      * size relative to the driver's limits on <code>VARCHAR</code> values)
       
   776      * when it sends it to the database.
       
   777      *
       
   778      * @param parameterName the name of the parameter
       
   779      * @param x the parameter value
       
   780      * @exception SQLException if a database access error occurs or
       
   781      * this method is called on a closed <code>CallableStatement</code>
       
   782      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   783      * this method
       
   784      * @see #getString
       
   785      * @since 1.4
       
   786      */
       
   787     void setString(String parameterName, String x) throws SQLException;
       
   788 
       
   789   /**
       
   790    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   791    * to the given Java array of <code>byte</code> values. Before sending it to the
       
   792    * database, the driver converts this to an SQL <code>VARBINARY</code> or
       
   793    * <code>LONGVARBINARY</code> value, depending on the argument's size relative
       
   794    * to the driver's limits on <code>VARBINARY</code> values.
       
   795    *
       
   796    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   797    * @param x the parameter value
       
   798    * @exception SQLException if a database access error occurs
       
   799    */
       
   800   void setBytes(int parameterIndex, byte x[]) throws SQLException;
       
   801 
       
   802   /**
       
   803      * Sets the designated parameter to the given Java array of bytes.
       
   804      * The driver converts this to an SQL <code>VARBINARY</code> or
       
   805      * <code>LONGVARBINARY</code> (depending on the argument's size relative
       
   806      * to the driver's limits on <code>VARBINARY</code> values) when it sends
       
   807      * it to the database.
       
   808      *
       
   809      * @param parameterName the name of the parameter
       
   810      * @param x the parameter value
       
   811      * @exception SQLException if a database access error occurs or
       
   812      * this method is called on a closed <code>CallableStatement</code>
       
   813      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   814      * this method
       
   815      * @see #getBytes
       
   816      * @since 1.4
       
   817      */
       
   818     void setBytes(String parameterName, byte x[]) throws SQLException;
       
   819 
       
   820   /**
       
   821    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   822    * to the given <code>java.sql.Date</code> value. The driver converts this to
       
   823    * an SQL <code>DATE</code> value before sending it to the database, using the
       
   824    * default <code>java.util.Calendar</code> to calculate the date.
       
   825    *
       
   826    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   827    * @param x the parameter value
       
   828    * @exception SQLException if a database access error occurs
       
   829    */
       
   830   void setDate(int parameterIndex, java.sql.Date x) throws SQLException;
       
   831 
       
   832   /**
       
   833    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   834    * to the given <code>java.sql.Time</code> value. The driver converts this to
       
   835    * an SQL <code>TIME</code> value before sending it to the database, using the
       
   836    * default <code>java.util.Calendar</code> to calculate it.
       
   837    *
       
   838    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   839    * @param x the parameter value
       
   840    * @exception SQLException if a database access error occurs
       
   841    */
       
   842   void setTime(int parameterIndex, java.sql.Time x) throws SQLException;
       
   843 
       
   844   /**
       
   845    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   846    * to the given <code>java.sql.Timestamp</code> value. The driver converts this to
       
   847    * an SQL <code>TIMESTAMP</code> value before sending it to the database, using the
       
   848    * default <code>java.util.Calendar</code> to calculate it.
       
   849    *
       
   850    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   851    * @param x the parameter value
       
   852    * @exception SQLException if a database access error occurs
       
   853    */
       
   854   void setTimestamp(int parameterIndex, java.sql.Timestamp x)
       
   855     throws SQLException;
       
   856 
       
   857   /**
       
   858      * Sets the designated parameter to the given <code>java.sql.Timestamp</code> value.
       
   859      * The driver
       
   860      * converts this to an SQL <code>TIMESTAMP</code> value when it sends it to the
       
   861      * database.
       
   862      *
       
   863      * @param parameterName the name of the parameter
       
   864      * @param x the parameter value
       
   865      * @exception SQLException if a database access error occurs or
       
   866      * this method is called on a closed <code>CallableStatement</code>
       
   867      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   868      * this method
       
   869      * @see #getTimestamp
       
   870      * @since 1.4
       
   871      */
       
   872     void setTimestamp(String parameterName, java.sql.Timestamp x)
       
   873         throws SQLException;
       
   874 
       
   875   /**
       
   876    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   877    * to the given <code>java.io.InputStream</code> value.
       
   878    * It may be more practical to send a very large ASCII value via a
       
   879    * <code>java.io.InputStream</code> rather than as a <code>LONGVARCHAR</code>
       
   880    * parameter. The driver will read the data from the stream
       
   881    * as needed until it reaches end-of-file.
       
   882    *
       
   883    * <P><B>Note:</B> This stream object can either be a standard
       
   884    * Java stream object or your own subclass that implements the
       
   885    * standard interface.
       
   886    *
       
   887    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   888    * @param x the Java input stream that contains the ASCII parameter value
       
   889    * @param length the number of bytes in the stream
       
   890    * @exception SQLException if a database access error occurs
       
   891    */
       
   892   void setAsciiStream(int parameterIndex, java.io.InputStream x, int length)
       
   893     throws SQLException;
       
   894 
       
   895   /**
       
   896      * Sets the designated parameter to the given input stream, which will have
       
   897      * the specified number of bytes.
       
   898      * When a very large ASCII value is input to a <code>LONGVARCHAR</code>
       
   899      * parameter, it may be more practical to send it via a
       
   900      * <code>java.io.InputStream</code>. Data will be read from the stream
       
   901      * as needed until end-of-file is reached.  The JDBC driver will
       
   902      * do any necessary conversion from ASCII to the database char format.
       
   903      *
       
   904      * <P><B>Note:</B> This stream object can either be a standard
       
   905      * Java stream object or your own subclass that implements the
       
   906      * standard interface.
       
   907      *
       
   908      * @param parameterName the name of the parameter
       
   909      * @param x the Java input stream that contains the ASCII parameter value
       
   910      * @param length the number of bytes in the stream
       
   911      * @exception SQLException if a database access error occurs or
       
   912      * this method is called on a closed <code>CallableStatement</code>
       
   913      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   914      * this method
       
   915      * @since 1.4
       
   916      */
       
   917     void setAsciiStream(String parameterName, java.io.InputStream x, int length)
       
   918         throws SQLException;
       
   919 
       
   920   /**
       
   921    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   922    * to the given <code>java.io.InputStream</code> value.
       
   923    * It may be more practical to send a very large binary value via a
       
   924    * <code>java.io.InputStream</code> rather than as a <code>LONGVARBINARY</code>
       
   925    * parameter. The driver will read the data from the stream
       
   926    * as needed until it reaches end-of-file.
       
   927    *
       
   928    * <P><B>Note:</B> This stream object can either be a standard
       
   929    * Java stream object or your own subclass that implements the
       
   930    * standard interface.
       
   931    *
       
   932    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   933    * @param x the java input stream which contains the binary parameter value
       
   934    * @param length the number of bytes in the stream
       
   935    * @exception SQLException if a database access error occurs
       
   936    */
       
   937   void setBinaryStream(int parameterIndex, java.io.InputStream x,
       
   938                        int length) throws SQLException;
       
   939 
       
   940   /**
       
   941      * Sets the designated parameter to the given input stream, which will have
       
   942      * the specified number of bytes.
       
   943      * When a very large binary value is input to a <code>LONGVARBINARY</code>
       
   944      * parameter, it may be more practical to send it via a
       
   945      * <code>java.io.InputStream</code> object. The data will be read from the stream
       
   946      * as needed until end-of-file is reached.
       
   947      *
       
   948      * <P><B>Note:</B> This stream object can either be a standard
       
   949      * Java stream object or your own subclass that implements the
       
   950      * standard interface.
       
   951      *
       
   952      * @param parameterName the name of the parameter
       
   953      * @param x the java input stream which contains the binary parameter value
       
   954      * @param length the number of bytes in the stream
       
   955      * @exception SQLException if a database access error occurs or
       
   956      * this method is called on a closed <code>CallableStatement</code>
       
   957      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   958      * this method
       
   959      * @since 1.4
       
   960      */
       
   961     void setBinaryStream(String parameterName, java.io.InputStream x,
       
   962                          int length) throws SQLException;
       
   963 
       
   964   /**
       
   965    * Sets the designated parameter in this <code>RowSet</code> object's command
       
   966    * to the given <code>java.io.Reader</code> value.
       
   967    * It may be more practical to send a very large UNICODE value via a
       
   968    * <code>java.io.Reader</code> rather than as a <code>LONGVARCHAR</code>
       
   969    * parameter. The driver will read the data from the stream
       
   970    * as needed until it reaches end-of-file.
       
   971    *
       
   972    * <P><B>Note:</B> This stream object can either be a standard
       
   973    * Java stream object or your own subclass that implements the
       
   974    * standard interface.
       
   975    *
       
   976    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
   977    * @param reader the {@code Reader} object that contains the UNICODE data
       
   978    *        to be set
       
   979    * @param length the number of characters in the stream
       
   980    * @exception SQLException if a database access error occurs
       
   981    */
       
   982   void setCharacterStream(int parameterIndex,
       
   983                           Reader reader,
       
   984                           int length) throws SQLException;
       
   985 
       
   986   /**
       
   987      * Sets the designated parameter to the given {@code Reader}
       
   988      * object, which is the given number of characters long.
       
   989      * When a very large UNICODE value is input to a <code>LONGVARCHAR</code>
       
   990      * parameter, it may be more practical to send it via a
       
   991      * <code>java.io.Reader</code> object. The data will be read from the stream
       
   992      * as needed until end-of-file is reached.  The JDBC driver will
       
   993      * do any necessary conversion from UNICODE to the database char format.
       
   994      *
       
   995      * <P><B>Note:</B> This stream object can either be a standard
       
   996      * Java stream object or your own subclass that implements the
       
   997      * standard interface.
       
   998      *
       
   999      * @param parameterName the name of the parameter
       
  1000      * @param reader the <code>java.io.Reader</code> object that
       
  1001      *        contains the UNICODE data used as the designated parameter
       
  1002      * @param length the number of characters in the stream
       
  1003      * @exception SQLException if a database access error occurs or
       
  1004      * this method is called on a closed <code>CallableStatement</code>
       
  1005      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1006      * this method
       
  1007      * @since 1.4
       
  1008      */
       
  1009     void setCharacterStream(String parameterName,
       
  1010                             java.io.Reader reader,
       
  1011                             int length) throws SQLException;
       
  1012 
       
  1013   /**
       
  1014    * Sets the designated parameter in this <code>RowSet</code> object's command
       
  1015    * to the given input stream.
       
  1016    * When a very large ASCII value is input to a <code>LONGVARCHAR</code>
       
  1017    * parameter, it may be more practical to send it via a
       
  1018    * <code>java.io.InputStream</code>. Data will be read from the stream
       
  1019    * as needed until end-of-file is reached.  The JDBC driver will
       
  1020    * do any necessary conversion from ASCII to the database char format.
       
  1021    *
       
  1022    * <P><B>Note:</B> This stream object can either be a standard
       
  1023    * Java stream object or your own subclass that implements the
       
  1024    * standard interface.
       
  1025    * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  1026    * it might be more efficient to use a version of
       
  1027    * <code>setAsciiStream</code> which takes a length parameter.
       
  1028    *
       
  1029    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
  1030    * @param x the Java input stream that contains the ASCII parameter value
       
  1031    * @exception SQLException if a database access error occurs or
       
  1032    * this method is called on a closed <code>PreparedStatement</code>
       
  1033    * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  1034    * @since 1.6
       
  1035    */
       
  1036   void setAsciiStream(int parameterIndex, java.io.InputStream x)
       
  1037                       throws SQLException;
       
  1038 
       
  1039    /**
       
  1040      * Sets the designated parameter to the given input stream.
       
  1041      * When a very large ASCII value is input to a <code>LONGVARCHAR</code>
       
  1042      * parameter, it may be more practical to send it via a
       
  1043      * <code>java.io.InputStream</code>. Data will be read from the stream
       
  1044      * as needed until end-of-file is reached.  The JDBC driver will
       
  1045      * do any necessary conversion from ASCII to the database char format.
       
  1046      *
       
  1047      * <P><B>Note:</B> This stream object can either be a standard
       
  1048      * Java stream object or your own subclass that implements the
       
  1049      * standard interface.
       
  1050      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  1051      * it might be more efficient to use a version of
       
  1052      * <code>setAsciiStream</code> which takes a length parameter.
       
  1053      *
       
  1054      * @param parameterName the name of the parameter
       
  1055      * @param x the Java input stream that contains the ASCII parameter value
       
  1056      * @exception SQLException if a database access error occurs or
       
  1057      * this method is called on a closed <code>CallableStatement</code>
       
  1058      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  1059        * @since 1.6
       
  1060     */
       
  1061     void setAsciiStream(String parameterName, java.io.InputStream x)
       
  1062             throws SQLException;
       
  1063 
       
  1064   /**
       
  1065    * Sets the designated parameter in this <code>RowSet</code> object's command
       
  1066    * to the given input stream.
       
  1067    * When a very large binary value is input to a <code>LONGVARBINARY</code>
       
  1068    * parameter, it may be more practical to send it via a
       
  1069    * <code>java.io.InputStream</code> object. The data will be read from the
       
  1070    * stream as needed until end-of-file is reached.
       
  1071    *
       
  1072    * <P><B>Note:</B> This stream object can either be a standard
       
  1073    * Java stream object or your own subclass that implements the
       
  1074    * standard interface.
       
  1075    * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  1076    * it might be more efficient to use a version of
       
  1077    * <code>setBinaryStream</code> which takes a length parameter.
       
  1078    *
       
  1079    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
  1080    * @param x the java input stream which contains the binary parameter value
       
  1081    * @exception SQLException if a database access error occurs or
       
  1082    * this method is called on a closed <code>PreparedStatement</code>
       
  1083    * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  1084    * @since 1.6
       
  1085    */
       
  1086   void setBinaryStream(int parameterIndex, java.io.InputStream x)
       
  1087                        throws SQLException;
       
  1088 
       
  1089   /**
       
  1090      * Sets the designated parameter to the given input stream.
       
  1091      * When a very large binary value is input to a <code>LONGVARBINARY</code>
       
  1092      * parameter, it may be more practical to send it via a
       
  1093      * <code>java.io.InputStream</code> object. The data will be read from the
       
  1094      * stream as needed until end-of-file is reached.
       
  1095      *
       
  1096      * <P><B>Note:</B> This stream object can either be a standard
       
  1097      * Java stream object or your own subclass that implements the
       
  1098      * standard interface.
       
  1099      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  1100      * it might be more efficient to use a version of
       
  1101      * <code>setBinaryStream</code> which takes a length parameter.
       
  1102      *
       
  1103      * @param parameterName the name of the parameter
       
  1104      * @param x the java input stream which contains the binary parameter value
       
  1105      * @exception SQLException if a database access error occurs or
       
  1106      * this method is called on a closed <code>CallableStatement</code>
       
  1107      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  1108      * @since 1.6
       
  1109      */
       
  1110     void setBinaryStream(String parameterName, java.io.InputStream x)
       
  1111     throws SQLException;
       
  1112 
       
  1113   /**
       
  1114    * Sets the designated parameter in this <code>RowSet</code> object's command
       
  1115    * to the given {@code Reader}
       
  1116    * object.
       
  1117    * When a very large UNICODE value is input to a <code>LONGVARCHAR</code>
       
  1118    * parameter, it may be more practical to send it via a
       
  1119    * <code>java.io.Reader</code> object. The data will be read from the stream
       
  1120    * as needed until end-of-file is reached.  The JDBC driver will
       
  1121    * do any necessary conversion from UNICODE to the database char format.
       
  1122    *
       
  1123    * <P><B>Note:</B> This stream object can either be a standard
       
  1124    * Java stream object or your own subclass that implements the
       
  1125    * standard interface.
       
  1126    * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  1127    * it might be more efficient to use a version of
       
  1128    * <code>setCharacterStream</code> which takes a length parameter.
       
  1129    *
       
  1130    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
  1131    * @param reader the <code>java.io.Reader</code> object that contains the
       
  1132    *        Unicode data
       
  1133    * @exception SQLException if a database access error occurs or
       
  1134    * this method is called on a closed <code>PreparedStatement</code>
       
  1135    * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  1136    * @since 1.6
       
  1137    */
       
  1138   void setCharacterStream(int parameterIndex,
       
  1139                           java.io.Reader reader) throws SQLException;
       
  1140 
       
  1141   /**
       
  1142      * Sets the designated parameter to the given {@code Reader}
       
  1143      * object.
       
  1144      * When a very large UNICODE value is input to a <code>LONGVARCHAR</code>
       
  1145      * parameter, it may be more practical to send it via a
       
  1146      * <code>java.io.Reader</code> object. The data will be read from the stream
       
  1147      * as needed until end-of-file is reached.  The JDBC driver will
       
  1148      * do any necessary conversion from UNICODE to the database char format.
       
  1149      *
       
  1150      * <P><B>Note:</B> This stream object can either be a standard
       
  1151      * Java stream object or your own subclass that implements the
       
  1152      * standard interface.
       
  1153      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  1154      * it might be more efficient to use a version of
       
  1155      * <code>setCharacterStream</code> which takes a length parameter.
       
  1156      *
       
  1157      * @param parameterName the name of the parameter
       
  1158      * @param reader the <code>java.io.Reader</code> object that contains the
       
  1159      *        Unicode data
       
  1160      * @exception SQLException if a database access error occurs or
       
  1161      * this method is called on a closed <code>CallableStatement</code>
       
  1162      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  1163      * @since 1.6
       
  1164      */
       
  1165     void setCharacterStream(String parameterName,
       
  1166                           java.io.Reader reader) throws SQLException;
       
  1167 
       
  1168   /**
       
  1169    * Sets the designated parameter in this <code>RowSet</code> object's command
       
  1170    * to a {@code Reader} object. The
       
  1171    * {@code Reader} reads the data till end-of-file is reached. The
       
  1172    * driver does the necessary conversion from Java character format to
       
  1173    * the national character set in the database.
       
  1174 
       
  1175    * <P><B>Note:</B> This stream object can either be a standard
       
  1176    * Java stream object or your own subclass that implements the
       
  1177    * standard interface.
       
  1178    * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  1179    * it might be more efficient to use a version of
       
  1180    * <code>setNCharacterStream</code> which takes a length parameter.
       
  1181    *
       
  1182    * @param parameterIndex of the first parameter is 1, the second is 2, ...
       
  1183    * @param value the parameter value
       
  1184    * @throws SQLException if the driver does not support national
       
  1185    *         character sets;  if the driver can detect that a data conversion
       
  1186    *  error could occur ; if a database access error occurs; or
       
  1187    * this method is called on a closed <code>PreparedStatement</code>
       
  1188    * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  1189    * @since 1.6
       
  1190    */
       
  1191    void setNCharacterStream(int parameterIndex, Reader value) throws SQLException;
       
  1192 
       
  1193 
       
  1194 
       
  1195   /**
       
  1196    * Sets the designated parameter in this <code>RowSet</code> object's command
       
  1197    * with the given Java <code>Object</code>.  For integral values, the
       
  1198    * <code>java.lang</code> equivalent objects should be used (for example,
       
  1199    * an instance of the class <code>Integer</code> for an <code>int</code>).
       
  1200    *
       
  1201    * If the second argument is an <code>InputStream</code> then the stream must contain
       
  1202    * the number of bytes specified by scaleOrLength.  If the second argument is a
       
  1203    * {@code Reader} then the {@code Reader} must contain the number of characters specified
       
  1204    * by scaleOrLength. If these conditions are not true the driver will generate a
       
  1205    * <code>SQLException</code> when the prepared statement is executed.
       
  1206    *
       
  1207    * <p>The given Java object will be converted to the targetSqlType
       
  1208    * before being sent to the database.
       
  1209    * <P>
       
  1210    * If the object is of a class implementing <code>SQLData</code>,
       
  1211    * the rowset should call the method <code>SQLData.writeSQL</code>
       
  1212    * to write the object to an <code>SQLOutput</code> data stream.
       
  1213    * If, on the other hand, the object is of a class implementing
       
  1214    * <code>Ref</code>, <code>Blob</code>, <code>Clob</code>,  <code>NClob</code>,
       
  1215    *  <code>Struct</code>, <code>java.net.URL</code>,
       
  1216    * or <code>Array</code>, the driver should pass it to the database as a
       
  1217    * value of the corresponding SQL type.
       
  1218    *
       
  1219    *
       
  1220    * <p>Note that this method may be used to pass database-specific
       
  1221    * abstract data types.
       
  1222    *
       
  1223    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
  1224    * @param x the object containing the input parameter value
       
  1225    * @param targetSqlType the SQL type (as defined in <code>java.sql.Types</code>)
       
  1226    *        to be sent to the database. The scale argument may further qualify this
       
  1227    *        type.
       
  1228    * @param scaleOrLength for <code>java.sql.Types.DECIMAL</code>
       
  1229    *          or <code>java.sql.Types.NUMERIC types</code>,
       
  1230    *          this is the number of digits after the decimal point. For
       
  1231    *          Java Object types <code>InputStream</code> and {@code Reader},
       
  1232    *          this is the length
       
  1233    *          of the data in the stream or {@code Reader}.  For all other types,
       
  1234    *          this value will be ignored.
       
  1235    * @exception SQLException if a database access error occurs
       
  1236    * @see java.sql.Types
       
  1237    */
       
  1238   void setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength)
       
  1239             throws SQLException;
       
  1240 
       
  1241   /**
       
  1242      * Sets the value of the designated parameter with the given object. The second
       
  1243      * argument must be an object type; for integral values, the
       
  1244      * <code>java.lang</code> equivalent objects should be used.
       
  1245      *
       
  1246      * <p>The given Java object will be converted to the given targetSqlType
       
  1247      * before being sent to the database.
       
  1248      *
       
  1249      * If the object has a custom mapping (is of a class implementing the
       
  1250      * interface <code>SQLData</code>),
       
  1251      * the JDBC driver should call the method <code>SQLData.writeSQL</code> to write it
       
  1252      * to the SQL data stream.
       
  1253      * If, on the other hand, the object is of a class implementing
       
  1254      * <code>Ref</code>, <code>Blob</code>, <code>Clob</code>,  <code>NClob</code>,
       
  1255      *  <code>Struct</code>, <code>java.net.URL</code>,
       
  1256      * or <code>Array</code>, the driver should pass it to the database as a
       
  1257      * value of the corresponding SQL type.
       
  1258      * <P>
       
  1259      * Note that this method may be used to pass database-
       
  1260      * specific abstract data types.
       
  1261      *
       
  1262      * @param parameterName the name of the parameter
       
  1263      * @param x the object containing the input parameter value
       
  1264      * @param targetSqlType the SQL type (as defined in java.sql.Types) to be
       
  1265      * sent to the database. The scale argument may further qualify this type.
       
  1266      * @param scale for java.sql.Types.DECIMAL or java.sql.Types.NUMERIC types,
       
  1267      *          this is the number of digits after the decimal point.  For all other
       
  1268      *          types, this value will be ignored.
       
  1269      * @exception SQLException if a database access error occurs or
       
  1270      * this method is called on a closed <code>CallableStatement</code>
       
  1271      * @exception SQLFeatureNotSupportedException if <code>targetSqlType</code> is
       
  1272      * a <code>ARRAY</code>, <code>BLOB</code>, <code>CLOB</code>,
       
  1273      * <code>DATALINK</code>, <code>JAVA_OBJECT</code>, <code>NCHAR</code>,
       
  1274      * <code>NCLOB</code>, <code>NVARCHAR</code>, <code>LONGNVARCHAR</code>,
       
  1275      *  <code>REF</code>, <code>ROWID</code>, <code>SQLXML</code>
       
  1276      * or  <code>STRUCT</code> data type and the JDBC driver does not support
       
  1277      * this data type
       
  1278      * @see Types
       
  1279      * @see #getObject
       
  1280      * @since 1.4
       
  1281      */
       
  1282     void setObject(String parameterName, Object x, int targetSqlType, int scale)
       
  1283         throws SQLException;
       
  1284 
       
  1285   /**
       
  1286    * Sets the designated parameter in this <code>RowSet</code> object's command
       
  1287    * with a Java <code>Object</code>.  For integral values, the
       
  1288    * <code>java.lang</code> equivalent objects should be used.
       
  1289    * This method is like <code>setObject</code> above, but the scale used is the scale
       
  1290    * of the second parameter.  Scalar values have a scale of zero.  Literal
       
  1291    * values have the scale present in the literal.
       
  1292    * <P>
       
  1293    * Even though it is supported, it is not recommended that this method
       
  1294    * be called with floating point input values.
       
  1295    *
       
  1296    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
  1297    * @param x the object containing the input parameter value
       
  1298    * @param targetSqlType the SQL type (as defined in <code>java.sql.Types</code>)
       
  1299    *        to be sent to the database
       
  1300    * @exception SQLException if a database access error occurs
       
  1301    */
       
  1302   void setObject(int parameterIndex, Object x,
       
  1303                  int targetSqlType) throws SQLException;
       
  1304 
       
  1305   /**
       
  1306      * Sets the value of the designated parameter with the given object.
       
  1307      * This method is like the method <code>setObject</code>
       
  1308      * above, except that it assumes a scale of zero.
       
  1309      *
       
  1310      * @param parameterName the name of the parameter
       
  1311      * @param x the object containing the input parameter value
       
  1312      * @param targetSqlType the SQL type (as defined in java.sql.Types) to be
       
  1313      *                      sent to the database
       
  1314      * @exception SQLException if a database access error occurs or
       
  1315      * this method is called on a closed <code>CallableStatement</code>
       
  1316      * @exception SQLFeatureNotSupportedException if <code>targetSqlType</code> is
       
  1317      * a <code>ARRAY</code>, <code>BLOB</code>, <code>CLOB</code>,
       
  1318      * <code>DATALINK</code>, <code>JAVA_OBJECT</code>, <code>NCHAR</code>,
       
  1319      * <code>NCLOB</code>, <code>NVARCHAR</code>, <code>LONGNVARCHAR</code>,
       
  1320      *  <code>REF</code>, <code>ROWID</code>, <code>SQLXML</code>
       
  1321      * or  <code>STRUCT</code> data type and the JDBC driver does not support
       
  1322      * this data type
       
  1323      * @see #getObject
       
  1324      * @since 1.4
       
  1325      */
       
  1326     void setObject(String parameterName, Object x, int targetSqlType)
       
  1327         throws SQLException;
       
  1328 
       
  1329    /**
       
  1330      * Sets the value of the designated parameter with the given object.
       
  1331      * The second parameter must be of type <code>Object</code>; therefore, the
       
  1332      * <code>java.lang</code> equivalent objects should be used for built-in types.
       
  1333      *
       
  1334      * <p>The JDBC specification specifies a standard mapping from
       
  1335      * Java <code>Object</code> types to SQL types.  The given argument
       
  1336      * will be converted to the corresponding SQL type before being
       
  1337      * sent to the database.
       
  1338      *
       
  1339      * <p>Note that this method may be used to pass database-
       
  1340      * specific abstract data types, by using a driver-specific Java
       
  1341      * type.
       
  1342      *
       
  1343      * If the object is of a class implementing the interface <code>SQLData</code>,
       
  1344      * the JDBC driver should call the method <code>SQLData.writeSQL</code>
       
  1345      * to write it to the SQL data stream.
       
  1346      * If, on the other hand, the object is of a class implementing
       
  1347      * <code>Ref</code>, <code>Blob</code>, <code>Clob</code>,  <code>NClob</code>,
       
  1348      *  <code>Struct</code>, <code>java.net.URL</code>,
       
  1349      * or <code>Array</code>, the driver should pass it to the database as a
       
  1350      * value of the corresponding SQL type.
       
  1351      * <P>
       
  1352      * This method throws an exception if there is an ambiguity, for example, if the
       
  1353      * object is of a class implementing more than one of the interfaces named above.
       
  1354      *
       
  1355      * @param parameterName the name of the parameter
       
  1356      * @param x the object containing the input parameter value
       
  1357      * @exception SQLException if a database access error occurs,
       
  1358      * this method is called on a closed <code>CallableStatement</code> or if the given
       
  1359      *            <code>Object</code> parameter is ambiguous
       
  1360      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1361      * this method
       
  1362      * @see #getObject
       
  1363      * @since 1.4
       
  1364      */
       
  1365     void setObject(String parameterName, Object x) throws SQLException;
       
  1366 
       
  1367   /**
       
  1368    * Sets the designated parameter in this <code>RowSet</code> object's command
       
  1369    * with a Java <code>Object</code>.  For integral values, the
       
  1370    * <code>java.lang</code> equivalent objects should be used.
       
  1371    *
       
  1372    * <p>The JDBC specification provides a standard mapping from
       
  1373    * Java Object types to SQL types.  The driver will convert the
       
  1374    * given Java object to its standard SQL mapping before sending it
       
  1375    * to the database.
       
  1376    *
       
  1377    * <p>Note that this method may be used to pass database-specific
       
  1378    * abstract data types by using a driver-specific Java type.
       
  1379    *
       
  1380    * If the object is of a class implementing <code>SQLData</code>,
       
  1381    * the rowset should call the method <code>SQLData.writeSQL</code>
       
  1382    * to write the object to an <code>SQLOutput</code> data stream.
       
  1383    * If, on the other hand, the object is of a class implementing
       
  1384    * <code>Ref</code>, <code>Blob</code>, <code>Clob</code>,  <code>NClob</code>,
       
  1385    *  <code>Struct</code>, <code>java.net.URL</code>,
       
  1386    * or <code>Array</code>, the driver should pass it to the database as a
       
  1387    * value of the corresponding SQL type.
       
  1388    *
       
  1389    * <P>
       
  1390    * An exception is thrown if there is an ambiguity, for example, if the
       
  1391    * object is of a class implementing more than one of these interfaces.
       
  1392    *
       
  1393    * @param parameterIndex The first parameter is 1, the second is 2, ...
       
  1394    * @param x The object containing the input parameter value
       
  1395    * @exception SQLException if a database access error occurs
       
  1396    */
       
  1397   void setObject(int parameterIndex, Object x) throws SQLException;
       
  1398 
       
  1399 
       
  1400   /**
       
  1401    * Sets the designated parameter in this <code>RowSet</code> object's command
       
  1402    * with the given  <code>Ref</code> value.  The driver will convert this
       
  1403    * to the appropriate <code>REF(&lt;structured-type&gt;)</code> value.
       
  1404    *
       
  1405    * @param i the first parameter is 1, the second is 2, ...
       
  1406    * @param x an object representing data of an SQL <code>REF</code> type
       
  1407    * @exception SQLException if a database access error occurs
       
  1408    */
       
  1409   void setRef (int i, Ref x) throws SQLException;
       
  1410 
       
  1411   /**
       
  1412    * Sets the designated parameter in this <code>RowSet</code> object's command
       
  1413    * with the given  <code>Blob</code> value.  The driver will convert this
       
  1414    * to the <code>BLOB</code> value that the <code>Blob</code> object
       
  1415    * represents before sending it to the database.
       
  1416    *
       
  1417    * @param i the first parameter is 1, the second is 2, ...
       
  1418    * @param x an object representing a BLOB
       
  1419    * @exception SQLException if a database access error occurs
       
  1420    */
       
  1421   void setBlob (int i, Blob x) throws SQLException;
       
  1422 
       
  1423   /**
       
  1424      * Sets the designated parameter to a <code>InputStream</code> object.
       
  1425      * The <code>InputStream</code> must contain  the number
       
  1426      * of characters specified by length otherwise a <code>SQLException</code> will be
       
  1427      * generated when the <code>PreparedStatement</code> is executed.
       
  1428      * This method differs from the <code>setBinaryStream (int, InputStream, int)</code>
       
  1429      * method because it informs the driver that the parameter value should be
       
  1430      * sent to the server as a <code>BLOB</code>.  When the <code>setBinaryStream</code> method is used,
       
  1431      * the driver may have to do extra work to determine whether the parameter
       
  1432      * data should be sent to the server as a <code>LONGVARBINARY</code> or a <code>BLOB</code>
       
  1433      * @param parameterIndex index of the first parameter is 1,
       
  1434      * the second is 2, ...
       
  1435      * @param inputStream An object that contains the data to set the parameter
       
  1436      * value to.
       
  1437      * @param length the number of bytes in the parameter data.
       
  1438      * @throws SQLException if a database access error occurs,
       
  1439      * this method is called on a closed <code>PreparedStatement</code>,
       
  1440      * if parameterIndex does not correspond
       
  1441      * to a parameter marker in the SQL statement,  if the length specified
       
  1442      * is less than zero or if the number of bytes in the <code>InputStream</code> does not match
       
  1443      * the specified length.
       
  1444      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  1445      *
       
  1446      * @since 1.6
       
  1447      */
       
  1448      void setBlob(int parameterIndex, InputStream inputStream, long length)
       
  1449         throws SQLException;
       
  1450 
       
  1451   /**
       
  1452      * Sets the designated parameter to a <code>InputStream</code> object.
       
  1453      * This method differs from the <code>setBinaryStream (int, InputStream)</code>
       
  1454      * method because it informs the driver that the parameter value should be
       
  1455      * sent to the server as a <code>BLOB</code>.  When the <code>setBinaryStream</code> method is used,
       
  1456      * the driver may have to do extra work to determine whether the parameter
       
  1457      * data should be sent to the server as a <code>LONGVARBINARY</code> or a <code>BLOB</code>
       
  1458      *
       
  1459      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  1460      * it might be more efficient to use a version of
       
  1461      * <code>setBlob</code> which takes a length parameter.
       
  1462      *
       
  1463      * @param parameterIndex index of the first parameter is 1,
       
  1464      * the second is 2, ...
       
  1465      * @param inputStream An object that contains the data to set the parameter
       
  1466      * value to.
       
  1467      * @throws SQLException if a database access error occurs,
       
  1468      * this method is called on a closed <code>PreparedStatement</code> or
       
  1469      * if parameterIndex does not correspond
       
  1470      * to a parameter marker in the SQL statement,
       
  1471      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  1472      *
       
  1473      * @since 1.6
       
  1474      */
       
  1475      void setBlob(int parameterIndex, InputStream inputStream)
       
  1476         throws SQLException;
       
  1477 
       
  1478   /**
       
  1479      * Sets the designated parameter to a <code>InputStream</code> object.
       
  1480      * The {@code InputStream} must contain  the number
       
  1481      * of characters specified by length, otherwise a <code>SQLException</code> will be
       
  1482      * generated when the <code>CallableStatement</code> is executed.
       
  1483      * This method differs from the <code>setBinaryStream (int, InputStream, int)</code>
       
  1484      * method because it informs the driver that the parameter value should be
       
  1485      * sent to the server as a <code>BLOB</code>.  When the <code>setBinaryStream</code> method is used,
       
  1486      * the driver may have to do extra work to determine whether the parameter
       
  1487      * data should be sent to the server as a <code>LONGVARBINARY</code> or a <code>BLOB</code>
       
  1488      *
       
  1489      * @param parameterName the name of the parameter to be set
       
  1490      * the second is 2, ...
       
  1491      *
       
  1492      * @param inputStream An object that contains the data to set the parameter
       
  1493      * value to.
       
  1494      * @param length the number of bytes in the parameter data.
       
  1495      * @throws SQLException  if parameterIndex does not correspond
       
  1496      * to a parameter marker in the SQL statement,  or if the length specified
       
  1497      * is less than zero; if the number of bytes in the <code>InputStream</code> does not match
       
  1498      * the specified length; if a database access error occurs or
       
  1499      * this method is called on a closed <code>CallableStatement</code>
       
  1500      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1501      * this method
       
  1502      *
       
  1503      * @since 1.6
       
  1504      */
       
  1505      void setBlob(String parameterName, InputStream inputStream, long length)
       
  1506         throws SQLException;
       
  1507 
       
  1508   /**
       
  1509      * Sets the designated parameter to the given <code>java.sql.Blob</code> object.
       
  1510      * The driver converts this to an SQL <code>BLOB</code> value when it
       
  1511      * sends it to the database.
       
  1512      *
       
  1513      * @param parameterName the name of the parameter
       
  1514      * @param x a <code>Blob</code> object that maps an SQL <code>BLOB</code> value
       
  1515      * @exception SQLException if a database access error occurs or
       
  1516      * this method is called on a closed <code>CallableStatement</code>
       
  1517      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1518      * this method
       
  1519      * @since 1.6
       
  1520      */
       
  1521     void setBlob (String parameterName, Blob x) throws SQLException;
       
  1522 
       
  1523   /**
       
  1524      * Sets the designated parameter to a <code>InputStream</code> object.
       
  1525      * This method differs from the <code>setBinaryStream (int, InputStream)</code>
       
  1526      * method because it informs the driver that the parameter value should be
       
  1527      * sent to the server as a <code>BLOB</code>.  When the <code>setBinaryStream</code> method is used,
       
  1528      * the driver may have to do extra work to determine whether the parameter
       
  1529      * data should be send to the server as a <code>LONGVARBINARY</code> or a <code>BLOB</code>
       
  1530      *
       
  1531      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  1532      * it might be more efficient to use a version of
       
  1533      * <code>setBlob</code> which takes a length parameter.
       
  1534      *
       
  1535      * @param parameterName the name of the parameter
       
  1536      * @param inputStream An object that contains the data to set the parameter
       
  1537      * value to.
       
  1538      * @throws SQLException if a database access error occurs or
       
  1539      * this method is called on a closed <code>CallableStatement</code>
       
  1540      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  1541      *
       
  1542      * @since 1.6
       
  1543      */
       
  1544      void setBlob(String parameterName, InputStream inputStream)
       
  1545         throws SQLException;
       
  1546 
       
  1547   /**
       
  1548    * Sets the designated parameter in this <code>RowSet</code> object's command
       
  1549    * with the given  <code>Clob</code> value.  The driver will convert this
       
  1550    * to the <code>CLOB</code> value that the <code>Clob</code> object
       
  1551    * represents before sending it to the database.
       
  1552    *
       
  1553    * @param i the first parameter is 1, the second is 2, ...
       
  1554    * @param x an object representing a CLOB
       
  1555    * @exception SQLException if a database access error occurs
       
  1556    */
       
  1557   void setClob (int i, Clob x) throws SQLException;
       
  1558 
       
  1559   /**
       
  1560      * Sets the designated parameter to a {@code Reader} object.
       
  1561      * The {@code Reader} must contain  the number
       
  1562      * of characters specified by length otherwise a <code>SQLException</code> will be
       
  1563      * generated when the <code>PreparedStatement</code> is executed.
       
  1564      *This method differs from the <code>setCharacterStream (int, Reader, int)</code> method
       
  1565      * because it informs the driver that the parameter value should be sent to
       
  1566      * the server as a <code>CLOB</code>.  When the <code>setCharacterStream</code> method is used, the
       
  1567      * driver may have to do extra work to determine whether the parameter
       
  1568      * data should be sent to the server as a <code>LONGVARCHAR</code> or a <code>CLOB</code>
       
  1569      * @param parameterIndex index of the first parameter is 1, the second is 2, ...
       
  1570      * @param reader An object that contains the data to set the parameter value to.
       
  1571      * @param length the number of characters in the parameter data.
       
  1572      * @throws SQLException if a database access error occurs, this method is called on
       
  1573      * a closed <code>PreparedStatement</code>, if parameterIndex does not correspond to a parameter
       
  1574      * marker in the SQL statement, or if the length specified is less than zero.
       
  1575      *
       
  1576      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  1577      * @since 1.6
       
  1578      */
       
  1579      void setClob(int parameterIndex, Reader reader, long length)
       
  1580        throws SQLException;
       
  1581 
       
  1582   /**
       
  1583      * Sets the designated parameter to a {@code Reader} object.
       
  1584      * This method differs from the <code>setCharacterStream (int, Reader)</code> method
       
  1585      * because it informs the driver that the parameter value should be sent to
       
  1586      * the server as a <code>CLOB</code>.  When the <code>setCharacterStream</code> method is used, the
       
  1587      * driver may have to do extra work to determine whether the parameter
       
  1588      * data should be sent to the server as a <code>LONGVARCHAR</code> or a <code>CLOB</code>
       
  1589      *
       
  1590      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  1591      * it might be more efficient to use a version of
       
  1592      * <code>setClob</code> which takes a length parameter.
       
  1593      *
       
  1594      * @param parameterIndex index of the first parameter is 1, the second is 2, ...
       
  1595      * @param reader An object that contains the data to set the parameter value to.
       
  1596      * @throws SQLException if a database access error occurs, this method is called on
       
  1597      * a closed <code>PreparedStatement</code>or if parameterIndex does not correspond to a parameter
       
  1598      * marker in the SQL statement
       
  1599      *
       
  1600      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  1601      * @since 1.6
       
  1602      */
       
  1603      void setClob(int parameterIndex, Reader reader)
       
  1604        throws SQLException;
       
  1605 
       
  1606   /**
       
  1607      * Sets the designated parameter to a {@code Reader} object.  The
       
  1608      * {@code Reader} must contain  the number
       
  1609      * of characters specified by length otherwise a <code>SQLException</code> will be
       
  1610      * generated when the <code>CallableStatement</code> is executed.
       
  1611      * This method differs from the <code>setCharacterStream (int, Reader, int)</code> method
       
  1612      * because it informs the driver that the parameter value should be sent to
       
  1613      * the server as a <code>CLOB</code>.  When the <code>setCharacterStream</code> method is used, the
       
  1614      * driver may have to do extra work to determine whether the parameter
       
  1615      * data should be send to the server as a <code>LONGVARCHAR</code> or a <code>CLOB</code>
       
  1616      * @param parameterName the name of the parameter to be set
       
  1617      * @param reader An object that contains the data to set the parameter value to.
       
  1618      * @param length the number of characters in the parameter data.
       
  1619      * @throws SQLException if parameterIndex does not correspond to a parameter
       
  1620      * marker in the SQL statement; if the length specified is less than zero;
       
  1621      * a database access error occurs or
       
  1622      * this method is called on a closed <code>CallableStatement</code>
       
  1623      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1624      * this method
       
  1625      *
       
  1626      * @since 1.6
       
  1627      */
       
  1628      void setClob(String parameterName, Reader reader, long length)
       
  1629        throws SQLException;
       
  1630 
       
  1631    /**
       
  1632      * Sets the designated parameter to the given <code>java.sql.Clob</code> object.
       
  1633      * The driver converts this to an SQL <code>CLOB</code> value when it
       
  1634      * sends it to the database.
       
  1635      *
       
  1636      * @param parameterName the name of the parameter
       
  1637      * @param x a <code>Clob</code> object that maps an SQL <code>CLOB</code> value
       
  1638      * @exception SQLException if a database access error occurs or
       
  1639      * this method is called on a closed <code>CallableStatement</code>
       
  1640      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1641      * this method
       
  1642      * @since 1.6
       
  1643      */
       
  1644     void setClob (String parameterName, Clob x) throws SQLException;
       
  1645 
       
  1646   /**
       
  1647      * Sets the designated parameter to a {@code Reader} object.
       
  1648      * This method differs from the <code>setCharacterStream (int, Reader)</code> method
       
  1649      * because it informs the driver that the parameter value should be sent to
       
  1650      * the server as a <code>CLOB</code>.  When the <code>setCharacterStream</code> method is used, the
       
  1651      * driver may have to do extra work to determine whether the parameter
       
  1652      * data should be send to the server as a <code>LONGVARCHAR</code> or a <code>CLOB</code>
       
  1653      *
       
  1654      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  1655      * it might be more efficient to use a version of
       
  1656      * <code>setClob</code> which takes a length parameter.
       
  1657      *
       
  1658      * @param parameterName the name of the parameter
       
  1659      * @param reader An object that contains the data to set the parameter value to.
       
  1660      * @throws SQLException if a database access error occurs or this method is called on
       
  1661      * a closed <code>CallableStatement</code>
       
  1662      *
       
  1663      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  1664      * @since 1.6
       
  1665      */
       
  1666      void setClob(String parameterName, Reader reader)
       
  1667        throws SQLException;
       
  1668 
       
  1669   /**
       
  1670    * Sets the designated parameter in this <code>RowSet</code> object's command
       
  1671    * with the given  <code>Array</code> value.  The driver will convert this
       
  1672    * to the <code>ARRAY</code> value that the <code>Array</code> object
       
  1673    * represents before sending it to the database.
       
  1674    *
       
  1675    * @param i the first parameter is 1, the second is 2, ...
       
  1676    * @param x an object representing an SQL array
       
  1677    * @exception SQLException if a database access error occurs
       
  1678    */
       
  1679   void setArray (int i, Array x) throws SQLException;
       
  1680 
       
  1681   /**
       
  1682    * Sets the designated parameter in this <code>RowSet</code> object's command
       
  1683    * with the given  <code>java.sql.Date</code> value.  The driver will convert this
       
  1684    * to an SQL <code>DATE</code> value, using the given <code>java.util.Calendar</code>
       
  1685    * object to calculate the date.
       
  1686    *
       
  1687    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
  1688    * @param x the parameter value
       
  1689    * @param cal the <code>java.util.Calendar</code> object to use for calculating the date
       
  1690    * @exception SQLException if a database access error occurs
       
  1691    */
       
  1692   void setDate(int parameterIndex, java.sql.Date x, Calendar cal)
       
  1693     throws SQLException;
       
  1694 
       
  1695   /**
       
  1696      * Sets the designated parameter to the given <code>java.sql.Date</code> value
       
  1697      * using the default time zone of the virtual machine that is running
       
  1698      * the application.
       
  1699      * The driver converts this
       
  1700      * to an SQL <code>DATE</code> value when it sends it to the database.
       
  1701      *
       
  1702      * @param parameterName the name of the parameter
       
  1703      * @param x the parameter value
       
  1704      * @exception SQLException if a database access error occurs or
       
  1705      * this method is called on a closed <code>CallableStatement</code>
       
  1706      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1707      * this method
       
  1708      * @see #getDate
       
  1709      * @since 1.4
       
  1710      */
       
  1711     void setDate(String parameterName, java.sql.Date x)
       
  1712         throws SQLException;
       
  1713 
       
  1714   /**
       
  1715      * Sets the designated parameter to the given <code>java.sql.Date</code> value,
       
  1716      * using the given <code>Calendar</code> object.  The driver uses
       
  1717      * the <code>Calendar</code> object to construct an SQL <code>DATE</code> value,
       
  1718      * which the driver then sends to the database.  With a
       
  1719      * a <code>Calendar</code> object, the driver can calculate the date
       
  1720      * taking into account a custom timezone.  If no
       
  1721      * <code>Calendar</code> object is specified, the driver uses the default
       
  1722      * timezone, which is that of the virtual machine running the application.
       
  1723      *
       
  1724      * @param parameterName the name of the parameter
       
  1725      * @param x the parameter value
       
  1726      * @param cal the <code>Calendar</code> object the driver will use
       
  1727      *            to construct the date
       
  1728      * @exception SQLException if a database access error occurs or
       
  1729      * this method is called on a closed <code>CallableStatement</code>
       
  1730      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1731      * this method
       
  1732      * @see #getDate
       
  1733      * @since 1.4
       
  1734      */
       
  1735     void setDate(String parameterName, java.sql.Date x, Calendar cal)
       
  1736         throws SQLException;
       
  1737 
       
  1738   /**
       
  1739    * Sets the designated parameter in this <code>RowSet</code> object's command
       
  1740    * with the given  <code>java.sql.Time</code> value.  The driver will convert this
       
  1741    * to an SQL <code>TIME</code> value, using the given <code>java.util.Calendar</code>
       
  1742    * object to calculate it, before sending it to the database.
       
  1743    *
       
  1744    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
  1745    * @param x the parameter value
       
  1746    * @param cal the <code>java.util.Calendar</code> object to use for calculating the time
       
  1747    * @exception SQLException if a database access error occurs
       
  1748    */
       
  1749   void setTime(int parameterIndex, java.sql.Time x, Calendar cal)
       
  1750     throws SQLException;
       
  1751 
       
  1752   /**
       
  1753      * Sets the designated parameter to the given <code>java.sql.Time</code> value.
       
  1754      * The driver converts this
       
  1755      * to an SQL <code>TIME</code> value when it sends it to the database.
       
  1756      *
       
  1757      * @param parameterName the name of the parameter
       
  1758      * @param x the parameter value
       
  1759      * @exception SQLException if a database access error occurs or
       
  1760      * this method is called on a closed <code>CallableStatement</code>
       
  1761      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1762      * this method
       
  1763      * @see #getTime
       
  1764      * @since 1.4
       
  1765      */
       
  1766     void setTime(String parameterName, java.sql.Time x)
       
  1767         throws SQLException;
       
  1768 
       
  1769   /**
       
  1770      * Sets the designated parameter to the given <code>java.sql.Time</code> value,
       
  1771      * using the given <code>Calendar</code> object.  The driver uses
       
  1772      * the <code>Calendar</code> object to construct an SQL <code>TIME</code> value,
       
  1773      * which the driver then sends to the database.  With a
       
  1774      * a <code>Calendar</code> object, the driver can calculate the time
       
  1775      * taking into account a custom timezone.  If no
       
  1776      * <code>Calendar</code> object is specified, the driver uses the default
       
  1777      * timezone, which is that of the virtual machine running the application.
       
  1778      *
       
  1779      * @param parameterName the name of the parameter
       
  1780      * @param x the parameter value
       
  1781      * @param cal the <code>Calendar</code> object the driver will use
       
  1782      *            to construct the time
       
  1783      * @exception SQLException if a database access error occurs or
       
  1784      * this method is called on a closed <code>CallableStatement</code>
       
  1785      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1786      * this method
       
  1787      * @see #getTime
       
  1788      * @since 1.4
       
  1789      */
       
  1790     void setTime(String parameterName, java.sql.Time x, Calendar cal)
       
  1791         throws SQLException;
       
  1792 
       
  1793   /**
       
  1794    * Sets the designated parameter in this <code>RowSet</code> object's command
       
  1795    * with the given  <code>java.sql.Timestamp</code> value.  The driver will
       
  1796    * convert this to an SQL <code>TIMESTAMP</code> value, using the given
       
  1797    * <code>java.util.Calendar</code> object to calculate it, before sending it to the
       
  1798    * database.
       
  1799    *
       
  1800    * @param parameterIndex the first parameter is 1, the second is 2, ...
       
  1801    * @param x the parameter value
       
  1802    * @param cal the <code>java.util.Calendar</code> object to use for calculating the
       
  1803    *        timestamp
       
  1804    * @exception SQLException if a database access error occurs
       
  1805    */
       
  1806   void setTimestamp(int parameterIndex, java.sql.Timestamp x, Calendar cal)
       
  1807     throws SQLException;
       
  1808 
       
  1809   /**
       
  1810      * Sets the designated parameter to the given <code>java.sql.Timestamp</code> value,
       
  1811      * using the given <code>Calendar</code> object.  The driver uses
       
  1812      * the <code>Calendar</code> object to construct an SQL <code>TIMESTAMP</code> value,
       
  1813      * which the driver then sends to the database.  With a
       
  1814      * a <code>Calendar</code> object, the driver can calculate the timestamp
       
  1815      * taking into account a custom timezone.  If no
       
  1816      * <code>Calendar</code> object is specified, the driver uses the default
       
  1817      * timezone, which is that of the virtual machine running the application.
       
  1818      *
       
  1819      * @param parameterName the name of the parameter
       
  1820      * @param x the parameter value
       
  1821      * @param cal the <code>Calendar</code> object the driver will use
       
  1822      *            to construct the timestamp
       
  1823      * @exception SQLException if a database access error occurs or
       
  1824      * this method is called on a closed <code>CallableStatement</code>
       
  1825      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  1826      * this method
       
  1827      * @see #getTimestamp
       
  1828      * @since 1.4
       
  1829      */
       
  1830     void setTimestamp(String parameterName, java.sql.Timestamp x, Calendar cal)
       
  1831         throws SQLException;
       
  1832 
       
  1833   /**
       
  1834    * Clears the parameters set for this <code>RowSet</code> object's command.
       
  1835    * <P>In general, parameter values remain in force for repeated use of a
       
  1836    * <code>RowSet</code> object. Setting a parameter value automatically clears its
       
  1837    * previous value.  However, in some cases it is useful to immediately
       
  1838    * release the resources used by the current parameter values, which can
       
  1839    * be done by calling the method <code>clearParameters</code>.
       
  1840    *
       
  1841    * @exception SQLException if a database access error occurs
       
  1842    */
       
  1843   void clearParameters() throws SQLException;
       
  1844 
       
  1845   //---------------------------------------------------------------------
       
  1846   // Reading and writing data
       
  1847   //---------------------------------------------------------------------
       
  1848 
       
  1849   /**
       
  1850    * Fills this <code>RowSet</code> object with data.
       
  1851    * <P>
       
  1852    * The <code>execute</code> method may use the following properties
       
  1853    * to create a connection for reading data: url, data source name,
       
  1854    * user name, password, transaction isolation, and type map.
       
  1855    *
       
  1856    * The <code>execute</code> method  may use the following properties
       
  1857    * to create a statement to execute a command:
       
  1858    * command, read only, maximum field size,
       
  1859    * maximum rows, escape processing, and query timeout.
       
  1860    * <P>
       
  1861    * If the required properties have not been set, an exception is
       
  1862    * thrown.  If this method is successful, the current contents of the rowset are
       
  1863    * discarded and the rowset's metadata is also (re)set.  If there are
       
  1864    * outstanding updates, they are ignored.
       
  1865    * <P>
       
  1866    * If this <code>RowSet</code> object does not maintain a continuous connection
       
  1867    * with its source of data, it may use a {@code Reader} (a <code>RowSetReader</code>
       
  1868    * object) to fill itself with data.  In this case, a {@code Reader} will have been
       
  1869    * registered with this <code>RowSet</code> object, and the method
       
  1870    * <code>execute</code> will call on the {@code Reader}'s <code>readData</code>
       
  1871    * method as part of its implementation.
       
  1872    *
       
  1873    * @exception SQLException if a database access error occurs or any of the
       
  1874    *            properties necessary for making a connection and creating
       
  1875    *            a statement have not been set
       
  1876    */
       
  1877   void execute() throws SQLException;
       
  1878 
       
  1879   //--------------------------------------------------------------------
       
  1880   // Events
       
  1881   //--------------------------------------------------------------------
       
  1882 
       
  1883   /**
       
  1884    * Registers the given listener so that it will be notified of events
       
  1885    * that occur on this <code>RowSet</code> object.
       
  1886    *
       
  1887    * @param listener a component that has implemented the <code>RowSetListener</code>
       
  1888    *        interface and wants to be notified when events occur on this
       
  1889    *        <code>RowSet</code> object
       
  1890    * @see #removeRowSetListener
       
  1891    */
       
  1892   void addRowSetListener(RowSetListener listener);
       
  1893 
       
  1894   /**
       
  1895    * Removes the specified listener from the list of components that will be
       
  1896    * notified when an event occurs on this <code>RowSet</code> object.
       
  1897    *
       
  1898    * @param listener a component that has been registered as a listener for this
       
  1899    *        <code>RowSet</code> object
       
  1900    * @see #addRowSetListener
       
  1901    */
       
  1902   void removeRowSetListener(RowSetListener listener);
       
  1903 
       
  1904     /**
       
  1905       * Sets the designated parameter to the given <code>java.sql.SQLXML</code> object. The driver converts this to an
       
  1906       * SQL <code>XML</code> value when it sends it to the database.
       
  1907       * @param parameterIndex index of the first parameter is 1, the second is 2, ...
       
  1908       * @param xmlObject a <code>SQLXML</code> object that maps an SQL <code>XML</code> value
       
  1909       * @throws SQLException if a database access error occurs, this method
       
  1910       *  is called on a closed result set,
       
  1911       * the <code>java.xml.transform.Result</code>,
       
  1912       *  <code>Writer</code> or <code>OutputStream</code> has not been closed
       
  1913       * for the <code>SQLXML</code> object  or
       
  1914       *  if there is an error processing the XML value.  The <code>getCause</code> method
       
  1915       *  of the exception may provide a more detailed exception, for example, if the
       
  1916       *  stream does not contain valid XML.
       
  1917       * @since 1.6
       
  1918       */
       
  1919      void setSQLXML(int parameterIndex, SQLXML xmlObject) throws SQLException;
       
  1920 
       
  1921     /**
       
  1922      * Sets the designated parameter to the given <code>java.sql.SQLXML</code> object. The driver converts this to an
       
  1923      * <code>SQL XML</code> value when it sends it to the database.
       
  1924      * @param parameterName the name of the parameter
       
  1925      * @param xmlObject a <code>SQLXML</code> object that maps an <code>SQL XML</code> value
       
  1926      * @throws SQLException if a database access error occurs, this method
       
  1927      *  is called on a closed result set,
       
  1928      * the <code>java.xml.transform.Result</code>,
       
  1929      *  <code>Writer</code> or <code>OutputStream</code> has not been closed
       
  1930      * for the <code>SQLXML</code> object  or
       
  1931      *  if there is an error processing the XML value.  The <code>getCause</code> method
       
  1932      *  of the exception may provide a more detailed exception, for example, if the
       
  1933      *  stream does not contain valid XML.
       
  1934      * @since 1.6
       
  1935      */
       
  1936     void setSQLXML(String parameterName, SQLXML xmlObject) throws SQLException;
       
  1937 
       
  1938     /**
       
  1939      * Sets the designated parameter to the given <code>java.sql.RowId</code> object. The
       
  1940      * driver converts this to a SQL <code>ROWID</code> value when it sends it
       
  1941      * to the database
       
  1942      *
       
  1943      * @param parameterIndex the first parameter is 1, the second is 2, ...
       
  1944      * @param x the parameter value
       
  1945      * @throws SQLException if a database access error occurs
       
  1946      *
       
  1947      * @since 1.6
       
  1948      */
       
  1949     void setRowId(int parameterIndex, RowId x) throws SQLException;
       
  1950 
       
  1951     /**
       
  1952     * Sets the designated parameter to the given <code>java.sql.RowId</code> object. The
       
  1953     * driver converts this to a SQL <code>ROWID</code> when it sends it to the
       
  1954     * database.
       
  1955     *
       
  1956     * @param parameterName the name of the parameter
       
  1957     * @param x the parameter value
       
  1958     * @throws SQLException if a database access error occurs
       
  1959     * @since 1.6
       
  1960     */
       
  1961    void setRowId(String parameterName, RowId x) throws SQLException;
       
  1962 
       
  1963     /**
       
  1964      * Sets the designated parameter to the given <code>String</code> object.
       
  1965      * The driver converts this to a SQL <code>NCHAR</code> or
       
  1966      * <code>NVARCHAR</code> or <code>LONGNVARCHAR</code> value
       
  1967      * (depending on the argument's
       
  1968      * size relative to the driver's limits on <code>NVARCHAR</code> values)
       
  1969      * when it sends it to the database.
       
  1970      *
       
  1971      * @param parameterIndex of the first parameter is 1, the second is 2, ...
       
  1972      * @param value the parameter value
       
  1973      * @throws SQLException if the driver does not support national
       
  1974      *         character sets;  if the driver can detect that a data conversion
       
  1975      *  error could occur ; or if a database access error occurs
       
  1976      * @since 1.6
       
  1977      */
       
  1978      void setNString(int parameterIndex, String value) throws SQLException;
       
  1979 
       
  1980     /**
       
  1981      * Sets the designated parameter to the given <code>String</code> object.
       
  1982      * The driver converts this to a SQL <code>NCHAR</code> or
       
  1983      * <code>NVARCHAR</code> or <code>LONGNVARCHAR</code>
       
  1984      * @param parameterName the name of the column to be set
       
  1985      * @param value the parameter value
       
  1986      * @throws SQLException if the driver does not support national
       
  1987      *         character sets;  if the driver can detect that a data conversion
       
  1988      *  error could occur; or if a database access error occurs
       
  1989      * @since 1.6
       
  1990      */
       
  1991     public void setNString(String parameterName, String value)
       
  1992             throws SQLException;
       
  1993 
       
  1994     /**
       
  1995      * Sets the designated parameter to a {@code Reader} object. The
       
  1996      * {@code Reader} reads the data till end-of-file is reached. The
       
  1997      * driver does the necessary conversion from Java character format to
       
  1998      * the national character set in the database.
       
  1999      * @param parameterIndex of the first parameter is 1, the second is 2, ...
       
  2000      * @param value the parameter value
       
  2001      * @param length the number of characters in the parameter data.
       
  2002      * @throws SQLException if the driver does not support national
       
  2003      *         character sets;  if the driver can detect that a data conversion
       
  2004      *  error could occur ; or if a database access error occurs
       
  2005      * @since 1.6
       
  2006      */
       
  2007      void setNCharacterStream(int parameterIndex, Reader value, long length) throws SQLException;
       
  2008 
       
  2009     /**
       
  2010      * Sets the designated parameter to a {@code Reader} object. The
       
  2011      * {@code Reader} reads the data till end-of-file is reached. The
       
  2012      * driver does the necessary conversion from Java character format to
       
  2013      * the national character set in the database.
       
  2014      * @param parameterName the name of the column to be set
       
  2015      * @param value the parameter value
       
  2016      * @param length the number of characters in the parameter data.
       
  2017      * @throws SQLException if the driver does not support national
       
  2018      *         character sets;  if the driver can detect that a data conversion
       
  2019      *  error could occur; or if a database access error occurs
       
  2020      * @since 1.6
       
  2021      */
       
  2022     public void setNCharacterStream(String parameterName, Reader value, long length)
       
  2023             throws SQLException;
       
  2024 
       
  2025     /**
       
  2026      * Sets the designated parameter to a {@code Reader} object. The
       
  2027      * {@code Reader} reads the data till end-of-file is reached. The
       
  2028      * driver does the necessary conversion from Java character format to
       
  2029      * the national character set in the database.
       
  2030 
       
  2031      * <P><B>Note:</B> This stream object can either be a standard
       
  2032      * Java stream object or your own subclass that implements the
       
  2033      * standard interface.
       
  2034      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  2035      * it might be more efficient to use a version of
       
  2036      * <code>setNCharacterStream</code> which takes a length parameter.
       
  2037      *
       
  2038      * @param parameterName the name of the parameter
       
  2039      * @param value the parameter value
       
  2040      * @throws SQLException if the driver does not support national
       
  2041      *         character sets;  if the driver can detect that a data conversion
       
  2042      *  error could occur ; if a database access error occurs; or
       
  2043      * this method is called on a closed <code>CallableStatement</code>
       
  2044      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  2045      * @since 1.6
       
  2046      */
       
  2047      void setNCharacterStream(String parameterName, Reader value) throws SQLException;
       
  2048 
       
  2049     /**
       
  2050     * Sets the designated parameter to a <code>java.sql.NClob</code> object. The object
       
  2051     * implements the <code>java.sql.NClob</code> interface. This <code>NClob</code>
       
  2052     * object maps to a SQL <code>NCLOB</code>.
       
  2053     * @param parameterName the name of the column to be set
       
  2054     * @param value the parameter value
       
  2055     * @throws SQLException if the driver does not support national
       
  2056     *         character sets;  if the driver can detect that a data conversion
       
  2057     *  error could occur; or if a database access error occurs
       
  2058     * @since 1.6
       
  2059     */
       
  2060     void setNClob(String parameterName, NClob value) throws SQLException;
       
  2061 
       
  2062     /**
       
  2063      * Sets the designated parameter to a {@code Reader} object.
       
  2064      * The {@code Reader} must contain  the number
       
  2065      * of characters specified by length otherwise a <code>SQLException</code> will be
       
  2066      * generated when the <code>CallableStatement</code> is executed.
       
  2067      * This method differs from the <code>setCharacterStream (int, Reader, int)</code> method
       
  2068      * because it informs the driver that the parameter value should be sent to
       
  2069      * the server as a <code>NCLOB</code>.  When the <code>setCharacterStream</code> method is used, the
       
  2070      * driver may have to do extra work to determine whether the parameter
       
  2071      * data should be send to the server as a <code>LONGNVARCHAR</code> or a <code>NCLOB</code>
       
  2072      *
       
  2073      * @param parameterName the name of the parameter to be set
       
  2074      * @param reader An object that contains the data to set the parameter value to.
       
  2075      * @param length the number of characters in the parameter data.
       
  2076      * @throws SQLException if parameterIndex does not correspond to a parameter
       
  2077      * marker in the SQL statement; if the length specified is less than zero;
       
  2078      * if the driver does not support national
       
  2079      *         character sets;  if the driver can detect that a data conversion
       
  2080      *  error could occur; if a database access error occurs or
       
  2081      * this method is called on a closed <code>CallableStatement</code>
       
  2082      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
  2083      * this method
       
  2084      * @since 1.6
       
  2085      */
       
  2086      void setNClob(String parameterName, Reader reader, long length)
       
  2087        throws SQLException;
       
  2088 
       
  2089     /**
       
  2090      * Sets the designated parameter to a {@code Reader} object.
       
  2091      * This method differs from the <code>setCharacterStream (int, Reader)</code> method
       
  2092      * because it informs the driver that the parameter value should be sent to
       
  2093      * the server as a <code>NCLOB</code>.  When the <code>setCharacterStream</code> method is used, the
       
  2094      * driver may have to do extra work to determine whether the parameter
       
  2095      * data should be send to the server as a <code>LONGNVARCHAR</code> or a <code>NCLOB</code>
       
  2096      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  2097      * it might be more efficient to use a version of
       
  2098      * <code>setNClob</code> which takes a length parameter.
       
  2099      *
       
  2100      * @param parameterName the name of the parameter
       
  2101      * @param reader An object that contains the data to set the parameter value to.
       
  2102      * @throws SQLException if the driver does not support national character sets;
       
  2103      * if the driver can detect that a data conversion
       
  2104      *  error could occur;  if a database access error occurs or
       
  2105      * this method is called on a closed <code>CallableStatement</code>
       
  2106      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  2107      *
       
  2108      * @since 1.6
       
  2109      */
       
  2110      void setNClob(String parameterName, Reader reader)
       
  2111        throws SQLException;
       
  2112 
       
  2113     /**
       
  2114      * Sets the designated parameter to a {@code Reader} object.
       
  2115      * The {@code Reader} must contain  the number
       
  2116      * of characters specified by length otherwise a <code>SQLException</code> will be
       
  2117      * generated when the <code>PreparedStatement</code> is executed.
       
  2118      * This method differs from the <code>setCharacterStream (int, Reader, int)</code> method
       
  2119      * because it informs the driver that the parameter value should be sent to
       
  2120      * the server as a <code>NCLOB</code>.  When the <code>setCharacterStream</code> method is used, the
       
  2121      * driver may have to do extra work to determine whether the parameter
       
  2122      * data should be sent to the server as a <code>LONGNVARCHAR</code> or a <code>NCLOB</code>
       
  2123      * @param parameterIndex index of the first parameter is 1, the second is 2, ...
       
  2124      * @param reader An object that contains the data to set the parameter value to.
       
  2125      * @param length the number of characters in the parameter data.
       
  2126      * @throws SQLException if parameterIndex does not correspond to a parameter
       
  2127      * marker in the SQL statement; if the length specified is less than zero;
       
  2128      * if the driver does not support national character sets;
       
  2129      * if the driver can detect that a data conversion
       
  2130      *  error could occur;  if a database access error occurs or
       
  2131      * this method is called on a closed <code>PreparedStatement</code>
       
  2132      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  2133      *
       
  2134      * @since 1.6
       
  2135      */
       
  2136      void setNClob(int parameterIndex, Reader reader, long length)
       
  2137        throws SQLException;
       
  2138 
       
  2139     /**
       
  2140      * Sets the designated parameter to a <code>java.sql.NClob</code> object. The driver converts this to a
       
  2141      * SQL <code>NCLOB</code> value when it sends it to the database.
       
  2142      * @param parameterIndex of the first parameter is 1, the second is 2, ...
       
  2143      * @param value the parameter value
       
  2144      * @throws SQLException if the driver does not support national
       
  2145      *         character sets;  if the driver can detect that a data conversion
       
  2146      *  error could occur ; or if a database access error occurs
       
  2147      * @since 1.6
       
  2148      */
       
  2149      void setNClob(int parameterIndex, NClob value) throws SQLException;
       
  2150 
       
  2151     /**
       
  2152      * Sets the designated parameter to a {@code Reader} object.
       
  2153      * This method differs from the <code>setCharacterStream (int, Reader)</code> method
       
  2154      * because it informs the driver that the parameter value should be sent to
       
  2155      * the server as a <code>NCLOB</code>.  When the <code>setCharacterStream</code> method is used, the
       
  2156      * driver may have to do extra work to determine whether the parameter
       
  2157      * data should be sent to the server as a <code>LONGNVARCHAR</code> or a <code>NCLOB</code>
       
  2158      * <P><B>Note:</B> Consult your JDBC driver documentation to determine if
       
  2159      * it might be more efficient to use a version of
       
  2160      * <code>setNClob</code> which takes a length parameter.
       
  2161      *
       
  2162      * @param parameterIndex index of the first parameter is 1, the second is 2, ...
       
  2163      * @param reader An object that contains the data to set the parameter value to.
       
  2164      * @throws SQLException if parameterIndex does not correspond to a parameter
       
  2165      * marker in the SQL statement;
       
  2166      * if the driver does not support national character sets;
       
  2167      * if the driver can detect that a data conversion
       
  2168      *  error could occur;  if a database access error occurs or
       
  2169      * this method is called on a closed <code>PreparedStatement</code>
       
  2170      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  2171      *
       
  2172      * @since 1.6
       
  2173      */
       
  2174      void setNClob(int parameterIndex, Reader reader)
       
  2175        throws SQLException;
       
  2176 
       
  2177     /**
       
  2178      * Sets the designated parameter to the given <code>java.net.URL</code> value.
       
  2179      * The driver converts this to an SQL <code>DATALINK</code> value
       
  2180      * when it sends it to the database.
       
  2181      *
       
  2182      * @param parameterIndex the first parameter is 1, the second is 2, ...
       
  2183      * @param x the <code>java.net.URL</code> object to be set
       
  2184      * @exception SQLException if a database access error occurs or
       
  2185      * this method is called on a closed <code>PreparedStatement</code>
       
  2186      * @throws SQLFeatureNotSupportedException  if the JDBC driver does not support this method
       
  2187      * @since 1.4
       
  2188      */
       
  2189     void setURL(int parameterIndex, java.net.URL x) throws SQLException;
       
  2190 
       
  2191 
       
  2192 
       
  2193 }