public interface WebRowSet
所有 WebRowSet
的实现都必须实现的标准接口。
WebRowSetImpl
提供可在需要时扩展的标准参考实现。
标准的 WebRowSet XML 模式定义位于以下 URI 中:
http://java.sun.com/xml/ns/jdbc/webrowset.xsd它描述使用 XML 描述
RowSet
对象时所需的标准 XML 文档格式,所有
WebRowSet
接口的标准实现必须使用该文档格式以确保互操作性。此外,
WebRowSet
模式使用特定的 SQL/XML 模式注释,从而确保较高的跨平台互操作性。目前 ISO 组织正在为此而努力。SQL/XML 定义可从以下 URI 中得到:
http://standards.iso.org/iso/9075/2002/12/sqlxml模式定义从以下三个不同方面描述
RowSet
对象的内部数据:
RowSet
属性之外,这些属性还描述标准同步提供者属性。
WebRowSet
对象管理的表格结构关联的元数据。描述的元数据与在底层
java.sql.ResultSet
接口中可访问的元数据是紧密联系在一起的。
WebRowSet
对象的上一次填充或上一次同步以来的数据状态)和当前数据。通过跟踪原始数据和当前数据之间的 delta,
WebRowSet
维持其数据中的更改与原始数据源同步的能力。
WebRowSet
实现应该如何使用 XML 模式来描述更新、插入和删除操作,以及描述 XML 中
WebRowSet
对象的状态。
WebRowSet
对象输出为 XMLWebRowSet
对象,并使用取自数据源的一个简单的 2 列、5 行表进行填充。具有
WebRowSet
对象中的 5 个行使以 XML 描述它们成为可能。描述在 RowSet 接口中定义的各种标准 JavaBeans 属性和在
CachedRowSet
TM 接口中定义的标准属性的元数据,提供描述 WebRowSet 属性的主要细节。使用标准
writeXml
方法将 WebRowSet 对象输出为 XML 将内部属性描述如下:
<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>Sun Microsystems</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>描述 WebRowSet 的组成的元数据使用 XML 描述的细节如下所示。注意,两个列都在
column-definition
标识之间描述。
<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>详细说明如何描述属性和元数据之后,以下详细说明如何使用 XML 描述
WebRowSet
对象的内容。注意,它描述的是自从实例化以来没有经过任何修改的
WebRowSet
对象。
currentRow
标记将被映射到
WebRowSet
对象所提供的表结构的每一个行。
columnValue
标记可能包含
stringData
或
binaryData
标记,这取决于将 XML 值映射回的 SQL 类型。
binaryData
标记包含 Base64 编码的数据,通常用于
BLOB
和
CLOB
类型数据。
<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
对象中删除行首先简单地移动到要删除的行,然后调用
deleteRow
方法,如任何其他
RowSet
对象一样。以下两个代码行(其中
wrs 为
WebRowSet
对象)将删除第三行。
wrs.absolute(3); wrs.deleteRow();XML 描述显示第三行被标记为
deleteRow
,这将在
WebRowSet
对象中删去第三行。
<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
对象插入新行的方式是,移动到插入行,为该行中的每一列调用适当的更新方法,然后调用
insertRow
方法。
wrs.moveToInsertRow(); wrs.updateString(1, "fifththrow"); wrs.updateString(2, "5"); wrs.insertRow();以下代码片段更改刚插入的行中第二列的值。注意,此代码在将新行直接插入到当前行的后面时应用,这就是
next
方法将指针移动到正确行的原因。调用方法
acceptChanges
将更改写入数据源。
wrs.moveToCurrentRow(); wrs.next(); wrs.updateString(2, "V"); wrs.acceptChanges(); :使用 XML 描述此操作演示了在新行中插入 Java 代码的位置,然后在个别字段上的新插入行上执行更新。
<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();在 XML 中,此操作用
modifyRow
标记描述。出于原始行跟踪目的,原始值和新值都包含在该标记中。
<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
字段摘要 | |
---|---|
static String |
PUBLIC_XML_SCHEMA 为 WebRowSet 实现定义 XML 标记及其有效值的 XML 模式定义的公共标识符。 |
static String |
SCHEMA_SYSTEM_ID 为 WebRowSet 实现定义 XML 标记及其有效值的 XML 模式定义的 URL。 |
从接口 javax.sql.rowset.CachedRowSet 继承的字段 |
---|
COMMIT_ON_ACCEPT_CHANGES |
方法摘要 | |
---|---|
void |
readXml(InputStream iStream) 读取基于流的 XML 输入,以填充此 WebRowSet 对象。 |
void |
readXml(Reader reader) 从给定的 Reader 对象以其 XML 格式读取 WebRowSet 对象。 |
void |
writeXml(OutputStream oStream) 以 XML 格式将此 WebRowSet 对象的数据、属性和元数据写入给定的 OutputStream 对象。 |
void |
writeXml(ResultSet rs, OutputStream oStream) 使用给定 ResultSet 对象的内容填充此 WebRowSet 对象,并以 XML 格式将其数据、属性和元数据写入给定的 OutputStream 对象。 |
void |
writeXml(ResultSet rs, Writer writer) 使用给定 ResultSet 对象的内容填充此 WebRowSet 对象,并以 XML 格式将其数据、属性和元数据写入给定的 Writer 对象。 |
void |
writeXml(Writer writer) 以 XML 格式将此 WebRowSet 对象的数据、属性和元数据写入给定的 Writer 对象。 |
从接口 java.sql.Wrapper 继承的方法 |
---|
isWrapperFor, unwrap |
从接口 javax.sql.rowset.Joinable 继承的方法 |
---|
getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn |
字段详细信息 |
---|
static final String PUBLIC_XML_SCHEMA