public interface WebRowSet extends CachedRowSet
WebRowSet must implement.
WebRowSetImpl provides the standard reference implementation, which may be extended if required.
The standard WebRowSet XML Schema definition is available at the following URI:
It describes the standard XML document format required when describing aRowSet object in XML and must be used be all standard implementations of the
WebRowSet interface to ensure interoperability. In addition, the
WebRowSet schema uses specific SQL/XML Schema annotations, thus ensuring greater cross platform inter-operability. This is an effort currently under way at the ISO organization. The SQL/XML definition is available at the following URI:
The schema definition describes the internal data of a
RowSet object in three distinct areas:
RowSet properties. WebRowSet object. The metadata described is closely aligned with the metadata accessible in the underlying java.sql.ResultSet interface. WebRowSet object) and the current data. By keeping track of the delta between the original data and the current data, a WebRowSet maintains the ability to synchronize changes in its data back to the originating data source. WebRowSet implementation should use the XML Schema to describe update, insert, and delete operations and to describe the state of a
WebRowSet object in XML.
WebRowSet Object to XMLWebRowSet object is created and populated with a simple 2 column, 5 row table from a data source. Having the 5 rows in a
WebRowSet object makes it possible to describe them in XML. The metadata describing the various standard JavaBeans properties as defined in the RowSet interface plus the standard properties defined in the
CachedRowSet™ interface provide key details that describe WebRowSet properties. Outputting the WebRowSet object to XML using the standard
writeXml methods describes the internal properties as follows:
<properties> <command>select co1, col2 from test_table</command> <concurrency>1</concurrency> <datasource/> <escape-processing>true</escape-processing> <fetch-direction>0</fetch-direction> <fetch-size>0</fetch-size> <isolation-level>1</isolation-level> <key-columns/> <map/> <max-field-size>0</max-field-size> <max-rows>0</max-rows> <query-timeout>0</query-timeout> <read-only>false</read-only> <rowset-type>TRANSACTION_READ_UNCOMMITED</rowset-type> <show-deleted>false</show-deleted> <table-name/> <url>jdbc:thin:oracle</url> <sync-provider> <sync-provider-name>.com.rowset.provider.RIOptimisticProvider</sync-provider-name> <sync-provider-vendor>Oracle Corporation</sync-provider-vendor> <sync-provider-version>1.0</sync-provider-name> <sync-provider-grade>LOW</sync-provider-grade> <data-source-lock>NONE</data-source-lock> </sync-provider> </properties> The meta-data describing the make up of the WebRowSet is described in XML as detailed below. Note both columns are described between the
column-definition tags.
<metadata> <column-count>2</column-count> <column-definition> <column-index>1</column-index> <auto-increment>false</auto-increment> <case-sensitive>true</case-sensitive> <currency>false</currency> <nullable>1</nullable> <signed>false</signed> <searchable>true</searchable> <column-display-size>10</column-display-size> <column-label>COL1</column-label> <column-name>COL1</column-name> <schema-name/> <column-precision>10</column-precision> <column-scale>0</column-scale> <table-name/> <catalog-name/> <column-type>1</column-type> <column-type-name>CHAR</column-type-name> </column-definition> <column-definition> <column-index>2</column-index> <auto-increment>false</auto-increment> <case-sensitive>false</case-sensitive> <currency>false</currency> <nullable>1</nullable> <signed>true</signed> <searchable>true</searchable> <column-display-size>39</column-display-size> <column-label>COL2</column-label> <column-name>COL2</column-name> <schema-name/> <column-precision>38</column-precision> <column-scale>0</column-scale> <table-name/> <catalog-name/> <column-type>3</column-type> <column-type-name>NUMBER</column-type-name> </column-definition> </metadata> Having detailed how the properties and metadata are described, the following details how the contents of a
WebRowSet object is described in XML. Note, that this describes a
WebRowSet object that has not undergone any modifications since its instantiation. A
currentRow tag is mapped to each row of the table structure that the
WebRowSet object provides. A
columnValue tag may contain either the
stringData or
binaryData tag, according to the SQL type that the XML value is mapping back to. The
binaryData tag contains data in the Base64 encoding and is typically used for
BLOB and
CLOB type data.
<data> <currentRow> <columnValue> firstrow </columnValue> <columnValue> 1 </columnValue> </currentRow> <currentRow> <columnValue> secondrow </columnValue> <columnValue> 2 </columnValue> </currentRow> <currentRow> <columnValue> thirdrow </columnValue> <columnValue> 3 </columnValue> </currentRow> <currentRow> <columnValue> fourthrow </columnValue> <columnValue> 4 </columnValue> </currentRow> </data>
WebRowSet object involves simply moving to the row to be deleted and then calling the method
deleteRow, as in any other
RowSet object. The following two lines of code, in which
wrs is a
WebRowSet object, delete the third row.
wrs.absolute(3);
wrs.deleteRow();
The XML description shows the third row is marked as a
deleteRow, which eliminates the third row in the
WebRowSet object.
<data> <currentRow> <columnValue> firstrow </columnValue> <columnValue> 1 </columnValue> </currentRow> <currentRow> <columnValue> secondrow </columnValue> <columnValue> 2 </columnValue> </currentRow> <deleteRow> <columnValue> thirdrow </columnValue> <columnValue> 3 </columnValue> </deleteRow> <currentRow> <columnValue> fourthrow </columnValue> <columnValue> 4 </columnValue> </currentRow> </data>
WebRowSet object can insert a new row by moving to the insert row, calling the appropriate updater methods for each column in the row, and then calling the method
insertRow.
wrs.moveToInsertRow(); wrs.updateString(1, "fifththrow"); wrs.updateString(2, "5"); wrs.insertRow(); The following code fragment changes the second column value in the row just inserted. Note that this code applies when new rows are inserted right after the current row, which is why the method
next moves the cursor to the correct row. Calling the method
acceptChanges writes the change to the data source.
wrs.moveToCurrentRow(); wrs.next(); wrs.updateString(2, "V"); wrs.acceptChanges(); Describing this in XML demonstrates where the Java code inserts a new row and then performs an update on the newly inserted row on an individual field.
<data> <currentRow> <columnValue> firstrow </columnValue> <columnValue> 1 </columnValue> </currentRow> <currentRow> <columnValue> secondrow </columnValue> <columnValue> 2 </columnValue> </currentRow> <currentRow> <columnValue> newthirdrow </columnValue> <columnValue> III </columnValue> </currentRow> <insertRow> <columnValue> fifthrow </columnValue> <columnValue> 5 </columnValue> <updateValue> V </updateValue> </insertRow> <currentRow> <columnValue> fourthrow </columnValue> <columnValue> 4 </columnValue> </currentRow> </date>
wrs.absolute(5); wrs.updateString(1, "new4thRow"); wrs.updateString(2, "IV"); wrs.updateRow(); In XML, this is described by the
modifyRow tag. Both the original and new values are contained within the tag for original row tracking purposes.
<data> <currentRow> <columnValue> firstrow </columnValue> <columnValue> 1 </columnValue> </currentRow> <currentRow> <columnValue> secondrow </columnValue> <columnValue> 2 </columnValue> </currentRow> <currentRow> <columnValue> newthirdrow </columnValue> <columnValue> III </columnValue> </currentRow> <currentRow> <columnValue> fifthrow </columnValue> <columnValue> 5 </columnValue> </currentRow> <modifyRow> <columnValue> fourthrow </columnValue> <updateValue> new4thRow </updateValue> <columnValue> 4 </columnValue> <updateValue> IV </updateValue> </modifyRow> </data>
JdbcRowSet,
CachedRowSet,
FilteredRowSet,
JoinRowSet
| Modifier and Type | Field and Description |
|---|---|
static 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 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.
|
COMMIT_ON_ACCEPT_CHANGESCLOSE_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 | Method and Description |
|---|---|
void |
readXml(InputStream
Reads a stream based XML input to populate this
WebRowSet object.
|
void |
readXml(Reader
Reads a
WebRowSet object in its XML format from the given
Reader object.
|
void |
writeXml(OutputStream
Writes the data, properties, and metadata for this
WebRowSet object to the given
OutputStream object in XML format.
|
void |
writeXml(ResultSet
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
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.
|
void |
writeXml(Writer
Writes the data, properties, and metadata for this
WebRowSet object to the given
Writer object in XML format.
|
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, undoUpdateaddRowSetListener, 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, setUsernameabsolute, 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, wasNullisWrapperFor, unwrapgetMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumnstatic final StringPUBLIC_XML_SCHEMA
WebRowSet implementation.
static final StringSCHEMA_SYSTEM_ID
WebRowSet implementation.
void readXml(Readerreader) throws SQLException
WebRowSet object in its XML format from the given
Reader object.
reader - the
java.io.Reader stream from which this
WebRowSet object will be populated
SQLException - if a database access error occurs
void readXml(InputStreamiStream) throws SQLException , IOException
WebRowSet object.
iStream - the
java.io.InputStream from which this
WebRowSet object will be populated
SQLException - if a data source access error occurs
IOException - if an IO exception occurs
void writeXml(ResultSetrs, Writer writer) throws SQLException
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.
NOTE: The WebRowSet cursor may be moved to write out the contents to the XML data source. If implemented in this way, the cursor must be returned to its position just prior to the writeXml() call.
rs - the
ResultSet object with which to populate this
WebRowSet object
writer - the
java.io.Writer object to write to.
SQLException - if an error occurs writing out the rowset contents in XML format
void writeXml(ResultSetrs, OutputStream oStream) throws SQLException , IOException
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.
NOTE: The WebRowSet cursor may be moved to write out the contents to the XML data source. If implemented in this way, the cursor must be returned to its position just prior to the writeXml() call.
rs - the
ResultSet object with which to populate this
WebRowSet object
oStream - the
java.io.OutputStream to write to
SQLException - if a data source access error occurs
IOException - if a IO exception occurs
void writeXml(Writerwriter) throws SQLException
WebRowSet object to the given
Writer object in XML format.
writer - the
java.io.Writer stream to write to
SQLException - if an error occurs writing out the rowset contents to XML
void writeXml(OutputStreamoStream) throws SQLException , IOException
WebRowSet object to the given
OutputStream object in XML format.
oStream - the
java.io.OutputStream stream to write to
SQLException - if a data source access error occurs
IOException - if a IO exception occurs