次の方法で共有


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

ADTG 形式と同様に、XML 形式での Recordset の保持は Microsoft OLE DB Persistence Provider によって実装されます。 このプロバイダーによって、保存されている XML ファイルから、または、ADO によって生成されたスキーマ情報を含むストリームから、順方向専用かつ読み取り専用の行セットが生成されます。 同様に、ADO Recordset を受け取り、XML を生成し、それをファイルに保存するか、COM IStream インターフェイスを実装するオブジェクトに保存できます。 (実際、ファイルは IStream をサポートするオブジェクトのもう 1 つの例に過ぎません)。バージョン 2.5 以降については、ADO では Microsoft XML Parser (MSXML) を利用して XML を Recordset に読み込みます。そのため、msxml.dll が必要になります。

注意

階層 Recordsets (データ シェイプ) を XML 形式で保存するとき、いくつかの制限が適用されます。 階層 Recordset に保留中の更新が含まれており、パラメーター化された階層 Recordset を保存できない場合は、XML に保存できません。 詳細については、「フィルター処理されたレコードセットおよび階層レコードセットの保持」を参照してください。

XML にデータを保持し、ADO 経由で再び読み込む最も簡単な方法は、Save メソッドと Open メソッドをそれぞれ使用することです。 次の ADO コード例では、Titles テーブルのデータを、titles.sav という名前のファイルに保存しています。

Dim rs as new Recordset  
Dim rs2 as new Recordset  
Dim c as new Connection  
Dim s as new Stream  
  
' Query the Titles table.  
c.Open "provider=sqloledb;data source=MySQLServer;initial catalog=pubs;Integrated Security='SSPI'"  
rs.cursorlocation = adUseClient  
rs.Open "select * from titles", c, adOpenStatic  
  
' Save to the file in the XML format. Note that if you don't specify   
' adPersistXML, a binary format (ADTG) will be used by default.  
rs.Save "titles.sav", adPersistXML  
  
' Save the recordset into the ADO Stream object.  
rs.save s, adPersistXML  
rs.Close  
c.Close  
  
set rs = nothing  
  
' Reopen the file.  
rs.Open "titles.sav",,,,adCmdFile  
' Open the Stream back into a Recordset.  
rs2.open s  

ADO では常に Recordset オブジェクト全体を保持します。 Recordset オブジェクトの行のサブセットを保持する場合、Filter メソッドを使用し、行を絞り込むか、選択句を変更します。 ただし、クライアント側カーソル (CursorLocation = adUseClient) で Recordset オブジェクトを開き、行のサブセットの保存に Filter メソッドを使用する必要があります。 たとえば、文字 "b" で始まるタイトルを取得する場合、オープン Recordset オブジェクトにフィルターを適用できます。

rs.Filter "title_id like 'B*'"  
rs.Save "btitles.sav", adPersistXML  

ADO では常に Client Cursor Engine 行セットを使用し、Persistence Provider によって生成される順方向専用データの上に、スクロールできてブックマークが付けられる Recordset オブジェクトを生成します。

このセクションでは、次のトピックを扱います。