# Interface JoinRowSet

All Superinterfaces:
  `AutoCloseable, CachedRowSet, Joinable, ResultSet, RowSet, WebRowSet, Wrapper`

public interface JoinRowSet extends WebRowSet
The `JoinRowSet` interface provides a mechanism for combining related data from different `RowSet` objects into one `JoinRowSet` object, which represents an SQL `JOIN`. In other words, a `JoinRowSet` object acts as a container for the data from `RowSet` objects that form an SQL `JOIN` relationship.

The `Joinable` interface provides the methods for setting, retrieving, and unsetting a match column, the basis for establishing an SQL `JOIN` relationship. The match column may alternatively be set by supplying it to the appropriate version of the `JointRowSet` method `addRowSet`.

## 1.0 Overview

Disconnected `RowSet` objects (`CachedRowSet` objects and implementations extending the `CachedRowSet` interface) do not have a standard way to establish an SQL `JOIN` between `RowSet` objects without the expensive operation of reconnecting to the data source. The `JoinRowSet` interface is specifically designed to address this need.

Any `RowSet` object can be added to a `JoinRowSet` object to become part of an SQL `JOIN` relationship. This means that both connected and disconnected `RowSet` objects can be part of a `JOIN`. `RowSet` objects operating in a connected environment (`JdbcRowSet` objects) are encouraged to use the database to which they are already connected to establish SQL `JOIN` relationships between tables directly. However, it is possible for a `JdbcRowSet` object to be added to a `JoinRowSet` object if necessary.

Any number of `RowSet` objects can be added to an instance of `JoinRowSet` provided that they can be related in an SQL `JOIN`. By definition, the SQL `JOIN` statement is used to combine the data contained in two or more relational database tables based upon a common attribute. The `Joinable` interface provides the methods for establishing a common attribute, which is done by setting a match column. The match column commonly coincides with the primary key, but there is no requirement that the match column be the same as the primary key. By establishing and then enforcing column matches, a `JoinRowSet` object establishes `JOIN` relationships between `RowSet` objects without the assistance of an available relational database.

The type of `JOIN` to be established is determined by setting one of the `JoinRowSet` constants using the method `setJoinType`. The following SQL `JOIN` types can be set:

- `CROSS_JOIN`
- `FULL_JOIN`
- `INNER_JOIN` - the default if no `JOIN` type has been set
- `LEFT_OUTER_JOIN`
- `RIGHT_OUTER_JOIN`

Note that if no type is set, the `JOIN` will automatically be an inner join. The comments for the fields in the `JoinRowSet` interface explain these `JOIN` types, which are standard SQL `JOIN` types.

## 2.0 Using a `JoinRowSet` Object for Creating a `JOIN`

When a `JoinRowSet` object is created, it is empty. The first `RowSet` object to be added becomes the basis for the `JOIN` relationship. Applications must determine which column in each of the `RowSet` objects to be added to the `JoinRowSet` object should be the match column. All of the `RowSet` objects must contain a match column, and the values in each match column must be ones that can be compared to values in the other match columns. The columns do not have to have the same name, though they often do, and they do not have to store the exact same data type as long as the data types can be compared.

A match column can be set in two ways:

- By calling the `Joinable` method `setMatchColumn`
  This is the only method that can set the match column before a `RowSet` object is added to a `JoinRowSet` object. The `RowSet` object must have implemented the `Joinable` interface in order to use the method `setMatchColumn`. Once the match column value has been set, this method can be used to reset the match column at any time.
- By calling one of the versions of the `JoinRowSet` method `addRowSet` that takes a column name or number (or an array of column names or numbers)
  Four of the five `addRowSet` methods take a match column as a parameter. These four methods set or reset the match column at the time a `RowSet` object is being added to a `JoinRowSet` object.

## 3.0 Sample Usage

The following code fragment adds two `CachedRowSet` objects to a `JoinRowSet` object. Note that in this example, no SQL `JOIN` type is set, so the default `JOIN` type, which is INNER_JOIN, is established.

In the following code fragment, the table `EMPLOYEES`, whose match column is set to the first column (`EMP_ID`), is added to the `JoinRowSet` object jrs. Then the table `ESSP_BONUS_PLAN`, whose match column is likewise the `EMP_ID` column, is added. When this second table is added to jrs, only the rows in `ESSP_BONUS_PLAN` whose `EMP_ID` value matches an `EMP_ID` value in the `EMPLOYEES` table are added. In this case, everyone in the bonus plan is an employee, so all of the rows in the table `ESSP_BONUS_PLAN` are added to the `JoinRowSet` object. In this example, both `CachedRowSet` objects being added have implemented the `Joinable` interface and can therefore call the `Joinable` method `setMatchColumn`.

        JoinRowSet jrs = new JoinRowSetImpl();

        ResultSet rs1 = stmt.executeQuery("SELECT * FROM EMPLOYEES");
        CachedRowSet empl = new CachedRowSetImpl();
        empl.populate(rs1);
        empl.setMatchColumn(1);
        jrs.addRowSet(empl);

        ResultSet rs2 = stmt.executeQuery("SELECT * FROM ESSP_BONUS_PLAN");
        CachedRowSet bonus = new CachedRowSetImpl();
        bonus.populate(rs2);
        bonus.setMatchColumn(1); // EMP_ID is the first column
        jrs.addRowSet(bonus);

At this point, jrs is an inside JOIN of the two `RowSet` objects based on their `EMP_ID` columns. The application can now browse the combined data as if it were browsing one single `RowSet` object. Because jrs is itself a `RowSet` object, an application can navigate or modify it using `RowSet` methods.

        jrs.first();
        int employeeID = jrs.getInt(1);
        String employeeName = jrs.getString(2);

Note that because the SQL `JOIN` must be enforced when an application adds a second or subsequent `RowSet` object, there may be an initial degradation in performance while the `JOIN` is being performed.

The following code fragment adds an additional `CachedRowSet` object. In this case, the match column (`EMP_ID`) is set when the `CachedRowSet` object is added to the `JoinRowSet` object.

        ResultSet rs3 = stmt.executeQuery("SELECT * FROM 401K_CONTRIB");
        CachedRowSet fourO1k = new CachedRowSetImpl();
        four01k.populate(rs3);
        jrs.addRowSet(four01k, 1);

The `JoinRowSet` object jrs now contains values from all three tables. The data in each row in four01k in which the value for the `EMP_ID` column matches a value for the `EMP_ID` column in jrs has been added to jrs.

## 4.0 `JoinRowSet` Methods

The `JoinRowSet` interface supplies several methods for adding `RowSet` objects and for getting information about the `JoinRowSet` object.

- Methods for adding one or more `RowSet` objects
  These methods allow an application to add one `RowSet` object at a time or to add multiple `RowSet` objects at one time. In either case, the methods may specify the match column for each `RowSet` object being added.
- Methods for getting information
  One method retrieves the `RowSet` objects in the `JoinRowSet` object, and another method retrieves the `RowSet` names. A third method retrieves either the SQL `WHERE` clause used behind the scenes to form the `JOIN` or a text description of what the `WHERE` clause does.
- Methods related to the type of `JOIN`
  One method sets the `JOIN` type, and five methods find out whether the `JoinRowSet` object supports a given type.
- A method to make a separate copy of the `JoinRowSet` object
  This method creates a copy that can be persisted to the data source.

