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
表示行数据。 使用移动方法移动到所需行。
<row>
<column name>DATA</column name>
</row>
另请参阅
OLE DB 使用者模板
OLE DB 使用者模板参考
CAccessor 类
CDynamicAccessor 类
CDynamicParameterAccessor 类
CDynamicStringAccessor 类
CDynamicStringAccessorA 类
CDynamicStringAccessorW 类
CManualAccessor 类