次の方法で共有


CXMLAccessor クラス

データ ストアのスキーマ (基になる構造体) に関する知識がない場合に、データ ソースに文字列データとしてアクセスできます。

構文

class CXMLAccessor : public CDynamicStringAccessorW

必要条件

ヘッダー: atldbcli.h

メンバー

メソッド

Name 説明
GetXMLColumnData 列情報を取得します。
GetXMLRowData 行ごとにテーブルの内容全体を取得します。

解説

ただし、データ ストアからアクセスされるすべてのデータを XML 形式 (タグ付き) データとして変換する点で、CXMLAccessorCDynamicStringAccessorW と異なります。 これは、XML 対応の Web ページに出力する場合に特に便利です。 XML タグ名は、データ ストアの列名とできるだけ近いものになります。

CDynamicAccessor メソッドを使用して列情報を取得します。 この列情報を使って、実行時にアクセサーを動的に作成します。

列情報は、このクラスによって作成および管理されるバッファーに格納されます。 GetXMLColumnData を使用して列情報を取得するか、GetXMLRowData を使用して列データを行ごとに取得します。

void DoCXMLAccessorTest()
{
   HRESULT hr = CoInitialize(NULL);

   CDataSource ds;
   CSession ss;

   CTable<CXMLAccessor> rs;

   // The following is an example initialization string:
   hr = ds.OpenFromInitializationString(L"Provider=Microsoft.Jet.OLEDB.4.0;"
      L"User ID=Admin;Data Source=Snippet.mdb;Mode=Share Deny None;"
      L"Extended Properties=\"\";Jet OLEDB:System database=\"\";"
      L"Jet OLEDB:Registry Path=\"\";Jet OLEDB:Database Password=\"\";"
      L"Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;"
      L"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;"
      L"Jet OLEDB:New Database Password=\"\";Jet OLEDB:Create System Database=False;"
      L"Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;"
      L"Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False");

   hr = ss.Open(ds);
   hr = rs.Open(ss, L"Customer"); // Customer is a table name in the database.

   CStringW strColumnInfo;
   rs.GetXMLColumnData(strColumnInfo);
   wprintf_s(L"%s\n", strColumnInfo);

   hr = rs.MoveFirst();
   while(SUCCEEDED(hr) && hr != DB_S_ENDOFROWSET)
   {
      CStringW strRowData;
      rs.GetXMLRowData(strRowData);
      wprintf_s(L"%s\n", strRowData);
      hr = rs.MoveNext();
   }

   ss.Close();
   ds.Close();
   CoUninitialize();
}

CXMLAccessor::GetXMLColumnData

テーブルの列の型情報を XML 形式の文字列データとして列ごとに取得します。

構文

HRESULT GetXMLColumnData(CSimpleStringW& strOutput) throw();

パラメーター

strOutput
[出力] 取得する列の型情報が格納されている文字列バッファーへの参照。 文字列の形式は、データ ストアの列名と一致する XML タグ名を使用して設定されます。

戻り値

標準 HRESULT 値のいずれか。

解説

列の型情報がどのようにして XML 形式に設定されるかを次に示します。 type によって、列のデータ型が指定されます。 データ型は、アクセスされるデータベースのデータ型ではなく、OLE DB のデータ型に基づいていることに注意してください。

<columninfo>

<column type = I2/> ColumnName

</columninfo>

CXMLAccessor::GetXMLRowData

テーブルの内容全体を XML 形式の文字列データとして行ごとに取得します。

構文

HRESULT GetXMLRowData(CSimpleStringW& strOutput,
   bool bAppend = false) throw();

パラメーター

strOutput
[出力] 取得するテーブル データが格納されているバッファーへの参照。 データの形式は、データ ストアの列名と一致する XML タグ名を使用して文字列データとして設定されます。

bAppend
[入力] 出力データの最後に文字列を追加するかどうかを指定するブール値。

戻り値

標準 HRESULT 値のいずれか。

解説

行データがどのようにして XML 形式に設定されるかを次に示します。 DATA (以下) は、行データを表します。 目的の行に移動するには、move メソッドを使用します。

<row>

<column name>DATA</column name>

</row>

関連項目

OLE DB コンシューマー テンプレートに関するページ
OLE DB コンシューマー テンプレート リファレンス
CAccessor クラス
CDynamicAccessor クラス
CDynamicParameterAccessor クラス
CDynamicStringAccessor クラス
CDynamicStringAccessorA クラス
CDynamicStringAccessorW クラス
CManualAccessor クラス