モジュール java.sql.rowset
パッケージ javax.sql.rowset

インタフェースWebRowSet

すべてのスーパー・インタフェース:
AutoCloseable, CachedRowSet, Joinable, ResultSet, RowSet, Wrapper
既知のすべてのサブインタフェース:
FilteredRowSet, JoinRowSet

public interface WebRowSet extends CachedRowSet
WebRowSetのすべての実装が実装しなければならない標準インタフェースです。

1.0 概要

WebRowSetImplは、必要に応じて拡張可能な標準リファレンス実装を提供します。

標準WebRowSet XMLスキーマ定義は、次のURIで確認できます。

このスキーマ定義は、XMLでRowSetを記述するときに必要な標準XMLドキュメント形式について記述したものです。相互運用性を得るためには、WebRowSetインタフェースのすべての標準実装で、このスキーマ定義を使用する必要があります。 さらに、WebRowSetスキーマは特定のSQL/XML Schema注釈を使用しているため、クロス・プラットフォームの相互運用性が向上します。 なお、このスキーマ定義は、ISO内で現在開発中です。 SQL/XML定義は、次のURIで確認できます。 このスキーマ定義は、RowSetオブジェクトの内部データを次の3つの領域から記述します。
  • properties - 一般的なRowSetプロパティに加えて、標準同期プロバイダのプロパティを記述する。
  • metadata - WebRowSetオブジェクトの管理下にある表構造に関連付けられたメタデータについて記述する。 記述されるメタデータは、配下のjava.sql.ResultSetインタフェース内でアクセス可能なメタデータと密接に連携している。
  • data - 元のデータ(前回WebRowSetオブジェクトを生成または同期してからのデータの状態)と現在のデータについて記述する。 元のデータと現在のデータのデルタを追跡することにより、WebRowSetを元のデータ・ソースと同期させることができる。

2.0 WebRowSetの状態

次に、WebRowSet実装で、XMLスキーマを使用して、更新、挿入、または削除操作を記述し、XMLでのWebRowSetオブジェクトの状態を記述する方法について具体的に説明します。

2.1 状態1 - WebRowSetオブジェクトのXMLでの出力

この例では、WebRowSetオブジェクトが、データ・ソースから、2列×5行の単純な表形式で生成されます。 WebRowSetオブジェクトに5行あるため、それらをXMLで記述できます。 RowSetインタフェースで定義されている様々な標準JavaBeansプロパティと、CachedRowSetインタフェースで定義されている標準プロパティを記述するメタデータによって、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_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>
  
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>
 
プロパティとメタデータの記述内容を確認したところで、次にWebRowSetオブジェクトのコンテンツをXMLで記述する方法について見ていきます。 これは、インスタンスを生成してから一切変更されていないWebRowSetオブジェクトを説明しています。 currentRowタグは、WebRowSetオブジェクトの表構造の各行に対応しています。 columnValueタグには、XML値のマップ先のSQL型によって、stringDataまたはbinaryDataタグが入ります。 binaryDataタグは通常、BLOBまたはCLOB型データ用です。ここには、Base64エンコード方式のデータが入ります。
 
 <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オブジェクトの行の削除では、ほかのRowSetオブジェクトと同様に、単に削除する行に移動し、deleteRowメソッドを呼び出すだけです。 次の2行のコード(この中ではwrsWebRowSetオブジェクト)で3行目を削除します。
     wrs.absolute(3);
     wrs.deleteRow();
 
XMLの記述では、3行目にdeleteRowというマークが付きWebRowSetオブジェクトの3行目が排除されます。
 
 <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();
 
次のコードの抜粋では、挿入したばかりの行の2列目の値を変更しています。 このコードは、現在の行の直後に新しい行が挿入された場合に適用されます。このため、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が生成されます。 置換された値は元の値になり、新しい値は現在の値になります。 次のコードは、カーソルを特定の行に移動し、変更を行い、完了したら行を更新します。

 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>
 
