/* * @(#)RowSet.java 1.15 04/05/05 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package javax.sql; import java.sql.*; import java.io.*; import java.math.*; import java.util.*; /** * The interface that adds support to the JDBC API for the * JavaBeansTM component model. * A rowset, which can be used as a JavaBeans component in * a visual Bean development environment, can be created and * configured at design time and executed at run time. *
* The RowSet
* interface provides a set of JavaBeans properties that allow a RowSet
* instance to be configured to connect to a JDBC data source and read
* some data from the data source. A group of setter methods (setInt
,
* setBytes
, setString
, and so on)
* provide a way to pass input parameters to a rowset's command property.
* This command is the SQL query the rowset uses when it gets its data from
* a relational database, which is generally the case.
*
* The RowSet
* interface supports JavaBeans events, allowing other components in an
* application to be notified when an event occurs on a rowset,
* such as a change in its value.
*
*
The RowSet
interface is unique in that it is intended to be
* implemented using the rest of the JDBC API. In other words, a
* RowSet
implementation is a layer of software that executes "on top"
* of a JDBC driver. Implementations of the RowSet
interface can
* be provided by anyone, including JDBC driver vendors who want to
* provide a RowSet
implementation as part of their JDBC products.
*
* A RowSet
object may make a connection with a data source and
* maintain that connection throughout its life cycle, in which case it is
* called a connected rowset. A rowset may also make a connection with
* a data source, get data from it, and then close the connection. Such a rowset
* is called a disconnected rowset. A disconnected rowset may make
* changes to its data while it is disconnected and then send the changes back
* to the original source of the data, but it must reestablish a connection to do so.
*
* A disconnected rowset may have a reader (a RowSetReader
object)
* and a writer (a RowSetWriter
object) associated with it.
* The reader may be implemented in many different ways to populate a rowset
* with data, including getting data from a non-relational data source. The
* writer can also be implemented in many different ways to propagate changes
* made to the rowset's data back to the underlying data source.
*
* Rowsets are easy to use. The RowSet
interface extends the standard
* java.sql.ResultSet
interface. The RowSetMetaData
* interface extends the java.sql.ResultSetMetaData
interface.
* Thus, developers familiar
* with the JDBC API will have to learn a minimal number of new APIs to
* use rowsets. In addition, third-party software tools that work with
* JDBC ResultSet
objects will also easily be made to work with rowsets.
*
* @since 1.4
*/
public interface RowSet extends ResultSet {
//-----------------------------------------------------------------------
// Properties
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
// The following properties may be used to create a Connection.
//-----------------------------------------------------------------------
/**
* Retrieves the url property this RowSet
object will use to
* create a connection if it uses the DriverManager
* instead of a DataSource
object to establish the connection.
* The default value is null
.
*
* @return a string url
* @exception SQLException if a database access error occurs
* @see #setUrl
*/
String getUrl() throws SQLException;
/**
* Sets the URL this RowSet
object will use when it uses the
* DriverManager
to create a connection.
*
* Setting this property is optional. If a URL is used, a JDBC driver
* that accepts the URL must be loaded by the application before the
* rowset is used to connect to a database. The rowset will use the URL
* internally to create a database connection when reading or writing
* data. Either a URL or a data source name is used to create a
* connection, whichever was specified most recently.
*
* @param url a string value; may be null
* @exception SQLException if a database access error occurs
* @see #getUrl
*/
void setUrl(String url) throws SQLException;
/**
* Retrieves the logical name that identifies the data source for this
* RowSet
object. Users should set
* either the url property or the data source name property. The rowset will use
* the property that was set more recently to get a connection.
*
* @return a data source name
* @see #setDataSourceName
* @see #setUrl
*/
String getDataSourceName();
/**
* Sets the data source name property for this RowSet
object to the
* given String
.
*
* The value of the data source name property can be used to do a lookup of
* a
* Attempts to update a read-only rowset will result in an
* Note: You must specify the parameter's SQL type.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param sqlType a SQL type code defined by Note: To be portable, applications must give the
* SQL type code and the fully qualified SQL type name when specifying
* a NULL UDT or Note: This stream object can either be a standard
* Java stream object or your own subclass that implements the
* standard interface.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the Java input stream that contains the ASCII parameter value
* @param length the number of bytes in the stream
* @exception SQLException if a database access error occurs
*/
void setAsciiStream(int parameterIndex, java.io.InputStream x, int length)
throws SQLException;
/**
* Sets the designated parameter in this Note: This stream object can either be a standard
* Java stream object or your own subclass that implements the
* standard interface.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the java input stream which contains the binary parameter value
* @param length the number of bytes in the stream
* @exception SQLException if a database access error occurs
*/
void setBinaryStream(int parameterIndex, java.io.InputStream x,
int length) throws SQLException;
/**
* Sets the designated parameter in this Note: This stream object can either be a standard
* Java stream object or your own subclass that implements the
* standard interface.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param reader the The given Java object will be converted to the targetSqlType
* before being sent to the database.
*
* If the object is of a class implementing Note that this method may be used to pass datatabase-specific
* abstract data types.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the object containing the input parameter value
* @param targetSqlType the SQL type (as defined in
* Even though it is supported, it is not recommended that this method
* be called with floating point input values.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the object containing the input parameter value
* @param targetSqlType the SQL type (as defined in The JDBC specification provides a standard mapping from
* Java Object types to SQL types. The driver will convert the
* given Java object to its standard SQL mapping before sending it
* to the database.
*
* Note that this method may be used to pass datatabase-specific
* abstract data types by using a driver-specific Java type.
*
* If the object is of a class implementing
* An exception is thrown if there is an ambiguity, for example, if the
* object is of a class implementing more than one of these interfaces.
*
* @param parameterIndex The first parameter is 1, the second is 2, ...
* @param x The object containing the input parameter value
* @exception SQLException if a database access error occurs
*/
void setObject(int parameterIndex, Object x) throws SQLException;
/**
* Sets the designated parameter in this In general, parameter values remain in force for repeated use of a
*
* The
* If the required properties have not been set, an exception is
* thrown. If this method is successful, the current contents of the rowset are
* discarded and the rowset's metadata is also (re)set. If there are
* outstanding updates, they are ignored.
*
* If this DataSource
object that has been registered with a naming
* service. After being retrieved, the DataSource
object can be
* used to create a connection to the data source that it represents.
*
* @param name the logical name of the data source for this RowSet
* object
* @exception SQLException if a database access error occurs
* @see #getDataSourceName
*/
void setDataSourceName(String name) throws SQLException;
/**
* Retrieves the username used to create a database connection for this
* RowSet
object.
* The username property is set at run time before calling the method
* execute
. It is
* not usually part of the serialized state of a RowSet
object.
*
* @return the username property
* @see #setUsername
*/
String getUsername();
/**
* Sets the username property for this RowSet
object to the
* given String
.
*
* @param name a user name
* @exception SQLException if a database access error occurs
* @see #getUsername
*/
void setUsername(String name) throws SQLException;
/**
* Retrieves the password used to create a database connection.
* The password property is set at run time before calling the method
* execute
. It is not usually part of the serialized state
* of a RowSet
object.
*
* @return the password for making a database connection
* @see #setPassword
*/
String getPassword();
/**
* Sets the database password for this RowSet
object to
* the given String
.
*
* @param password the password string
* @exception SQLException if a database access error occurs
* @see #getPassword
*/
void setPassword(String password) throws SQLException;
/**
* Retrieves the transaction isolation level set for this
* RowSet
object.
*
* @return the transaction isolation level; one of
* Connection.TRANSACTION_READ_UNCOMMITTED
,
* Connection.TRANSACTION_READ_COMMITTED
,
* Connection.TRANSACTION_REPEATABLE_READ
, or
* Connection.TRANSACTION_SERIALIZABLE
* @see #setTransactionIsolation
*/
int getTransactionIsolation();
/**
* Sets the transaction isolation level for this RowSet
obejct.
*
* @param level the transaction isolation level; one of
* Connection.TRANSACTION_READ_UNCOMMITTED
,
* Connection.TRANSACTION_READ_COMMITTED
,
* Connection.TRANSACTION_REPEATABLE_READ
, or
* Connection.TRANSACTION_SERIALIZABLE
* @exception SQLException if a database access error occurs
* @see #getTransactionIsolation
*/
void setTransactionIsolation(int level) throws SQLException;
/**
* Retrieves the Map
object associated with this
* RowSet
object, which specifies the custom mapping
* of SQL user-defined types, if any. The default is for the
* type map to be empty.
*
* @return a java.util.Map
object containing the names of
* SQL user-defined types and the Java classes to which they are
* to be mapped
*
* @exception SQLException if a database access error occurs
* @see #setTypeMap
*/
java.util.Mapjava.util.Map
object as the default
* type map for this RowSet
object. This type map will be
* used unless another type map is supplied as a method parameter.
*
* @param map a java.util.Map
object containing the names of
* SQL user-defined types and the Java classes to which they are
* to be mapped
* @exception SQLException if a database access error occurs
* @see #getTypeMap
*/
void setTypeMap(java.util.MapRowSet
object's command property.
*
* The command property contains a command string, which must be an SQL
* query, that can be executed to fill the rowset with data.
* The default value is null
.
*
* @return the command string; may be null
* @see #setCommand
*/
String getCommand();
/**
* Sets this RowSet
object's command property to the given
* SQL query.
*
* This property is optional
* when a rowset gets its data from a data source that does not support
* commands, such as a spreadsheet.
*
* @param cmd the SQL query that will be used to get the data for this
* RowSet
object; may be null
* @exception SQLException if a database access error occurs
* @see #getCommand
*/
void setCommand(String cmd) throws SQLException;
/**
* Retrieves whether this RowSet
object is read-only.
* If updates are possible, the default is for a rowset to be
* updatable.
* SQLException
being thrown.
*
* @return true
if this RowSet
object is
* read-only; false
if it is updatable
* @see #setReadOnly
*/
boolean isReadOnly();
/**
* Sets whether this RowSet
object is read-only to the
* given boolean
.
*
* @param value true
if read-only; false
if
* updatable
* @exception SQLException if a database access error occurs
* @see #isReadOnly
*/
void setReadOnly(boolean value) throws SQLException;
/**
* Retrieves the maximum number of bytes that may be returned
* for certain column values.
* This limit applies only to BINARY
,
* VARBINARY
, LONGVARBINARYBINARY
, CHAR
,
* VARCHAR
, and LONGVARCHAR
columns.
* If the limit is exceeded, the excess data is silently discarded.
*
* @return the current maximum column size limit; zero means that there
* is no limit
* @exception SQLException if a database access error occurs
* @see #setMaxFieldSize
*/
int getMaxFieldSize() throws SQLException;
/**
* Sets the maximum number of bytes that can be returned for a column
* value to the given number of bytes.
* This limit applies only to BINARY
,
* VARBINARY
, LONGVARBINARYBINARY
, CHAR
,
* VARCHAR
, and LONGVARCHAR
columns.
* If the limit is exceeded, the excess data is silently discarded.
* For maximum portability, use values greater than 256.
*
* @param max the new max column size limit in bytes; zero means unlimited
* @exception SQLException if a database access error occurs
* @see #getMaxFieldSize
*/
void setMaxFieldSize(int max) throws SQLException;
/**
* Retrieves the maximum number of rows that this RowSet
* object can contain.
* If the limit is exceeded, the excess rows are silently dropped.
*
* @return the current maximum number of rows that this RowSet
* object can contain; zero means unlimited
* @exception SQLException if a database access error occurs
* @see #setMaxRows
*/
int getMaxRows() throws SQLException;
/**
* Sets the maximum number of rows that this RowSet
* object can contain to the specified number.
* If the limit is exceeded, the excess rows are silently dropped.
*
* @param max the new maximum number of rows; zero means unlimited
* @exception SQLException if a database access error occurs
* @see #getMaxRows
*/
void setMaxRows(int max) throws SQLException;
/**
* Retrieves whether escape processing is enabled for this
* RowSet
object.
* If escape scanning is enabled, which is the default, the driver will do
* escape substitution before sending an SQL statement to the database.
*
* @return true
if escape processing is enabled;
* false
if it is disabled
* @exception SQLException if a database access error occurs
* @see #setEscapeProcessing
*/
boolean getEscapeProcessing() throws SQLException;
/**
* Sets escape processing for this RowSet
object on or
* off. If escape scanning is on (the default), the driver will do
* escape substitution before sending an SQL statement to the database.
*
* @param enable true
to enable escape processing;
* false
to disable it
* @exception SQLException if a database access error occurs
* @see #getEscapeProcessing
*/
void setEscapeProcessing(boolean enable) throws SQLException;
/**
* Retrieves the maximum number of seconds the driver will wait for
* a statement to execute.
* If this limit is exceeded, an SQLException
is thrown.
*
* @return the current query timeout limit in seconds; zero means
* unlimited
* @exception SQLException if a database access error occurs
* @see #setQueryTimeout
*/
int getQueryTimeout() throws SQLException;
/**
* Sets the maximum time the driver will wait for
* a statement to execute to the given number of seconds.
* If this limit is exceeded, an SQLException
is thrown.
*
* @param seconds the new query timeout limit in seconds; zero means
* that there is no limit
* @exception SQLException if a database access error occurs
* @see #getQueryTimeout
*/
void setQueryTimeout(int seconds) throws SQLException;
/**
* Sets the type of this RowSet
object to the given type.
* This method is used to change the type of a rowset, which is by
* default read-only and non-scrollable.
*
* @param type one of the ResultSet
constants specifying a type:
* ResultSet.TYPE_FORWARD_ONLY
,
* ResultSet.TYPE_SCROLL_INSENSITIVE
, or
* ResultSet.TYPE_SCROLL_SENSITIVE
* @exception SQLException if a database access error occurs
* @see java.sql.ResultSet#getType
*/
void setType(int type) throws SQLException;
/**
* Sets the concurrency of this RowSet
object to the given
* concurrency level. This method is used to change the concurrency level
* of a rowset, which is by default ResultSet.CONCUR_READ_ONLY
*
* @param concurrency one of the ResultSet
constants specifying a
* concurrency level: ResultSet.CONCUR_READ_ONLY
or
* ResultSet.CONCUR_UPDATABLE
* @exception SQLException if a database access error occurs
* @see ResultSet#getConcurrency
*/
void setConcurrency(int concurrency) throws SQLException;
//-----------------------------------------------------------------------
// Parameters
//-----------------------------------------------------------------------
/**
* The RowSet
setter methods are used to set any input parameters
* needed by the RowSet
object's command.
* Parameters are set at run time, as opposed to design time.
*/
/**
* Sets the designated parameter in this RowSet
object's SQL
* command to SQL NULL
.
*
* java.sql.Types
* @exception SQLException if a database access error occurs
*/
void setNull(int parameterIndex, int sqlType) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's SQL
* command to SQL NULL
. This version of the method setNull
* should be used for SQL user-defined types (UDTs) and REF
type
* parameters. Examples of UDTs include: STRUCT
, DISTINCT
,
* JAVA_OBJECT
, and named array types.
*
* REF
parameter. In the case of a UDT,
* the name is the type name of the parameter itself. For a REF
* parameter, the name is the type name of the referenced type. If
* a JDBC driver does not need the type code or type name information,
* it may ignore it.
*
* Although it is intended for UDT and REF
parameters,
* this method may be used to set a null parameter of any JDBC type.
* If the parameter does not have a user-defined or REF
type,
* the typeName parameter is ignored.
*
*
* @param paramIndex the first parameter is 1, the second is 2, ...
* @param sqlType a value from java.sql.Types
* @param typeName the fully qualified name of an SQL UDT or the type
* name of the SQL structured type being referenced by a REF
* type; ignored if the parameter is not a UDT or REF
type
* @exception SQLException if a database access error occurs
*/
void setNull (int paramIndex, int sqlType, String typeName)
throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* to the given Java boolean
value. The driver converts this to
* an SQL BIT
value before sending it to the database.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @exception SQLException if a database access error occurs
*/
void setBoolean(int parameterIndex, boolean x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* to the given Java byte
value. The driver converts this to
* an SQL TINYINT
value before sending it to the database.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @exception SQLException if a database access error occurs
*/
void setByte(int parameterIndex, byte x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* to the given Java short
value. The driver converts this to
* an SQL SMALLINT
value before sending it to the database.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @exception SQLException if a database access error occurs
*/
void setShort(int parameterIndex, short x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* to the given Java int
value. The driver converts this to
* an SQL INTEGER
value before sending it to the database.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @exception SQLException if a database access error occurs
*/
void setInt(int parameterIndex, int x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* to the given Java long
value. The driver converts this to
* an SQL BIGINT
value before sending it to the database.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @exception SQLException if a database access error occurs
*/
void setLong(int parameterIndex, long x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* to the given Java float
value. The driver converts this to
* an SQL REAL
value before sending it to the database.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @exception SQLException if a database access error occurs
*/
void setFloat(int parameterIndex, float x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* to the given Java double
value. The driver converts this to
* an SQL DOUBLE
value before sending it to the database.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @exception SQLException if a database access error occurs
*/
void setDouble(int parameterIndex, double x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* to the given java.math.BigDeciaml
value.
* The driver converts this to
* an SQL NUMERIC
value before sending it to the database.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @exception SQLException if a database access error occurs
*/
void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* to the given Java String
value. Before sending it to the
* database, the driver converts this to an SQL VARCHAR
or
* LONGVARCHAR
value, depending on the argument's size relative
* to the driver's limits on VARCHAR
values.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @exception SQLException if a database access error occurs
*/
void setString(int parameterIndex, String x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* to the given Java array of byte
values. Before sending it to the
* database, the driver converts this to an SQL VARBINARY
or
* LONGVARBINARY
value, depending on the argument's size relative
* to the driver's limits on VARBINARY
values.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @exception SQLException if a database access error occurs
*/
void setBytes(int parameterIndex, byte x[]) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* to the given java.sql.Date
value. The driver converts this to
* an SQL DATE
value before sending it to the database, using the
* default java.util.Calendar
to calculate the date.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @exception SQLException if a database access error occurs
*/
void setDate(int parameterIndex, java.sql.Date x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* to the given java.sql.Time
value. The driver converts this to
* an SQL TIME
value before sending it to the database, using the
* default java.util.Calendar
to calculate it.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @exception SQLException if a database access error occurs
*/
void setTime(int parameterIndex, java.sql.Time x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* to the given java.sql.Timestamp
value. The driver converts this to
* an SQL TIMESTAMP
value before sending it to the database, using the
* default java.util.Calendar
to calculate it.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @exception SQLException if a database access error occurs
*/
void setTimestamp(int parameterIndex, java.sql.Timestamp x)
throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* to the given java.io.InputStream
value.
* It may be more practical to send a very large ASCII value via a
* java.io.InputStream
rather than as a LONGVARCHAR
* parameter. The driver will read the data from the stream
* as needed until it reaches end-of-file.
*
* RowSet
object's command
* to the given java.io.InputStream
value.
* It may be more practical to send a very large binary value via a
* java.io.InputStream
rather than as a LONGVARBINARY
* parameter. The driver will read the data from the stream
* as needed until it reaches end-of-file.
*
* RowSet
object's command
* to the given java.io.Reader
value.
* It may be more practical to send a very large UNICODE value via a
* java.io.Reader
rather than as a LONGVARCHAR
* parameter. The driver will read the data from the stream
* as needed until it reaches end-of-file.
*
* Reader
object that contains the UNICODE data
* to be set
* @param length the number of characters in the stream
* @exception SQLException if a database access error occurs
*/
void setCharacterStream(int parameterIndex,
Reader reader,
int length) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* with the given Java Object
. For integral values, the
* java.lang
equivalent objects should be used (for example,
* an instance of the class Integer
for an int
).
*
* SQLData
,
* the rowset should call the method SQLData.writeSQL
* to write the object to an SQLOutput
data stream.
* If the object is an instance of a class implementing the Ref
,
* Struct
, Array
, Blob
,
* or Clob
interfaces,
* the driver uses the default mapping to the corresponding SQL type.
*
* java.sql.Types
)
* to be sent to the database. The scale argument may further qualify this
* type.
* @param scale for java.sql.Types.DECIMAL
or
* java.sql.Types.NUMERIC
types, this is the number of
* digits after the decimal point. For all other types, this value
* will be ignored.
* @exception SQLException if a database access error occurs
* @see java.sql.Types
*/
void setObject(int parameterIndex, Object x, int targetSqlType, int scale)
throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* with a Java Object
. For integral values, the
* java.lang
equivalent objects should be used.
* This method is like setObject
above, but the scale used is the scale
* of the second parameter. Scalar values have a scale of zero. Literal
* values have the scale present in the literal.
* java.sql.Types
)
* to be sent to the database
* @exception SQLException if a database access error occurs
*/
void setObject(int parameterIndex, Object x,
int targetSqlType) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* with a Java Object
. For integral values, the
* java.lang
equivalent objects should be used.
*
* SQLData
,
* the rowset should call the method SQLData.writeSQL
* to write the object to an SQLOutput
data stream.
* If the object is an instance of a class implementing the Ref
,
* Struct
, Array
, Blob
,
* or Clob
interfaces,
* the driver uses the default mapping to the corresponding SQL type.
* RowSet
object's command
* with the given Ref
value. The driver will convert this
* to the appropriate REF(<structured-type>)
value.
*
* @param i the first parameter is 1, the second is 2, ...
* @param x an object representing data of an SQL REF
type
* @exception SQLException if a database access error occurs
*/
void setRef (int i, Ref x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* with the given Blob
value. The driver will convert this
* to the BLOB
value that the Blob
object
* represents before sending it to the database.
*
* @param i the first parameter is 1, the second is 2, ...
* @param x an object representing a BLOB
* @exception SQLException if a database access error occurs
*/
void setBlob (int i, Blob x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* with the given Clob
value. The driver will convert this
* to the CLOB
value that the Clob
object
* represents before sending it to the database.
*
* @param i the first parameter is 1, the second is 2, ...
* @param x an object representing a CLOB
* @exception SQLException if a database access error occurs
*/
void setClob (int i, Clob x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* with the given Array
value. The driver will convert this
* to the ARRAY
value that the Array
object
* represents before sending it to the database.
*
* @param i the first parameter is 1, the second is 2, ...
* @param x an object representing an SQL array
* @exception SQLException if a database access error occurs
*/
void setArray (int i, Array x) throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* with the given java.sql.Date
value. The driver will convert this
* to an SQL DATE
value, using the given java.util.Calendar
* object to calculate the date.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @param cal the java.util.Calendar
object to use for calculating the date
* @exception SQLException if a database access error occurs
*/
void setDate(int parameterIndex, java.sql.Date x, Calendar cal)
throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* with the given java.sql.Time
value. The driver will convert this
* to an SQL TIME
value, using the given java.util.Calendar
* object to calculate it, before sending it to the database.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @param cal the java.util.Calendar
object to use for calculating the time
* @exception SQLException if a database access error occurs
*/
void setTime(int parameterIndex, java.sql.Time x, Calendar cal)
throws SQLException;
/**
* Sets the designated parameter in this RowSet
object's command
* with the given java.sql.Timestamp
value. The driver will
* convert this to an SQL TIMESTAMP
value, using the given
* java.util.Calendar
object to calculate it, before sending it to the
* database.
*
* @param parameterIndex the first parameter is 1, the second is 2, ...
* @param x the parameter value
* @param cal the java.util.Calendar
object to use for calculating the
* timestamp
* @exception SQLException if a database access error occurs
*/
void setTimestamp(int parameterIndex, java.sql.Timestamp x, Calendar cal)
throws SQLException;
/**
* Clears the parameters set for this RowSet
object's command.
* RowSet
object. Setting a parameter value automatically clears its
* previous value. However, in some cases it is useful to immediately
* release the resources used by the current parameter values, which can
* be done by calling the method clearParameters
.
*
* @exception SQLException if a database access error occurs
*/
void clearParameters() throws SQLException;
//---------------------------------------------------------------------
// Reading and writing data
//---------------------------------------------------------------------
/**
* Fills this RowSet
object with data.
* execute
method may use the following properties
* to create a connection for reading data: url, data source name,
* user name, password, transaction isolation, and type map.
*
* The execute
method may use the following properties
* to create a statement to execute a command:
* command, read only, maximum field size,
* maximum rows, escape processing, and query timeout.
* RowSet
object does not maintain a continuous connection
* with its source of data, it may use a reader (a RowSetReader
* object) to fill itself with data. In this case, a reader will have been
* registered with this RowSet
object, and the method
* execute
will call on the reader's readData
* method as part of its implementation.
*
* @exception SQLException if a database access error occurs or any of the
* properties necessary for making a connection and creating
* a statement have not been set
*/
void execute() throws SQLException;
//--------------------------------------------------------------------
// Events
//--------------------------------------------------------------------
/**
* Registers the given listener so that it will be notified of events
* that occur on this RowSet
object.
*
* @param listener a component that has implemented the RowSetListener
* interface and wants to be notified when events occur on this
* RowSet
object
* @see #removeRowSetListener
*/
void addRowSetListener(RowSetListener listener);
/**
* Removes the specified listener from the list of components that will be
* notified when an event occurs on this RowSet
object.
*
* @param listener a component that has been registered as a listener for this
* RowSet
object
* @see #addRowSetListener
*/
void removeRowSetListener(RowSetListener listener);
}