Класс CXMLAccessor
Позволяет получить доступ к источникам данных в виде строковых данных, если у вас нет знаний о схеме хранилища данных (базовой структуре).
Синтаксис
class CXMLAccessor : public CDynamicStringAccessorW
Требования
Заголовок: atldbcli.h
Участники
Методы
Имя | Описание |
---|---|
GetXMLColumnData | Извлекает сведения о столбце. |
GetXMLRowData | Извлекает все содержимое таблицы по строкам. |
Замечания
Тем не менее, отличается от CDynamicStringAccessorW
того, CXMLAccessor
что он преобразует все данные, доступ к которым обращается из хранилища данных в виде 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