導入されたバージョン:
1.5
関連項目:
JdbcRowSetCachedRowSetFilteredRowSetJoinRowSet
  • フィールド詳細

    • PUBLIC_XML_SCHEMA

      static final String PUBLIC_XML_SCHEMA
      XMLタグと、これらのXMLタグのWebRowSet実装での有効値を定義する、XMLスキーマ定義の公開識別子です。
      関連項目:
      定数フィールド値
    • SCHEMA_SYSTEM_ID

      static final String SCHEMA_SYSTEM_ID
      XMLタグと、これらのXMLタグのWebRowSet実装での有効値を定義する、XMLスキーマ定義のURLです。
      関連項目:
      定数フィールド値
  • メソッドの詳細

    • readXml

      void readXml(Reader reader) throws SQLException
      指定されたReaderオブジェクトから、XML形式でWebRowSetオブジェクトを読み取ります。
      パラメータ:
      reader - java.io.Readerストリーム。ここからWebRowSetオブジェクトが生成される
      例外:
      SQLException - データベース・アクセス・エラーが発生した場合
    • readXml

      void readXml(InputStream iStream) throws SQLException, IOException
      ストリーム・ベースのXML入力を読み込み、このWebRowSetオブジェクトを生成します。
      パラメータ:
      iStream - java.io.InputStreamストリーム。ここからWebRowSetオブジェクトが生成される
      例外:
      SQLException - データ・ソース・アクセス・エラーが発生した場合
      IOException - IO例外が発生した場合
    • writeXml

      void writeXml(ResultSet rs, Writer writer) throws SQLException
      指定されたResultSetオブジェクトの内容からこのWebRowSetオブジェクトを生成し、そのデータ、プロパティ、およびメタデータを指定されたWriterオブジェクトにXML形式で書き込みます。

      ノート: WebRowSetカーソルは、XMLデータ・ソースへコンテンツを書き出すために移動するかもしれません。 このように実装されている場合、カーソルを、writeXml()呼出しの直前の位置に戻す必要があります

      パラメータ:
      rs - このWebRowSetオブジェクトを生成するResultSetオブジェクト
      writer - 書き込むjava.io.Writerオブジェクト。
      例外:
      SQLException - 行セットのコンテンツをXML形式で書き出すときにエラーが発生した場合
    • writeXml

      void writeXml(ResultSet rs, OutputStream oStream) throws SQLException, IOException
      指定されたResultSetオブジェクトの内容からこのWebRowSetオブジェクトを生成し、そのデータ、プロパティ、およびメタデータを指定されたOutputStreamオブジェクトにXML形式で書き込みます。

      ノート: WebRowSetカーソルは、XMLデータ・ソースへコンテンツを書き出すために移動するかもしれません。 このように実装されている場合、カーソルを、writeXml()呼出しの直前の位置に戻す必要があります

      パラメータ:
      rs - このWebRowSetオブジェクトを生成するResultSetオブジェクト
      oStream - 書込み先のjava.io.OutputStream
      例外:
      SQLException - データ・ソース・アクセス・エラーが発生した場合
      IOException - IO例外が発生した場合
    • writeXml

      void writeXml(Writer writer) throws SQLException
      このWebRowSetオブジェクトのデータ、プロパティ、メタデータを指定されたWriterオブジェクトにXML形式で書き込みます。
      パラメータ:
      writer - 書込み先のjava.io.Writerストリーム
      例外:
      SQLException - 行セットのコンテンツをXMLへ書き出すときにエラーが発生した場合
    • writeXml

      void writeXml(OutputStream oStream) throws SQLException, IOException
      このWebRowSetオブジェクトのデータ、プロパティ、メタデータを指定されたOutputStreamオブジェクトにXML形式で書き込みます。
      パラメータ:
      oStream - 書込み先のjava.io.OutputStreamストリーム
      例外:
      SQLException - データ・ソース・アクセス・エラーが発生した場合
      IOException - IO例外が発生した場合