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 interoperability. 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_UNCOMMITTED</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>
javax.sql.rowset.JdbcRowSet , javax.sql.rowset.CachedRowSet , javax.sql.rowset.FilteredRowSet , javax.sql.rowset.JoinRowSet
| Modifier and Type | Field and Description |
|---|---|
| public 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 |
| public 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 |
| Modifier and Type | Method and Description |
|---|---|
| public void | |
| public void | readXml(InputStream
the iStream)java.io.InputStream from which this
WebRowSet object will be populatedReads a stream based XML input to populate this |
| public void | writeXml(ResultSet
the rs, Writer ResultSet object with which to populate this
WebRowSet objectthe writer)java.io.Writer object to write to.Populates this |
| public void | writeXml(ResultSet
the rs, OutputStream ResultSet object with which to populate this
WebRowSet objectthe oStream)java.io.OutputStream to write toPopulates this |
| public void | |
| public void | writeXml(OutputStream
the oStream)java.io.OutputStream stream to write toWrites the data, properties, and metadata for this |
| PUBLIC_XML_SCHEMA | back to summary |
|---|---|
| public 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 | |
| SCHEMA_SYSTEM_ID | back to summary |
|---|---|
| public 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 | |
| readXml | back to summary |
|---|---|
| public void readXml(Reader reader) throws SQLException Reads a
| |
| readXml | back to summary |
|---|---|
| public void readXml(InputStream iStream) throws SQLException, IOException Reads a stream based XML input to populate this
| |
| writeXml | back to summary |
|---|---|
| public void writeXml(ResultSet rs, Writer writer) throws SQLException Populates this Note The
| |
| writeXml | back to summary |
|---|---|
| public void writeXml(ResultSet rs, OutputStream oStream) throws SQLException, IOException Populates this Note The
| |
| writeXml | back to summary |
|---|---|
| public void writeXml(Writer writer) throws SQLException Writes the data, properties, and metadata for this
| |
| writeXml | back to summary |
|---|---|
| public void writeXml(OutputStream oStream) throws SQLException, IOException Writes the data, properties, and metadata for this
| |