CXMLAccessor 類別
當您不知道資料存放區的架構(基礎結構)時,可讓您以字串數據的形式存取數據源。
語法
class CXMLAccessor : public CDynamicStringAccessorW
需求
標頭檔:atldbcli.h
成員
方法
名稱 | 描述 |
---|---|
GetXMLColumnData | 擷取數據行資訊。 |
GetXMLRowData | 依數據列擷取數據表的整個內容。 |
備註
不過, CXMLAccessor
CDynamicStringAccessorW
不同於 ,它會將從資料存放區存取的所有資料轉換成 XML 格式(標記)數據。 這特別適用於 XML 感知網頁的輸出。 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
[out]字串緩衝區的參考,其中包含要擷取的數據行類型資訊。 字串會格式化為符合資料存放區數據行名稱的 XML 標記名稱。
傳回值
其中一個標準 HRESULT 值。
備註
下列顯示數據行類型資訊的格式如何以 XML 格式。 type
指定數據行的數據類型。 請注意,數據類型是以 OLE DB 資料類型為基礎,而不是存取之資料庫的數據類型。
<columninfo>
<column type = I2/> ColumnName
</columninfo>
CXMLAccessor::GetXMLRowData
依數據列擷取數據表的整個內容做為 XML 格式的字串數據。
語法
HRESULT GetXMLRowData(CSimpleStringW& strOutput,
bool bAppend = false) throw();
參數
strOutput
[out]緩衝區的參考,其中包含要擷取的數據表數據。 數據會格式化為字串數據,其中包含符合數據存放區數據行名稱的 XML 標記名稱。
bAppend
[in]布爾值,指定是否要將字串附加至輸出數據的結尾。
傳回值
其中一個標準 HRESULT 值。
備註
下列顯示數據列數據如何格式化為 XML。 DATA
下方代表數據列數據。 使用move方法移至所需的數據列。
<row>
<column name>DATA</column name>
</row>
另請參閱
OLE DB 消費者範本
OLE DB 消費者範本參考
CAccessor 類別
CDynamicAccessor 類別
CDynamicParameterAccessor 類別
CDynamicStringAccessor 類別
CDynamicStringAccessorA 類別
CDynamicStringAccessorW 類別
CManualAccessor 類別