Since:
  1.5

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `CROSS_JOIN`
  An ANSI-style `JOIN` providing a cross product of two tables
  `static final int`
  `FULL_JOIN`
  An ANSI-style `JOIN` providing a full JOIN.
  `static final int`
  `INNER_JOIN`
  An ANSI-style `JOIN` providing a inner join between two tables.
  `static final int`
  `LEFT_OUTER_JOIN`
  An ANSI-style `JOIN` providing a left outer join between two tables.
  `static final int`
  `RIGHT_OUTER_JOIN`
  An ANSI-style `JOIN` providing a right outer join between two tables.

  ### Fields declared in interface CachedRowSet

  `COMMIT_ON_ACCEPT_CHANGES`
  Modifier and Type
  Field
  Description
  `static final boolean`
  `COMMIT_ON_ACCEPT_CHANGES`
  Deprecated.
  Because this field is final (it is part of an interface), its value cannot be changed.

  ### Fields declared in interface ResultSet

  `CLOSE_CURSORS_AT_COMMIT, CONCUR_READ_ONLY, CONCUR_UPDATABLE, FETCH_FORWARD, FETCH_REVERSE, FETCH_UNKNOWN, HOLD_CURSORS_OVER_COMMIT, TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE, TYPE_SCROLL_SENSITIVE`
  Modifier and Type
  Field
  Description
  `static final int`
  `CLOSE_CURSORS_AT_COMMIT`
  The constant indicating that open `ResultSet` objects with this holdability will be closed when the current transaction is committed.
  `static final int`
  `CONCUR_READ_ONLY`
  The constant indicating the concurrency mode for a `ResultSet` object that may NOT be updated.
  `static final int`
  `CONCUR_UPDATABLE`
  The constant indicating the concurrency mode for a `ResultSet` object that may be updated.
  `static final int`
  `FETCH_FORWARD`
  The constant indicating that the rows in a result set will be processed in a forward direction; first-to-last.
  `static final int`
  `FETCH_REVERSE`
  The constant indicating that the rows in a result set will be processed in a reverse direction; last-to-first.
  `static final int`
  `FETCH_UNKNOWN`
  The constant indicating that the order in which rows in a result set will be processed is unknown.
  `static final int`
  `HOLD_CURSORS_OVER_COMMIT`
  The constant indicating that open `ResultSet` objects with this holdability will remain open when the current transaction is committed.
  `static final int`
  `TYPE_FORWARD_ONLY`
  The constant indicating the type for a `ResultSet` object whose cursor may move only forward.
  `static final int`
  `TYPE_SCROLL_INSENSITIVE`
  The constant indicating the type for a `ResultSet` object that is scrollable but generally not sensitive to changes to the data that underlies the `ResultSet`.
  `static final int`
  `TYPE_SCROLL_SENSITIVE`
  The constant indicating the type for a `ResultSet` object that is scrollable and generally sensitive to changes to the data that underlies the `ResultSet`.

  ### Fields declared in interface WebRowSet

  `PUBLIC_XML_SCHEMA, SCHEMA_SYSTEM_ID`
  Modifier and Type
  Field
  Description
  `static final String`
  `PUBLIC_XML_SCHEMA`
  The public identifier for the XML Schema definition that defines the XML tags and their valid values for a `WebRowSet` implementation.
  `static final String`
  `SCHEMA_SYSTEM_ID`
  The URL for the XML Schema definition file that defines the XML tags and their valid values for a `WebRowSet` implementation.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addRowSet(RowSet[] rowset, int[] columnIdx)`
  Adds one or more `RowSet` objects contained in the given array of `RowSet` objects to this `JoinRowSet` object and sets the match column for each of the `RowSet` objects to the match columns in the given array of column indexes.
  `void`
  `addRowSet(RowSet[] rowset, String[] columnName)`
  Adds one or more `RowSet` objects contained in the given array of `RowSet` objects to this `JoinRowSet` object and sets the match column for each of the `RowSet` objects to the match columns in the given array of column names.
  `void`
  `addRowSet(Joinable rowset)`
  Adds the given `RowSet` object to this `JoinRowSet` object.
  `void`
  `addRowSet(RowSet rowset, int columnIdx)`
  Adds the given `RowSet` object to this `JoinRowSet` object and sets the designated column as the match column for the `RowSet` object.
  `void`
  `addRowSet(RowSet rowset, String columnName)`
  Adds rowset to this `JoinRowSet` object and sets the designated column as the match column.
  `int`
  `getJoinType()`
  Returns a `int` describing the set SQL `JOIN` type governing this JoinRowSet instance.
  `String[]`
  `getRowSetNames()`
  Returns a `String` array containing the names of the `RowSet` objects added to this `JoinRowSet` object.
  `Collection<?>`
  `getRowSets()`
  Returns a `Collection` object containing the `RowSet` objects that have been added to this `JoinRowSet` object.
  `String`
  `getWhereClause()`
  Return a SQL-like description of the WHERE clause being used in a JoinRowSet object.
  `void`
  `setJoinType(int joinType)`
  Allow the application to adjust the type of `JOIN` imposed on tables contained within the JoinRowSet object instance.
  `boolean`
  `supportsCrossJoin()`
  Indicates if CROSS_JOIN is supported by a JoinRowSet implementation
  `boolean`
  `supportsFullJoin()`
  Indicates if FULL_JOIN is supported by a JoinRowSet implementation
  `boolean`
  `supportsInnerJoin()`
  Indicates if INNER_JOIN is supported by a JoinRowSet implementation
  `boolean`
  `supportsLeftOuterJoin()`
  Indicates if LEFT_OUTER_JOIN is supported by a JoinRowSet implementation
  `boolean`
  `supportsRightOuterJoin()`
  Indicates if RIGHT_OUTER_JOIN is supported by a JoinRowSet implementation
  `CachedRowSet`
  `toCachedRowSet()`
  Creates a new `CachedRowSet` object containing the data in this `JoinRowSet` object, which can be saved to a data source using the `SyncProvider` object for the `CachedRowSet` object.

  ### Methods declared in interface CachedRowSet

  `acceptChanges, acceptChanges, columnUpdated, columnUpdated, commit, createCopy, createCopyNoConstraints, createCopySchema, createShared, execute, getKeyColumns, getOriginal, getOriginalRow, getPageSize, getRowSetWarnings, getShowDeleted, getSyncProvider, getTableName, nextPage, populate, populate, previousPage, release, restoreOriginal, rollback, rollback, rowSetPopulated, setKeyColumns, setMetaData, setOriginalRow, setPageSize, setShowDeleted, setSyncProvider, setTableName, size, toCollection, toCollection, toCollection, undoDelete, undoInsert, undoUpdate`
  Modifier and Type
  Method
  Description
  `void`
  `acceptChanges()`
  Propagates row update, insert and delete changes made to this `CachedRowSet` object to the underlying data source.
  `void`
  `acceptChanges(Connection con)`
  Propagates all row update, insert and delete changes to the data source backing this `CachedRowSet` object using the specified `Connection` object to establish a connection to the data source.
  `boolean`
  `columnUpdated(int idx)`
  Indicates whether the designated column in the current row of this `CachedRowSet` object has been updated.
  `boolean`
  `columnUpdated(String columnName)`
  Indicates whether the designated column in the current row of this `CachedRowSet` object has been updated.
  `void`
  `commit()`
  Each `CachedRowSet` object's `SyncProvider` contains a `Connection` object from the `ResultSet` or JDBC properties passed to it's constructors.
  `CachedRowSet`
  `createCopy()`
  Creates a `RowSet` object that is a deep copy of the data in this `CachedRowSet` object.
  `CachedRowSet`
  `createCopyNoConstraints()`
  Creates a `CachedRowSet` object that is a deep copy of this `CachedRowSet` object's data but is independent of it.
  `CachedRowSet`
  `createCopySchema()`
  Creates a `CachedRowSet` object that is an empty copy of this `CachedRowSet` object.
  `RowSet`
  `createShared()`
  Returns a new `RowSet` object backed by the same data as that of this `CachedRowSet` object.
  `void`
  `execute(Connection conn)`
  Populates this `CachedRowSet` object with data, using the given connection to produce the result set from which the data will be read.
  `int[]`
  `getKeyColumns()`
  Returns an array containing one or more column numbers indicating the columns that form a key that uniquely identifies a row in this `CachedRowSet` object.
  `ResultSet`
  `getOriginal()`
  Returns a `ResultSet` object containing the original value of this `CachedRowSet` object.
  `ResultSet`
  `getOriginalRow()`
  Returns a `ResultSet` object containing the original value for the current row only of this `CachedRowSet` object.
  `int`
  `getPageSize()`
  Returns the page-size for the `CachedRowSet` object
  `RowSetWarning`
  `getRowSetWarnings()`
  Retrieves the first warning reported by calls on this `RowSet` object.
  `boolean`
  `getShowDeleted()`
  Retrieves a `boolean` indicating whether rows marked for deletion appear in the set of current rows.
  `SyncProvider`
  `getSyncProvider()`
  Retrieves the `SyncProvider` implementation for this `CachedRowSet` object.
  `String`
  `getTableName()`
  Returns an identifier for the object (table) that was used to create this `CachedRowSet` object.
  `boolean`
  `nextPage()`
  Increments the current page of the `CachedRowSet`.
  `void`
  `populate(ResultSet data)`
  Populates this `CachedRowSet` object with data from the given `ResultSet` object.
  `void`
  `populate(ResultSet rs, int startRow)`
  Populates this `CachedRowSet` object with data from the given `ResultSet` object.
  `boolean`
  `previousPage()`
  Decrements the current page of the `CachedRowSet`.
  `void`
  `release()`
  Releases the current contents of this `CachedRowSet` object and sends a `rowSetChanged` event to all registered listeners.
  `void`
  `restoreOriginal()`
  Restores this `CachedRowSet` object to its original value, that is, its value before the last set of changes.
  `void`
  `rollback()`
  Each `CachedRowSet` object's `SyncProvider` contains a `Connection` object from the original `ResultSet` or JDBC properties passed to it.
  `void`
  `rollback(Savepoint s)`
  Each `CachedRowSet` object's `SyncProvider` contains a `Connection` object from the original `ResultSet` or JDBC properties passed to it.
  `void`
  `rowSetPopulated(RowSetEvent event, int numRows)`
  Notifies registered listeners that a RowSet object in the given RowSetEvent object has populated a number of additional rows.
  `void`
  `setKeyColumns(int[] keys)`
  Sets this `CachedRowSet` object's `keyCols` field with the given array of column numbers, which forms a key for uniquely identifying a row in this `CachedRowSet` object.
  `void`
  `setMetaData(RowSetMetaData md)`
  Sets the metadata for this `CachedRowSet` object with the given `RowSetMetaData` object.
  `void`
  `setOriginalRow()`
  Sets the current row in this `CachedRowSet` object as the original row.
  `void`
  `setPageSize(int size)`
  Sets the `CachedRowSet` object's page-size.
  `void`
  `setShowDeleted(boolean b)`
  Sets the property `showDeleted` to the given `boolean` value, which determines whether rows marked for deletion appear in the set of current rows.
  `void`
  `setSyncProvider(String provider)`
  Sets the `SyncProvider` object for this `CachedRowSet` object to the one specified.
  `void`
  `setTableName(String tabName)`
  Sets the identifier for the table from which this `CachedRowSet` object was derived to the given table name.
  `int`
  `size()`
  Returns the number of rows in this `CachedRowSet` object.
  `Collection<?>`
  `toCollection()`
  Converts this `CachedRowSet` object to a `Collection` object that contains all of this `CachedRowSet` object's data.
  `Collection<?>`
  `toCollection(int column)`
  Converts the designated column in this `CachedRowSet` object to a `Collection` object.
  `Collection<?>`
  `toCollection(String column)`
  Converts the designated column in this `CachedRowSet` object to a `Collection` object.
  `void`
  `undoDelete()`
  Cancels the deletion of the current row and notifies listeners that a row has changed.
  `void`
  `undoInsert()`
  Immediately removes the current row from this `CachedRowSet` object if the row has been inserted, and also notifies listeners that a row has changed.
  `void`
  `undoUpdate()`
  Immediately reverses the last update operation if the row has been modified.

  ### Methods declared in interface Joinable

  `getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn`
  Modifier and Type
  Method
  Description
  `int[]`
  `getMatchColumnIndexes()`
  Retrieves the indexes of the match columns that were set for this `RowSet` object with the method `setMatchColumn(int[] columnIdxes)`.
  `String[]`
  `getMatchColumnNames()`
  Retrieves the names of the match columns that were set for this `RowSet` object with the method `setMatchColumn(String [] columnNames)`.
  `void`
  `setMatchColumn(int columnIdx)`
  Sets the designated column as the match column for this `RowSet` object.
  `void`
  `setMatchColumn(int[] columnIdxes)`
  Sets the designated columns as the match column for this `RowSet` object.
  `void`
  `setMatchColumn(String columnName)`
  Sets the designated column as the match column for this `RowSet` object.
  `void`
  `setMatchColumn(String[] columnNames)`
  Sets the designated columns as the match column for this `RowSet` object.
  `void`
  `unsetMatchColumn(int columnIdx)`
  Unsets the designated column as the match column for this `RowSet` object.
  `void`
  `unsetMatchColumn(int[] columnIdxes)`
  Unsets the designated columns as the match column for this `RowSet` object.
  `void`
  `unsetMatchColumn(String columnName)`
  Unsets the designated column as the match column for this `RowSet` object.
  `void`
  `unsetMatchColumn(String[] columnName)`
  Unsets the designated columns as the match columns for this `RowSet` object.

  ### Methods declared in interface ResultSet

  `absolute, afterLast, beforeFirst, cancelRowUpdates, clearWarnings, close, deleteRow, findColumn, first, getArray, getArray, getAsciiStream, getAsciiStream, getBigDecimal, getBigDecimal, getBigDecimal, getBigDecimal, getBinaryStream, getBinaryStream, getBlob, getBlob, getBoolean, getBoolean, getByte, getByte, getBytes, getBytes, getCharacterStream, getCharacterStream, getClob, getClob, getConcurrency, getCursorName, getDate, getDate, getDate, getDate, getDouble, getDouble, getFetchDirection, getFetchSize, getFloat, getFloat, getHoldability, getInt, getInt, getLong, getLong, getMetaData, getNCharacterStream, getNCharacterStream, getNClob, getNClob, getNString, getNString, getObject, getObject, getObject, getObject, getObject, getObject, getRef, getRef, getRow, getRowId, getRowId, getShort, getShort, getSQLXML, getSQLXML, getStatement, getString, getString, getTime, getTime, getTime, getTime, getTimestamp, getTimestamp, getTimestamp, getTimestamp, getType, getUnicodeStream, getUnicodeStream, getURL, getURL, getWarnings, insertRow, isAfterLast, isBeforeFirst, isClosed, isFirst, isLast, last, moveToCurrentRow, moveToInsertRow, next, previous, refreshRow, relative, rowDeleted, rowInserted, rowUpdated, setFetchDirection, setFetchSize, updateArray, updateArray, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateBigDecimal, updateBigDecimal, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBlob, updateBlob, updateBlob, updateBlob, updateBlob, updateBlob, updateBoolean, updateBoolean, updateByte, updateByte, updateBytes, updateBytes, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateClob, updateClob, updateClob, updateClob, updateClob, updateClob, updateDate, updateDate, updateDouble, updateDouble, updateFloat, updateFloat, updateInt, updateInt, updateLong, updateLong, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNString, updateNString, updateNull, updateNull, updateObject, updateObject, updateObject, updateObject, updateObject, updateObject, updateObject, updateObject, updateRef, updateRef, updateRow, updateRowId, updateRowId, updateShort, updateShort, updateSQLXML, updateSQLXML, updateString, updateString, updateTime, updateTime, updateTimestamp, updateTimestamp, wasNull`
  Modifier and Type
  Method
  Description
  `boolean`
  `absolute(int row)`
  Moves the cursor to the given row number in this `ResultSet` object.
  `void`
  `afterLast()`
  Moves the cursor to the end of this `ResultSet` object, just after the last row.
  `void`
  `beforeFirst()`
  Moves the cursor to the front of this `ResultSet` object, just before the first row.
  `void`
  `cancelRowUpdates()`
  Cancels the updates made to the current row in this `ResultSet` object.
  `void`
  `clearWarnings()`
  Clears all warnings reported on this `ResultSet` object.
  `void`
  `close()`
  Releases this `ResultSet` object's database and JDBC resources immediately instead of waiting for this to happen when it is automatically closed.
  `void`
  `deleteRow()`
  Deletes the current row from this `ResultSet` object and from the underlying database.
  `int`
  `findColumn(String columnLabel)`
  Maps the given `ResultSet` column label to its `ResultSet` column index.
  `boolean`
  `first()`
  Moves the cursor to the first row in this `ResultSet` object.
  `Array`
  `getArray(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as an `Array` object in the Java programming language.
  `Array`
  `getArray(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as an `Array` object in the Java programming language.
  `InputStream`
  `getAsciiStream(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a stream of ASCII characters.
  `InputStream`
  `getAsciiStream(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a stream of ASCII characters.
  `BigDecimal`
  `getBigDecimal(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.math.BigDecimal` with full precision.
  `BigDecimal`
  `getBigDecimal(int columnIndex, int scale)`
  Deprecated.
  Use `getBigDecimal(int columnIndex)` or `getBigDecimal(String columnLabel)`
  `BigDecimal`
  `getBigDecimal(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.math.BigDecimal` with full precision.
  `BigDecimal`
  `getBigDecimal(String columnLabel, int scale)`
  Deprecated.
  Use `getBigDecimal(int columnIndex)` or `getBigDecimal(String columnLabel)`
  `InputStream`
  `getBinaryStream(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a stream of uninterpreted bytes.
  `InputStream`
  `getBinaryStream(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a stream of uninterpreted `byte`s.
  `Blob`
  `getBlob(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `Blob` object in the Java programming language.
  `Blob`
  `getBlob(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `Blob` object in the Java programming language.
  `boolean`
  `getBoolean(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `boolean` in the Java programming language.
  `boolean`
  `getBoolean(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `boolean` in the Java programming language.
  `byte`
  `getByte(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `byte` in the Java programming language.
  `byte`
  `getByte(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `byte` in the Java programming language.
  `byte[]`
  `getBytes(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `byte` array in the Java programming language.
  `byte[]`
  `getBytes(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `byte` array in the Java programming language.
  `Reader`
  `getCharacterStream(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.io.Reader` object.
  `Reader`
  `getCharacterStream(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.io.Reader` object.
  `Clob`
  `getClob(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `Clob` object in the Java programming language.
  `Clob`
  `getClob(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `Clob` object in the Java programming language.
  `int`
  `getConcurrency()`
  Retrieves the concurrency mode of this `ResultSet` object.
  `String`
  `getCursorName()`
  Retrieves the name of the SQL cursor used by this `ResultSet` object.
  `Date`
  `getDate(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.sql.Date` object in the Java programming language.
  `Date`
  `getDate(int columnIndex, Calendar cal)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.sql.Date` object in the Java programming language.
  `Date`
  `getDate(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.sql.Date` object in the Java programming language.
  `Date`
  `getDate(String columnLabel, Calendar cal)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.sql.Date` object in the Java programming language.
  `double`
  `getDouble(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `double` in the Java programming language.
  `double`
  `getDouble(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `double` in the Java programming language.
  `int`
  `getFetchDirection()`
  Retrieves the fetch direction for this `ResultSet` object.
  `int`
  `getFetchSize()`
  Retrieves the fetch size for this `ResultSet` object.
  `float`
  `getFloat(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `float` in the Java programming language.
  `float`
  `getFloat(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `float` in the Java programming language.
  `int`
  `getHoldability()`
  Retrieves the holdability of this `ResultSet` object
  `int`
  `getInt(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as an `int` in the Java programming language.
  `int`
  `getInt(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as an `int` in the Java programming language.
  `long`
  `getLong(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `long` in the Java programming language.
  `long`
  `getLong(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `long` in the Java programming language.
  `ResultSetMetaData`
  `getMetaData()`
  Retrieves the number, types and properties of this `ResultSet` object's columns.
  `Reader`
  `getNCharacterStream(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.io.Reader` object.
  `Reader`
  `getNCharacterStream(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.io.Reader` object.
  `NClob`
  `getNClob(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `NClob` object in the Java programming language.
  `NClob`
  `getNClob(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `NClob` object in the Java programming language.
  `String`
  `getNString(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `String` in the Java programming language.
  `String`
  `getNString(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `String` in the Java programming language.
  `Object`
  `getObject(int columnIndex)`
  Gets the value of the designated column in the current row of this `ResultSet` object as an `Object` in the Java programming language.
  `<T> T`
  `getObject(int columnIndex, Class<T> type)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object and will convert from the SQL type of the column to the requested Java data type, if the conversion is supported.
  `Object`
  `getObject(int columnIndex, Map<String,Class<?>> map)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as an `Object` in the Java programming language.
  `Object`
  `getObject(String columnLabel)`
  Gets the value of the designated column in the current row of this `ResultSet` object as an `Object` in the Java programming language.
  `<T> T`
  `getObject(String columnLabel, Class<T> type)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object and will convert from the SQL type of the column to the requested Java data type, if the conversion is supported.
  `Object`
  `getObject(String columnLabel, Map<String,Class<?>> map)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as an `Object` in the Java programming language.
  `Ref`
  `getRef(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `Ref` object in the Java programming language.
  `Ref`
  `getRef(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `Ref` object in the Java programming language.
  `int`
  `getRow()`
  Retrieves the current row number.
  `RowId`
  `getRowId(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.sql.RowId` object in the Java programming language.
  `RowId`
  `getRowId(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.sql.RowId` object in the Java programming language.
  `short`
  `getShort(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `short` in the Java programming language.
  `short`
  `getShort(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `short` in the Java programming language.
  `SQLXML`
  `getSQLXML(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` as a `java.sql.SQLXML` object in the Java programming language.
  `SQLXML`
  `getSQLXML(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` as a `java.sql.SQLXML` object in the Java programming language.
  `Statement`
  `getStatement()`
  Retrieves the `Statement` object that produced this `ResultSet` object.
  `String`
  `getString(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `String` in the Java programming language.
  `String`
  `getString(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `String` in the Java programming language.
  `Time`
  `getTime(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.sql.Time` object in the Java programming language.
  `Time`
  `getTime(int columnIndex, Calendar cal)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.sql.Time` object in the Java programming language.
  `Time`
  `getTime(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.sql.Time` object in the Java programming language.
  `Time`
  `getTime(String columnLabel, Calendar cal)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.sql.Time` object in the Java programming language.
  `Timestamp`
  `getTimestamp(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.sql.Timestamp` object in the Java programming language.
  `Timestamp`
  `getTimestamp(int columnIndex, Calendar cal)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.sql.Timestamp` object in the Java programming language.
  `Timestamp`
  `getTimestamp(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.sql.Timestamp` object in the Java programming language.
  `Timestamp`
  `getTimestamp(String columnLabel, Calendar cal)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.sql.Timestamp` object in the Java programming language.
  `int`
  `getType()`
  Retrieves the type of this `ResultSet` object.
  `InputStream`
  `getUnicodeStream(int columnIndex)`
  Deprecated.
  use `getCharacterStream` in place of `getUnicodeStream`
  `InputStream`
  `getUnicodeStream(String columnLabel)`
  Deprecated.
  use `getCharacterStream` instead
  `URL`
  `getURL(int columnIndex)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.net.URL` object in the Java programming language.
  `URL`
  `getURL(String columnLabel)`
  Retrieves the value of the designated column in the current row of this `ResultSet` object as a `java.net.URL` object in the Java programming language.
  `SQLWarning`
  `getWarnings()`
  Retrieves the first warning reported by calls on this `ResultSet` object.
  `void`
  `insertRow()`
  Inserts the contents of the insert row into this `ResultSet` object and into the database.
  `boolean`
  `isAfterLast()`
  Retrieves whether the cursor is after the last row in this `ResultSet` object.
  `boolean`
  `isBeforeFirst()`
  Retrieves whether the cursor is before the first row in this `ResultSet` object.
  `boolean`
  `isClosed()`
  Retrieves whether this `ResultSet` object has been closed.
  `boolean`
  `isFirst()`
  Retrieves whether the cursor is on the first row of this `ResultSet` object.
  `boolean`
  `isLast()`
  Retrieves whether the cursor is on the last row of this `ResultSet` object.
  `boolean`
  `last()`
  Moves the cursor to the last row in this `ResultSet` object.
  `void`
  `moveToCurrentRow()`
  Moves the cursor to the remembered cursor position, usually the current row.
  `void`
  `moveToInsertRow()`
  Moves the cursor to the insert row.
  `boolean`
  `next()`
  Moves the cursor forward one row from its current position.
  `boolean`
  `previous()`
  Moves the cursor to the previous row in this `ResultSet` object.
  `void`
  `refreshRow()`
  Refreshes the current row with its most recent value in the database.
  `boolean`
  `relative(int rows)`
  Moves the cursor a relative number of rows, either positive or negative.
  `boolean`
  `rowDeleted()`
  Retrieves whether a row has been deleted.
  `boolean`
  `rowInserted()`
  Retrieves whether the current row has had an insertion.
  `boolean`
  `rowUpdated()`
  Retrieves whether the current row has been updated.
  `void`
  `setFetchDirection(int direction)`
  Gives a hint as to the direction in which the rows in this `ResultSet` object will be processed.
  `void`
  `setFetchSize(int rows)`
  Gives the JDBC driver a hint as to the number of rows that should be fetched from the database when more rows are needed for this `ResultSet` object.
  `void`
  `updateArray(int columnIndex, Array x)`
  Updates the designated column with a `java.sql.Array` value.
  `void`
  `updateArray(String columnLabel, Array x)`
  Updates the designated column with a `java.sql.Array` value.
  `void`
  `updateAsciiStream(int columnIndex, InputStream x)`
  Updates the designated column with an ascii stream value.
  `void`
  `updateAsciiStream(int columnIndex, InputStream x, int length)`
  Updates the designated column with an ascii stream value, which will have the specified number of bytes.
  `void`
  `updateAsciiStream(int columnIndex, InputStream x, long length)`
  Updates the designated column with an ascii stream value, which will have the specified number of bytes.
  `void`
  `updateAsciiStream(String columnLabel, InputStream x)`
  Updates the designated column with an ascii stream value.
  `void`
  `updateAsciiStream(String columnLabel, InputStream x, int length)`
  Updates the designated column with an ascii stream value, which will have the specified number of bytes.
  `void`
  `updateAsciiStream(String columnLabel, InputStream x, long length)`
  Updates the designated column with an ascii stream value, which will have the specified number of bytes.
  `void`
  `updateBigDecimal(int columnIndex, BigDecimal x)`
  Updates the designated column with a `java.math.BigDecimal` value.
  `void`
  `updateBigDecimal(String columnLabel, BigDecimal x)`
  Updates the designated column with a `java.sql.BigDecimal` value.
  `void`
  `updateBinaryStream(int columnIndex, InputStream x)`
  Updates the designated column with a binary stream value.
  `void`
  `updateBinaryStream(int columnIndex, InputStream x, int length)`
  Updates the designated column with a binary stream value, which will have the specified number of bytes.
  `void`
  `updateBinaryStream(int columnIndex, InputStream x, long length)`
  Updates the designated column with a binary stream value, which will have the specified number of bytes.
  `void`
  `updateBinaryStream(String columnLabel, InputStream x)`
  Updates the designated column with a binary stream value.
  `void`
  `updateBinaryStream(String columnLabel, InputStream x, int length)`
  Updates the designated column with a binary stream value, which will have the specified number of bytes.
  `void`
  `updateBinaryStream(String columnLabel, InputStream x, long length)`
  Updates the designated column with a binary stream value, which will have the specified number of bytes.
  `void`
  `updateBlob(int columnIndex, InputStream inputStream)`
  Updates the designated column using the given input stream.
  `void`
  `updateBlob(int columnIndex, InputStream inputStream, long length)`
  Updates the designated column using the given input stream, which will have the specified number of bytes.
  `void`
  `updateBlob(int columnIndex, Blob x)`
  Updates the designated column with a `java.sql.Blob` value.
  `void`
  `updateBlob(String columnLabel, InputStream inputStream)`
  Updates the designated column using the given input stream.
  `void`
  `updateBlob(String columnLabel, InputStream inputStream, long length)`
  Updates the designated column using the given input stream, which will have the specified number of bytes.
  `void`
  `updateBlob(String columnLabel, Blob x)`
  Updates the designated column with a `java.sql.Blob` value.
  `void`
  `updateBoolean(int columnIndex, boolean x)`
  Updates the designated column with a `boolean` value.
  `void`
  `updateBoolean(String columnLabel, boolean x)`
  Updates the designated column with a `boolean` value.
  `void`
  `updateByte(int columnIndex, byte x)`
  Updates the designated column with a `byte` value.
  `void`
  `updateByte(String columnLabel, byte x)`
  Updates the designated column with a `byte` value.
  `void`
  `updateBytes(int columnIndex, byte[] x)`
  Updates the designated column with a `byte` array value.
  `void`
  `updateBytes(String columnLabel, byte[] x)`
  Updates the designated column with a byte array value.
  `void`
  `updateCharacterStream(int columnIndex, Reader x)`
  Updates the designated column with a character stream value.
  `void`
  `updateCharacterStream(int columnIndex, Reader x, int length)`
  Updates the designated column with a character stream value, which will have the specified number of bytes.
  `void`
  `updateCharacterStream(int columnIndex, Reader x, long length)`
  Updates the designated column with a character stream value, which will have the specified number of bytes.
  `void`
  `updateCharacterStream(String columnLabel, Reader reader)`
  Updates the designated column with a character stream value.
  `void`
  `updateCharacterStream(String columnLabel, Reader reader, int length)`
  Updates the designated column with a character stream value, which will have the specified number of bytes.
  `void`
  `updateCharacterStream(String columnLabel, Reader reader, long length)`
  Updates the designated column with a character stream value, which will have the specified number of bytes.
  `void`
  `updateClob(int columnIndex, Reader reader)`
  Updates the designated column using the given `Reader` object.
  `void`
  `updateClob(int columnIndex, Reader reader, long length)`
  Updates the designated column using the given `Reader` object, which is the given number of characters long.
  `void`
  `updateClob(int columnIndex, Clob x)`
  Updates the designated column with a `java.sql.Clob` value.
  `void`
  `updateClob(String columnLabel, Reader reader)`
  Updates the designated column using the given `Reader` object.
  `void`
  `updateClob(String columnLabel, Reader reader, long length)`
  Updates the designated column using the given `Reader` object, which is the given number of characters long.
  `void`
  `updateClob(String columnLabel, Clob x)`
  Updates the designated column with a `java.sql.Clob` value.
  `void`
  `updateDate(int columnIndex, Date x)`
  Updates the designated column with a `java.sql.Date` value.
  `void`
  `updateDate(String columnLabel, Date x)`
  Updates the designated column with a `java.sql.Date` value.
  `void`
  `updateDouble(int columnIndex, double x)`
  Updates the designated column with a `double` value.
  `void`
  `updateDouble(String columnLabel, double x)`
  Updates the designated column with a `double` value.
  `void`
  `updateFloat(int columnIndex, float x)`
  Updates the designated column with a `float` value.
  `void`
  `updateFloat(String columnLabel, float x)`
  Updates the designated column with a `float` value.
  `void`
  `updateInt(int columnIndex, int x)`
  Updates the designated column with an `int` value.
  `void`
  `updateInt(String columnLabel, int x)`
  Updates the designated column with an `int` value.
  `void`
  `updateLong(int columnIndex, long x)`
  Updates the designated column with a `long` value.
  `void`
  `updateLong(String columnLabel, long x)`
  Updates the designated column with a `long` value.
  `void`
  `updateNCharacterStream(int columnIndex, Reader x)`
  Updates the designated column with a character stream value.
  `void`
  `updateNCharacterStream(int columnIndex, Reader x, long length)`
  Updates the designated column with a character stream value, which will have the specified number of bytes.
  `void`
  `updateNCharacterStream(String columnLabel, Reader reader)`
  Updates the designated column with a character stream value.
  `void`
  `updateNCharacterStream(String columnLabel, Reader reader, long length)`
  Updates the designated column with a character stream value, which will have the specified number of bytes.
  `void`
  `updateNClob(int columnIndex, Reader reader)`
  Updates the designated column using the given `Reader` The data will be read from the stream as needed until end-of-stream is reached.
  `void`
  `updateNClob(int columnIndex, Reader reader, long length)`
  Updates the designated column using the given `Reader` object, which is the given number of characters long.
  `void`
  `updateNClob(int columnIndex, NClob nClob)`
  Updates the designated column with a `java.sql.NClob` value.
  `void`
  `updateNClob(String columnLabel, Reader reader)`
  Updates the designated column using the given `Reader` object.
  `void`
  `updateNClob(String columnLabel, Reader reader, long length)`
  Updates the designated column using the given `Reader` object, which is the given number of characters long.
  `void`
  `updateNClob(String columnLabel, NClob nClob)`
  Updates the designated column with a `java.sql.NClob` value.
  `void`
  `updateNString(int columnIndex, String nString)`
  Updates the designated column with a `String` value.
  `void`
  `updateNString(String columnLabel, String nString)`
  Updates the designated column with a `String` value.
  `void`
  `updateNull(int columnIndex)`
  Updates the designated column with a `null` value.
  `void`
  `updateNull(String columnLabel)`
  Updates the designated column with a `null` value.
  `void`
  `updateObject(int columnIndex, Object x)`
  Updates the designated column with an `Object` value.
  `void`
  `updateObject(int columnIndex, Object x, int scaleOrLength)`
  Updates the designated column with an `Object` value.
  `default void`
  `updateObject(int columnIndex, Object x, SQLType targetSqlType)`
  Updates the designated column with an `Object` value.
  `default void`
  `updateObject(int columnIndex, Object x, SQLType targetSqlType, int scaleOrLength)`
  Updates the designated column with an `Object` value.
  `void`
  `updateObject(String columnLabel, Object x)`
  Updates the designated column with an `Object` value.
  `void`
  `updateObject(String columnLabel, Object x, int scaleOrLength)`
  Updates the designated column with an `Object` value.
  `default void`
  `updateObject(String columnLabel, Object x, SQLType targetSqlType)`
  Updates the designated column with an `Object` value.
  `default void`
  `updateObject(String columnLabel, Object x, SQLType targetSqlType, int scaleOrLength)`
  Updates the designated column with an `Object` value.
  `void`
  `updateRef(int columnIndex, Ref x)`
  Updates the designated column with a `java.sql.Ref` value.
  `void`
  `updateRef(String columnLabel, Ref x)`
  Updates the designated column with a `java.sql.Ref` value.
  `void`
  `updateRow()`
  Updates the underlying database with the new contents of the current row of this `ResultSet` object.
  `void`
  `updateRowId(int columnIndex, RowId x)`
  Updates the designated column with a `RowId` value.
  `void`
  `updateRowId(String columnLabel, RowId x)`
  Updates the designated column with a `RowId` value.
  `void`
  `updateShort(int columnIndex, short x)`
  Updates the designated column with a `short` value.
  `void`
  `updateShort(String columnLabel, short x)`
  Updates the designated column with a `short` value.
  `void`
  `updateSQLXML(int columnIndex, SQLXML xmlObject)`
  Updates the designated column with a `java.sql.SQLXML` value.
  `void`
  `updateSQLXML(String columnLabel, SQLXML xmlObject)`
  Updates the designated column with a `java.sql.SQLXML` value.
  `void`
  `updateString(int columnIndex, String x)`
  Updates the designated column with a `String` value.
  `void`
  `updateString(String columnLabel, String x)`
  Updates the designated column with a `String` value.
  `void`
  `updateTime(int columnIndex, Time x)`
  Updates the designated column with a `java.sql.Time` value.
  `void`
  `updateTime(String columnLabel, Time x)`
  Updates the designated column with a `java.sql.Time` value.
  `void`
  `updateTimestamp(int columnIndex, Timestamp x)`
  Updates the designated column with a `java.sql.Timestamp` value.
  `void`
  `updateTimestamp(String columnLabel, Timestamp x)`
  Updates the designated column with a `java.sql.Timestamp` value.
  `boolean`
  `wasNull()`
  Reports whether the last column read had a value of SQL `NULL`.

  ### Methods declared in interface RowSet

  `addRowSetListener, clearParameters, execute, getCommand, getDataSourceName, getEscapeProcessing, getMaxFieldSize, getMaxRows, getPassword, getQueryTimeout, getTransactionIsolation, getTypeMap, getUrl, getUsername, isReadOnly, removeRowSetListener, setArray, setAsciiStream, setAsciiStream, setAsciiStream, setAsciiStream, setBigDecimal, setBigDecimal, setBinaryStream, setBinaryStream, setBinaryStream, setBinaryStream, setBlob, setBlob, setBlob, setBlob, setBlob, setBlob, setBoolean, setBoolean, setByte, setByte, setBytes, setBytes, setCharacterStream, setCharacterStream, setCharacterStream, setCharacterStream, setClob, setClob, setClob, setClob, setClob, setClob, setCommand, setConcurrency, setDataSourceName, setDate, setDate, setDate, setDate, setDouble, setDouble, setEscapeProcessing, setFloat, setFloat, setInt, setInt, setLong, setLong, setMaxFieldSize, setMaxRows, setNCharacterStream, setNCharacterStream, setNCharacterStream, setNCharacterStream, setNClob, setNClob, setNClob, setNClob, setNClob, setNClob, setNString, setNString, setNull, setNull, setNull, setNull, setObject, setObject, setObject, setObject, setObject, setObject, setPassword, setQueryTimeout, setReadOnly, setRef, setRowId, setRowId, setShort, setShort, setSQLXML, setSQLXML, setString, setString, setTime, setTime, setTime, setTime, setTimestamp, setTimestamp, setTimestamp, setTimestamp, setTransactionIsolation, setType, setTypeMap, setUrl, setURL, setUsername`
  Modifier and Type
  Method
  Description
  `void`
  `addRowSetListener(RowSetListener listener)`
  Registers the given listener so that it will be notified of events that occur on this `RowSet` object.
  `void`
  `clearParameters()`
  Clears the parameters set for this `RowSet` object's command.
  `void`
  `execute()`
  Fills this `RowSet` object with data.
  `String`
  `getCommand()`
  Retrieves this `RowSet` object's command property.
  `String`
  `getDataSourceName()`
  Retrieves the logical name that identifies the data source for this `RowSet` object.
  `boolean`
  `getEscapeProcessing()`
  Retrieves whether escape processing is enabled for this `RowSet` object.
  `int`
  `getMaxFieldSize()`
  Retrieves the maximum number of bytes that may be returned for certain column values.
  `int`
  `getMaxRows()`
  Retrieves the maximum number of rows that this `RowSet` object can contain.
  `String`
  `getPassword()`
  Retrieves the password used to create a database connection.
  `int`
  `getQueryTimeout()`
  Retrieves the maximum number of seconds the driver will wait for a statement to execute.
  `int`
  `getTransactionIsolation()`
  Retrieves the transaction isolation level set for this `RowSet` object.
  `Map<String,Class<?>>`
  `getTypeMap()`
  Retrieves the `Map` object associated with this `RowSet` object, which specifies the custom mapping of SQL user-defined types, if any.
  `String`
  `getUrl()`
  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.
  `String`
  `getUsername()`
  Retrieves the username used to create a database connection for this `RowSet` object.
  `boolean`
  `isReadOnly()`
  Retrieves whether this `RowSet` object is read-only.
  `void`
  `removeRowSetListener(RowSetListener listener)`
  Removes the specified listener from the list of components that will be notified when an event occurs on this `RowSet` object.
  `void`
  `setArray(int i, Array x)`
  Sets the designated parameter in this `RowSet` object's command with the given `Array` value.
  `void`
  `setAsciiStream(int parameterIndex, InputStream x)`
  Sets the designated parameter in this `RowSet` object's command to the given input stream.
  `void`
  `setAsciiStream(int parameterIndex, InputStream x, int length)`
  Sets the designated parameter in this `RowSet` object's command to the given `java.io.InputStream` value.
  `void`
  `setAsciiStream(String parameterName, InputStream x)`
  Sets the designated parameter to the given input stream.
  `void`
  `setAsciiStream(String parameterName, InputStream x, int length)`
  Sets the designated parameter to the given input stream, which will have the specified number of bytes.
  `void`
  `setBigDecimal(int parameterIndex, BigDecimal x)`
  Sets the designated parameter in this `RowSet` object's command to the given `java.math.BigDecimal` value.
  `void`
  `setBigDecimal(String parameterName, BigDecimal x)`
  Sets the designated parameter to the given `java.math.BigDecimal` value.
  `void`
  `setBinaryStream(int parameterIndex, InputStream x)`
  Sets the designated parameter in this `RowSet` object's command to the given input stream.
  `void`
  `setBinaryStream(int parameterIndex, InputStream x, int length)`
  Sets the designated parameter in this `RowSet` object's command to the given `java.io.InputStream` value.
  `void`
  `setBinaryStream(String parameterName, InputStream x)`
  Sets the designated parameter to the given input stream.
  `void`
  `setBinaryStream(String parameterName, InputStream x, int length)`
  Sets the designated parameter to the given input stream, which will have the specified number of bytes.
  `void`
  `setBlob(int parameterIndex, InputStream inputStream)`
  Sets the designated parameter to a `InputStream` object.
  `void`
  `setBlob(int parameterIndex, InputStream inputStream, long length)`
  Sets the designated parameter to a `InputStream` object.
  `void`
  `setBlob(int i, Blob x)`
  Sets the designated parameter in this `RowSet` object's command with the given `Blob` value.
  `void`
  `setBlob(String parameterName, InputStream inputStream)`
  Sets the designated parameter to a `InputStream` object.
  `void`
  `setBlob(String parameterName, InputStream inputStream, long length)`
  Sets the designated parameter to a `InputStream` object.
  `void`
  `setBlob(String parameterName, Blob x)`
  Sets the designated parameter to the given `java.sql.Blob` object.
  `void`
  `setBoolean(int parameterIndex, boolean x)`
  Sets the designated parameter in this `RowSet` object's command to the given Java `boolean` value.
  `void`
  `setBoolean(String parameterName, boolean x)`
  Sets the designated parameter to the given Java `boolean` value.
  `void`
  `setByte(int parameterIndex, byte x)`
  Sets the designated parameter in this `RowSet` object's command to the given Java `byte` value.
  `void`
  `setByte(String parameterName, byte x)`
  Sets the designated parameter to the given Java `byte` value.
  `void`
  `setBytes(int parameterIndex, byte[] x)`
  Sets the designated parameter in this `RowSet` object's command to the given Java array of `byte` values.
  `void`
  `setBytes(String parameterName, byte[] x)`
  Sets the designated parameter to the given Java array of bytes.
  `void`
  `setCharacterStream(int parameterIndex, Reader reader)`
  Sets the designated parameter in this `RowSet` object's command to the given `Reader` object.
  `void`
  `setCharacterStream(int parameterIndex, Reader reader, int length)`
  Sets the designated parameter in this `RowSet` object's command to the given `java.io.Reader` value.
  `void`
  `setCharacterStream(String parameterName, Reader reader)`
  Sets the designated parameter to the given `Reader` object.
  `void`
  `setCharacterStream(String parameterName, Reader reader, int length)`
  Sets the designated parameter to the given `Reader` object, which is the given number of characters long.
  `void`
  `setClob(int parameterIndex, Reader reader)`
  Sets the designated parameter to a `Reader` object.
  `void`
  `setClob(int parameterIndex, Reader reader, long length)`
  Sets the designated parameter to a `Reader` object.
  `void`
  `setClob(int i, Clob x)`
  Sets the designated parameter in this `RowSet` object's command with the given `Clob` value.
  `void`
  `setClob(String parameterName, Reader reader)`
  Sets the designated parameter to a `Reader` object.
  `void`
  `setClob(String parameterName, Reader reader, long length)`
  Sets the designated parameter to a `Reader` object.
  `void`
  `setClob(String parameterName, Clob x)`
  Sets the designated parameter to the given `java.sql.Clob` object.
  `void`
  `setCommand(String cmd)`
  Sets this `RowSet` object's command property to the given SQL query.
  `void`
  `setConcurrency(int concurrency)`
  Sets the concurrency of this `RowSet` object to the given concurrency level.
  `void`
  `setDataSourceName(String name)`
  Sets the data source name property for this `RowSet` object to the given `String`.
  `void`
  `setDate(int parameterIndex, Date x)`
  Sets the designated parameter in this `RowSet` object's command to the given `java.sql.Date` value.
  `void`
  `setDate(int parameterIndex, Date x, Calendar cal)`
  Sets the designated parameter in this `RowSet` object's command with the given `java.sql.Date` value.
  `void`
  `setDate(String parameterName, Date x)`
  Sets the designated parameter to the given `java.sql.Date` value using the default time zone of the virtual machine that is running the application.
  `void`
  `setDate(String parameterName, Date x, Calendar cal)`
  Sets the designated parameter to the given `java.sql.Date` value, using the given `Calendar` object.
  `void`
  `setDouble(int parameterIndex, double x)`
  Sets the designated parameter in this `RowSet` object's command to the given Java `double` value.
  `void`
  `setDouble(String parameterName, double x)`
  Sets the designated parameter to the given Java `double` value.
  `void`
  `setEscapeProcessing(boolean enable)`
  Sets escape processing for this `RowSet` object on or off.
  `void`
  `setFloat(int parameterIndex, float x)`
  Sets the designated parameter in this `RowSet` object's command to the given Java `float` value.
  `void`
  `setFloat(String parameterName, float x)`
  Sets the designated parameter to the given Java `float` value.
  `void`
  `setInt(int parameterIndex, int x)`
  Sets the designated parameter in this `RowSet` object's command to the given Java `int` value.
  `void`
  `setInt(String parameterName, int x)`
  Sets the designated parameter to the given Java `int` value.
  `void`
  `setLong(int parameterIndex, long x)`
  Sets the designated parameter in this `RowSet` object's command to the given Java `long` value.
  `void`
  `setLong(String parameterName, long x)`
  Sets the designated parameter to the given Java `long` value.
  `void`
  `setMaxFieldSize(int max)`
  Sets the maximum number of bytes that can be returned for a column value to the given number of bytes.
  `void`
  `setMaxRows(int max)`
  Sets the maximum number of rows that this `RowSet` object can contain to the specified number.
  `void`
  `setNCharacterStream(int parameterIndex, Reader value)`
  Sets the designated parameter in this `RowSet` object's command to a `Reader` object.
  `void`
  `setNCharacterStream(int parameterIndex, Reader value, long length)`
  Sets the designated parameter to a `Reader` object.
  `void`
  `setNCharacterStream(String parameterName, Reader value)`
  Sets the designated parameter to a `Reader` object.
  `void`
  `setNCharacterStream(String parameterName, Reader value, long length)`
  Sets the designated parameter to a `Reader` object.
  `void`
  `setNClob(int parameterIndex, Reader reader)`
  Sets the designated parameter to a `Reader` object.
  `void`
  `setNClob(int parameterIndex, Reader reader, long length)`
  Sets the designated parameter to a `Reader` object.
  `void`
  `setNClob(int parameterIndex, NClob value)`
  Sets the designated parameter to a `java.sql.NClob` object.
  `void`
  `setNClob(String parameterName, Reader reader)`
  Sets the designated parameter to a `Reader` object.
  `void`
  `setNClob(String parameterName, Reader reader, long length)`
  Sets the designated parameter to a `Reader` object.
  `void`
  `setNClob(String parameterName, NClob value)`
  Sets the designated parameter to a `java.sql.NClob` object.
  `void`
  `setNString(int parameterIndex, String value)`
  Sets the designated parameter to the given `String` object.
  `void`
  `setNString(String parameterName, String value)`
  Sets the designated parameter to the given `String` object.
  `void`
  `setNull(int parameterIndex, int sqlType)`
  Sets the designated parameter in this `RowSet` object's SQL command to SQL `NULL`.
  `void`
  `setNull(int paramIndex, int sqlType, String typeName)`
  Sets the designated parameter in this `RowSet` object's SQL command to SQL `NULL`.
  `void`
  `setNull(String parameterName, int sqlType)`
  Sets the designated parameter to SQL `NULL`.
  `void`
  `setNull(String parameterName, int sqlType, String typeName)`
  Sets the designated parameter to SQL `NULL`.
  `void`
  `setObject(int parameterIndex, Object x)`
  Sets the designated parameter in this `RowSet` object's command with a Java `Object`.
  `void`
  `setObject(int parameterIndex, Object x, int targetSqlType)`
  Sets the designated parameter in this `RowSet` object's command with a Java `Object`.
  `void`
  `setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength)`
  Sets the designated parameter in this `RowSet` object's command with the given Java `Object`.
  `void`
  `setObject(String parameterName, Object x)`
  Sets the value of the designated parameter with the given object.
  `void`
  `setObject(String parameterName, Object x, int targetSqlType)`
  Sets the value of the designated parameter with the given object.
  `void`
  `setObject(String parameterName, Object x, int targetSqlType, int scale)`
  Sets the value of the designated parameter with the given object.
  `void`
  `setPassword(String password)`
  Sets the database password for this `RowSet` object to the given `String`.
  `void`
  `setQueryTimeout(int seconds)`
  Sets the maximum time the driver will wait for a statement to execute to the given number of seconds.
  `void`
  `setReadOnly(boolean value)`
  Sets whether this `RowSet` object is read-only to the given `boolean`.
  `void`
  `setRef(int i, Ref x)`
  Sets the designated parameter in this `RowSet` object's command with the given `Ref` value.
  `void`
  `setRowId(int parameterIndex, RowId x)`
  Sets the designated parameter to the given `java.sql.RowId` object.
  `void`
  `setRowId(String parameterName, RowId x)`
  Sets the designated parameter to the given `java.sql.RowId` object.
  `void`
  `setShort(int parameterIndex, short x)`
  Sets the designated parameter in this `RowSet` object's command to the given Java `short` value.
  `void`
  `setShort(String parameterName, short x)`
  Sets the designated parameter to the given Java `short` value.
  `void`
  `setSQLXML(int parameterIndex, SQLXML xmlObject)`
  Sets the designated parameter to the given `java.sql.SQLXML` object.
  `void`
  `setSQLXML(String parameterName, SQLXML xmlObject)`
  Sets the designated parameter to the given `java.sql.SQLXML` object.
  `void`
  `setString(int parameterIndex, String x)`
  Sets the designated parameter in this `RowSet` object's command to the given Java `String` value.
  `void`
  `setString(String parameterName, String x)`
  Sets the designated parameter to the given Java `String` value.
  `void`
  `setTime(int parameterIndex, Time x)`
  Sets the designated parameter in this `RowSet` object's command to the given `java.sql.Time` value.
  `void`
  `setTime(int parameterIndex, Time x, Calendar cal)`
  Sets the designated parameter in this `RowSet` object's command with the given `java.sql.Time` value.
  `void`
  `setTime(String parameterName, Time x)`
  Sets the designated parameter to the given `java.sql.Time` value.
  `void`
  `setTime(String parameterName, Time x, Calendar cal)`
  Sets the designated parameter to the given `java.sql.Time` value, using the given `Calendar` object.
  `void`
  `setTimestamp(int parameterIndex, Timestamp x)`
  Sets the designated parameter in this `RowSet` object's command to the given `java.sql.Timestamp` value.
  `void`
  `setTimestamp(int parameterIndex, Timestamp x, Calendar cal)`
  Sets the designated parameter in this `RowSet` object's command with the given `java.sql.Timestamp` value.
  `void`
  `setTimestamp(String parameterName, Timestamp x)`
  Sets the designated parameter to the given `java.sql.Timestamp` value.
  `void`
  `setTimestamp(String parameterName, Timestamp x, Calendar cal)`
  Sets the designated parameter to the given `java.sql.Timestamp` value, using the given `Calendar` object.
  `void`
  `setTransactionIsolation(int level)`
  Sets the transaction isolation level for this `RowSet` object.
  `void`
  `setType(int type)`
  Sets the type of this `RowSet` object to the given type.
  `void`
  `setTypeMap(Map<String,Class<?>> map)`
  Installs the given `java.util.Map` object as the default type map for this `RowSet` object.
  `void`
  `setUrl(String url)`
  Sets the URL this `RowSet` object will use when it uses the `DriverManager` to create a connection.
  `void`
  `setURL(int parameterIndex, URL x)`
  Sets the designated parameter to the given `java.net.URL` value.
  `void`
  `setUsername(String name)`
  Sets the username property for this `RowSet` object to the given `String`.

  ### Methods declared in interface WebRowSet

  `readXml, readXml, writeXml, writeXml, writeXml, writeXml`
  Modifier and Type
  Method
  Description
  `void`
  `readXml(InputStream iStream)`
  Reads a stream based XML input to populate this `WebRowSet` object.
  `void`
  `readXml(Reader reader)`
  Reads a `WebRowSet` object in its XML format from the given `Reader` object.
  `void`
  `writeXml(OutputStream oStream)`
  Writes the data, properties, and metadata for this `WebRowSet` object to the given `OutputStream` object in XML format.
  `void`
  `writeXml(Writer writer)`
  Writes the data, properties, and metadata for this `WebRowSet` object to the given `Writer` object in XML format.
  `void`
  `writeXml(ResultSet rs, OutputStream oStream)`
  Populates this `WebRowSet` object with the contents of the given `ResultSet` object and writes its data, properties, and metadata to the given `OutputStream` object in XML format.
  `void`
  `writeXml(ResultSet rs, Writer writer)`
  Populates this `WebRowSet` object with the contents of the given `ResultSet` object and writes its data, properties, and metadata to the given `Writer` object in XML format.

  ### Methods declared in interface Wrapper

  `isWrapperFor, unwrap`
  Modifier and Type
  Method
  Description
  `boolean`
  `isWrapperFor(Class<?> iface)`
  Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does.
  `<T> T`
  `unwrap(Class<T> iface)`
  Returns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy.

- ## Field Details

  - ### CROSS_JOIN

    static final int CROSS_JOIN
    An ANSI-style `JOIN` providing a cross product of two tables
    See Also:
      - Constant Field Values

  - ### INNER_JOIN

    static final int INNER_JOIN
    An ANSI-style `JOIN` providing a inner join between two tables. Any unmatched rows in either table of the join should be discarded.
    See Also:
      - Constant Field Values

  - ### LEFT_OUTER_JOIN

    static final int LEFT_OUTER_JOIN
    An ANSI-style `JOIN` providing a left outer join between two tables. In SQL, this is described where all records should be returned from the left side of the JOIN statement.
    See Also:
      - Constant Field Values

  - ### RIGHT_OUTER_JOIN

    static final int RIGHT_OUTER_JOIN
    An ANSI-style `JOIN` providing a right outer join between two tables. In SQL, this is described where all records from the table on the right side of the JOIN statement even if the table on the left has no matching record.
    See Also:
      - Constant Field Values

  - ### FULL_JOIN

    static final int FULL_JOIN
    An ANSI-style `JOIN` providing a full JOIN. Specifies that all rows from either table be returned regardless of matching records on the other table.
    See Also:
      - Constant Field Values

- ## Method Details

  - ### addRowSet

    void addRowSet(Joinable rowset) throws SQLException
    Adds the given `RowSet` object to this `JoinRowSet` object. If the `RowSet` object is the first to be added to this `JoinRowSet` object, it forms the basis of the `JOIN` relationship to be established.

    This method should be used only when the given `RowSet` object already has a match column that was set with the `Joinable` method `setMatchColumn`.

    Note: A `Joinable` object is any `RowSet` object that has implemented the `Joinable` interface.

    Parameters:
      `rowset` - the `RowSet` object that is to be added to this `JoinRowSet` object; it must implement the `Joinable` interface and have a match column set
    Throws:
      `SQLException` - if (1) an empty rowset is added to the to this `JoinRowSet` object, (2) a match column has not been set for rowset, or (3) rowset violates the active `JOIN`
    See Also:
      - `Joinable.setMatchColumn(int)`

  - ### addRowSet

    void addRowSet(RowSet rowset, int columnIdx) throws SQLException
    Adds the given `RowSet` object to this `JoinRowSet` object and sets the designated column as the match column for the `RowSet` object. If the `RowSet` object is the first to be added to this `JoinRowSet` object, it forms the basis of the `JOIN` relationship to be established.

    This method should be used when RowSet does not already have a match column set.

    Parameters:
      `rowset` - the `RowSet` object that is to be added to this `JoinRowSet` object; it may implement the `Joinable` interface
      `columnIdx` - an `int` that identifies the column to become the match column
    Throws:
      `SQLException` - if (1) rowset is an empty rowset or (2) rowset violates the active `JOIN`
    See Also:
      - `Joinable.unsetMatchColumn(int)`

  - ### addRowSet

    void addRowSet(RowSet rowset, String columnName) throws SQLException
    Adds rowset to this `JoinRowSet` object and sets the designated column as the match column. If rowset is the first to be added to this `JoinRowSet` object, it forms the basis for the `JOIN` relationship to be established.

    This method should be used when the given `RowSet` object does not already have a match column.

    Parameters:
      `rowset` - the `RowSet` object that is to be added to this `JoinRowSet` object; it may implement the `Joinable` interface
      `columnName` - the `String` object giving the name of the column to be set as the match column
    Throws:
      `SQLException` - if (1) rowset is an empty rowset or (2) the match column for rowset does not satisfy the conditions of the `JOIN`

  - ### addRowSet

    void addRowSet(RowSet[] rowset, int[] columnIdx) throws SQLException
    Adds one or more `RowSet` objects contained in the given array of `RowSet` objects to this `JoinRowSet` object and sets the match column for each of the `RowSet` objects to the match columns in the given array of column indexes. The first element in columnIdx is set as the match column for the first `RowSet` object in rowset, the second element of columnIdx is set as the match column for the second element in rowset, and so on.

    The first `RowSet` object added to this `JoinRowSet` object forms the basis for the `JOIN` relationship.

    This method should be used when the given `RowSet` object does not already have a match column.

    Parameters:
      `rowset` - an array of one or more `RowSet` objects to be added to the `JOIN`; it may implement the `Joinable` interface
      `columnIdx` - an array of `int` values indicating the index(es) of the columns to be set as the match columns for the `RowSet` objects in rowset
    Throws:
      `SQLException` - if (1) an empty rowset is added to this `JoinRowSet` object, (2) a match column is not set for a `RowSet` object in rowset, or (3) a `RowSet` object being added violates the active `JOIN`

  - ### addRowSet

    void addRowSet(RowSet[] rowset, String[] columnName) throws SQLException
    Adds one or more `RowSet` objects contained in the given array of `RowSet` objects to this `JoinRowSet` object and sets the match column for each of the `RowSet` objects to the match columns in the given array of column names. The first element in columnName is set as the match column for the first `RowSet` object in rowset, the second element of columnName is set as the match column for the second element in rowset, and so on.

    The first `RowSet` object added to this `JoinRowSet` object forms the basis for the `JOIN` relationship.

    This method should be used when the given `RowSet` object(s) does not already have a match column.

    Parameters:
      `rowset` - an array of one or more `RowSet` objects to be added to the `JOIN`; it may implement the `Joinable` interface
      `columnName` - an array of `String` values indicating the names of the columns to be set as the match columns for the `RowSet` objects in rowset
    Throws:
      `SQLException` - if (1) an empty rowset is added to this `JoinRowSet` object, (2) a match column is not set for a `RowSet` object in rowset, or (3) a `RowSet` object being added violates the active `JOIN`

  - ### getRowSets

    Collection<?> getRowSets() throws SQLException
    Returns a `Collection` object containing the `RowSet` objects that have been added to this `JoinRowSet` object. This should return the 'n' number of RowSet contained within the `JOIN` and maintain any updates that have occurred while in this union.
    Returns:
      a `Collection` object consisting of the `RowSet` objects added to this `JoinRowSet` object
    Throws:
      `SQLException` - if an error occurs generating the `Collection` object to be returned

  - ### getRowSetNames

    String[] getRowSetNames() throws SQLException
    Returns a `String` array containing the names of the `RowSet` objects added to this `JoinRowSet` object.
    Returns:
      a `String` array of the names of the `RowSet` objects in this `JoinRowSet` object
    Throws:
      `SQLException` - if an error occurs retrieving the names of the `RowSet` objects
    See Also:
      - `CachedRowSet.setTableName(String)`

  - ### toCachedRowSet

    CachedRowSet toCachedRowSet() throws SQLException
    Creates a new `CachedRowSet` object containing the data in this `JoinRowSet` object, which can be saved to a data source using the `SyncProvider` object for the `CachedRowSet` object.

    If any updates or modifications have been applied to the JoinRowSet the CachedRowSet returned by the method will not be able to persist it's changes back to the originating rows and tables in the in the datasource. The CachedRowSet instance returned should not contain modification data and it should clear all properties of it's originating SQL statement. An application should reset the SQL statement using the `RowSet.setCommand` method.

    In order to allow changes to be persisted back to the datasource to the originating tables, the `acceptChanges` method should be used and called on a JoinRowSet object instance. Implementations can leverage the internal data and update tracking in their implementations to interact with the SyncProvider to persist any changes.

    Returns:
      a CachedRowSet containing the contents of the JoinRowSet
    Throws:
      `SQLException` - if an error occurs assembling the CachedRowSet object
    See Also:
      - `RowSet`
      - `CachedRowSet`
      - `SyncProvider`

  - ### supportsCrossJoin

    boolean supportsCrossJoin()
    Indicates if CROSS_JOIN is supported by a JoinRowSet implementation
    Returns:
      true if the CROSS_JOIN is supported; false otherwise

  - ### supportsInnerJoin

    boolean supportsInnerJoin()
    Indicates if INNER_JOIN is supported by a JoinRowSet implementation
    Returns:
      true is the INNER_JOIN is supported; false otherwise

  - ### supportsLeftOuterJoin

    boolean supportsLeftOuterJoin()
    Indicates if LEFT_OUTER_JOIN is supported by a JoinRowSet implementation
    Returns:
      true is the LEFT_OUTER_JOIN is supported; false otherwise

  - ### supportsRightOuterJoin

    boolean supportsRightOuterJoin()
    Indicates if RIGHT_OUTER_JOIN is supported by a JoinRowSet implementation
    Returns:
      true is the RIGHT_OUTER_JOIN is supported; false otherwise

  - ### supportsFullJoin

    boolean supportsFullJoin()
    Indicates if FULL_JOIN is supported by a JoinRowSet implementation
    Returns:
      true is the FULL_JOIN is supported; false otherwise

  - ### setJoinType

    void setJoinType(int joinType) throws SQLException
    Allow the application to adjust the type of `JOIN` imposed on tables contained within the JoinRowSet object instance. Implementations should throw a SQLException if they do not support a given `JOIN` type.
    Parameters:
      `joinType` - the standard JoinRowSet.XXX static field definition of a SQL `JOIN` to re-configure a JoinRowSet instance on the fly.
    Throws:
      `SQLException` - if an unsupported `JOIN` type is set
    See Also:
      - `getJoinType()`

  - ### getWhereClause

    String getWhereClause() throws SQLException
    Return a SQL-like description of the WHERE clause being used in a JoinRowSet object. An implementation can describe the WHERE clause of the SQL `JOIN` by supplying a SQL strings description of `JOIN` or provide a textual description to assist applications using a `JoinRowSet`
    Returns:
      whereClause a textual or SQL description of the logical WHERE clause used in the JoinRowSet instance
    Throws:
      `SQLException` - if an error occurs in generating a representation of the WHERE clause.

  - ### getJoinType

    int getJoinType() throws SQLException
    Returns a `int` describing the set SQL `JOIN` type governing this JoinRowSet instance. The returned type will be one of standard JoinRowSet types: `CROSS_JOIN`, `INNER_JOIN`, `LEFT_OUTER_JOIN`, `RIGHT_OUTER_JOIN` or `FULL_JOIN`.
    Returns:
      joinType one of the standard JoinRowSet static field definitions of a SQL `JOIN`. `JoinRowSet.INNER_JOIN` is returned as the default `JOIN` type is no type has been explicitly set.
    Throws:
      `SQLException` - if an error occurs determining the SQL `JOIN` type supported by the JoinRowSet instance.
    See Also:
      - `setJoinType(int)`