次の方法で共有


データ セクション

データ セクションでは、保留中の更新、挿入、または削除と共に行セットのデータを定義します。 データ セクションには、0 行以上の行を含めることができます。 スキーマによって行が定義されている 1 つの行セットからのデータのみを含めることができます。 また、前に示したように、データのない列は省略できます。 属性またはサブ要素がデータ セクションで使用されているが、そのコンストラクトがスキーマ セクションで定義されていない場合、それは警告なしで無視されます。

String

テキスト データ内の予約済み XML 文字は、適切な文字エンティティに置き換える必要があります。 たとえば、"Joe's Garage" という会社名では、単一引用符をエンティティに置き換える必要があります。 実際の行は次のようになります。

<z:row CompanyName="Joe's Garage"/>  

文字 {',",&,<,>} は XML で予約されており、文字エンティティに置き換える必要があります。

バイナリ

バイナリ データは bin.hex でエンコードされます (つまり、1 バイトはニブルごとに 1 文字ずつ、2 文字にマップされます)。

DateTime

バリアント VT_DATE 形式は、XML-Data データ型では直接サポートされていません。 データと時刻の両方のコンポーネントを含む日付の正しい形式は、yyyy-mm-ddThh:mm:ss です。

XML で指定される日付形式の詳細については、W3C XML-Data の仕様を参照してください。

XML-Data仕様で 2 つの同等のデータ型 (i4 == int など) が定義されている場合、ADO はフレンドリ名を書き出しますが、読み取りは両方で行います。

保留中の変更を管理する

Recordset は、即時またはバッチ更新モードで開くことができます。 クライアント側カーソルを使用してバッチ更新モードで開くと、UpdateBatch メソッドが呼び出されるまで、Recordset に加えられたすべての変更は保留中の状態になります。 Recordset を保存すると、保留中の変更も永続化されます。 XML では、それらは、urn:schemas-microsoft-com:rowset で定義されている "update" 要素を使用して表されます。 さらに、行セットを更新できる場合は、行の定義で更新可能なプロパティを true に設定する必要があります。 たとえば、Shippers テーブルに保留中の変更が含まれていることを定義する場合、行の定義は次のようになります。

<s:ElementType name="row" content="eltOnly" updatable="true">  
  <s:attribute type="ShipperID"/>  
  <s:attribute type="CompanyName"/>  
  <s:attribute type="Phone"/>  
  <s:extends type="rs:rowbase"/>  
</s:ElementType>  

これにより、ADO で更新可能な Recordset オブジェクトを構築できるように、データを表示するように永続化プロバイダーに指示します。

次のサンプル データは、永続化されたファイルで挿入、変更、削除がどのようになるのかを示しています。

<rs:data>  
  <z:row ShipperID="2" CompanyName="United Package"   
    Phone="(503) 555-3199"/>  
<rs:update>  
  <rs:original>  
    <z:row ShipperID="3" CompanyName="Federal Shipping"   
      Phone="(503) 555-9931"/>  
  </rs:original>  
  <z:row Phone="(503) 552-7134"/>  
</rs:update>  
<rs:insert>  
  <z:row ShipperID="12" CompanyName="Lightning Shipping"   
    Phone="(505) 111-2222"/>  
  <z:row ShipperID="13" CompanyName="Thunder Overnight"   
    Phone="(505) 111-2222"/>  
  <z:row ShipperID="14" CompanyName="Blue Angel Air Delivery"   
    Phone="(505) 111-2222"/>  
</rs:insert>  
<rs:delete>  
  <z:row ShipperID="1" CompanyName="Speedy Express" Phone="(503) 555-9831"/>  
</rs:delete>  
</rs:data>  

更新には、元の行データ全体と、それに続けて変更後の行データが常に含まれます。 変更された行には、すべての列を含めるか、実際に変更された列のみを含めることができます。 前の例では、Shipper 2 の行は変更されておらず、Shipper 3 の Phone 列の値のみが変更されているため、その列のみが変更された行に含まれています。 Shipper 12、13、14 に挿入された行は、1 つの rs:insert タグの下でまとめられています。 削除された行もまとめることができますが、これは前の例では示されていません。

参照

レコードを XML 形式で保持する