CXMLAccessor クラス
データ ストアのスキーマ (基になる構造体) に関する知識がない場合に、データ ソースに文字列データとしてアクセスできます。
構文
class CXMLAccessor : public CDynamicStringAccessorW
要件
ヘッダー: atldbcli.h
メンバー
メソッド
Name | 説明 |
---|---|
GetXMLColumnData | 列情報を取得します。 |
GetXMLRowData | 行ごとにテーブルの内容全体を取得します。 |
解説
ただし、データ ストアからアクセスされるすべてのデータを XML 形式 (タグ付き) データとして変換する点で、CXMLAccessor
は CDynamicStringAccessorW
と異なります。 これは、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 クラス