|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.sql.rowset
接口 WebRowSet
- 所有超级接口:
- CachedRowSet, Joinable, ResultSet, RowSet
- 所有已知子接口:
- FilteredRowSet, JoinRowSet
-
public interface WebRowSet
- extends CachedRowSet
所有 WebRowSet
的实现都必须实现的标准接口。
1.0 概述
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
维持其数据中的更改与原始数据源同步的能力。
2.0 WebRowSet 状态
以下几部分演示WebRowSet
实现应该如何使用 XML 模式来描述更新、插入和删除操作,以及描述 XML 中 WebRowSet
对象的状态。
2.1 状态 1 - 将 WebRowSet
对象输出为 XML
在此示例中,创建一个 WebRowSet
对象,并使用取自数据源的一个简单的 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>
2.2 状态 2 - 删除行
在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>
2.3 状态 3 - 插入行
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>
2.4 状态 4 - 修改行
修改行生成特定的 XML,该 XML 记录新值和被替换的值。被替换的值变成原始值,而新值变成当前值。以下代码将指针移动到特定行,执行一些修改,并在完成时更新行。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 对象。 |
从接口 javax.sql.rowset.Joinable 继承的方法 |
---|
getMatchColumnIndexes, getMatchColumnNames, setMatchColumn, setMatchColumn, setMatchColumn, setMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn, unsetMatchColumn |
字段详细信息 |
---|
PUBLIC_XML_SCHEMA
static final String PUBLIC_XML_SCHEMA
-
为
WebRowSet
实现定义 XML 标记及其有效值的 XML 模式定义的公共标识符。- 另请参见:
- 常量字段值
SCHEMA_SYSTEM_ID
static final String SCHEMA_SYSTEM_ID
-
为
WebRowSet
实现定义 XML 标记及其有效值的 XML 模式定义的 URL。- 另请参见:
- 常量字段值
方法详细信息 |
---|
readXml
void readXml(Reader reader) throws SQLException
-
从给定的
Reader
对象以其 XML 格式读取WebRowSet
对象。 -
-
- 参数:
-
reader
- 用于填充此WebRowSet
对象的java.io.Reader
流。 - 抛出:
-
SQLException
- 如果发生数据库访问错误
readXml
void readXml(InputStream iStream) throws SQLException, IOException
-
读取基于流的 XML 输入,以填充此
WebRowSet
对象。 -
-
- 参数:
-
iStream
- 用来填充此WebRowSet
对象的java.io.InputStream
- 抛出:
-
SQLException
- 如果发生数据源访问错误 -
IOException
- 如果发生 IO 异常
writeXml
void writeXml(ResultSet rs, Writer writer) throws SQLException
-
使用给定
ResultSet
对象的内容填充此WebRowSet
对象,并以 XML 格式将其数据、属性和元数据写入给定的Writer
对象。注:可以移动
WebRowSet
指针将内容写出到 XML 数据源中。如果以这种方式实现,则在调用writeXml()
之前指针必须先返回其位置。 -
-
- 参数:
-
rs
- 用于填充此WebRowSet
对象的ResultSet
对象 -
writer
- 要写入的java.io.Writer
对象。 - 抛出:
-
SQLException
- 如果在以 XML 格式写出 rowset 内容时发生错误
writeXml
void writeXml(ResultSet rs, OutputStream oStream) throws SQLException, IOException
-
使用给定
ResultSet
对象的内容填充此WebRowSet
对象,并以 XML 格式将其数据、属性和元数据写入给定的OutputStream
对象。注:可以移动
WebRowSet
指针将内容写出到 XML 数据源中。如果以这种方式实现,则在调用writeXml()
之前必须先将指针返回其位置。 -
-
- 参数:
-
rs
- 用于填充此WebRowSet
对象的ResultSet
对象 -
oStream
- 要写入的java.io.OutputStream
- 抛出:
-
SQLException
- 如果发生数据源访问错误 -
IOException
- 如果发生 IO 异常
writeXml
void writeXml(Writer writer) throws SQLException
-
以 XML 格式将此
WebRowSet
对象的数据、属性和元数据写入给定的Writer
对象。 -
-
- 参数:
-
writer
- 要写入的java.io.Writer
流 - 抛出:
-
SQLException
- 如果在将 rowset 内容写出到 XML 时出错
writeXml
void writeXml(OutputStream oStream) throws SQLException, IOException
-
以 XML 格式将此
WebRowSet
对象的数据、属性和元数据写入给定的OutputStream
对象。 -
-
- 参数:
-
oStream
- 要写入的java.io.OutputStream
流 - 抛出:
-
SQLException
- 如果发生数据源访问错误 -
IOException
- 如果发生 IO 异常