Sdílet prostřednictvím


Přístup k datům XML

Existují dvě samostatné metody načítání dat XML ze zdroje dat: jedna používá CStreamRowset a druhá používá CXMLAccessor.

Funkce CStreamRowset CXMLAccessor
Objem přenášených dat Načte data ze všech sloupců a řádků najednou. Načte data ze všech sloupců, ale vždy pouze z jednoho řádku. Řádky je nutné procházet pomocí metod, jako MoveNextje .
Formátování řetězce SQL Server formátuje řetězec XML a odešle ho příjemci. Načte data sady řádků v nativním formátu (vyžaduje, aby je poskytovatel odeslal jako řetězce Unicode) a pak vytvoří řetězec obsahující data ve formátu XML.
Kontrola nad formátováním Máte určitou úroveň kontroly nad formátováním řetězce XML nastavením některých vlastností specifických pro SQL Server 2000. Nemáte žádnou kontrolu nad formátem vygenerovaného řetězce XML.

I když CStreamRowset poskytuje celkově efektivnější způsob načítání dat ve formátu XML, podporuje ho pouze SQL Server 2000.

Načítání dat XML pomocí CStreamRowset

Jako typ sady řádků ve vaší CCommand nebo CTable deklaraci zadáte CStreamRowset. Můžete ho použít s vlastním příslušenstvím nebo bez přístupového objektu, například:

CCommand<CAccessor<CMyAccessor>, CStreamRowset> myCmd;

nebo

CCommand<CNoAccessor, CStreamRowset> myCmd;

Obvykle při volání CCommand::Open (určení, například CRowset jako TRowset třída), získá IRowset ukazatel. ICommand::ExecuteIRowset vrátí ukazatel, který je uložen v m_spRowset členu objektuCRowset. Metody, jako MoveFirstje , MoveNexta GetData pomocí tohoto ukazatele načíst data.

Naproti tomu při volání CCommand::Open (ale zadat CStreamRowset jako TRowset třídu), ICommand::Execute vrátí ISequentialStream ukazatel, který je uložen v datovém členu m_spStream CStreamRowset. Pak použijete metodu Read k načtení dat (řetězec Unicode) ve formátu XML. Příklad:

myCmd.m_spStream->Read()

SQL Server 2000 provede formátování XML a vrátí všechny sloupce a všechny řádky sady řádků jako jeden řetězec XML.

Příklad použití Read metody naleznete v tématu Přidání podpory XML příjemci v implementaci jednoduchého příjemce.

Poznámka:

Podpora XML při použití CStreamRowset funguje jenom s SQL Serverem 2000 a vyžaduje, abyste měli zprostředkovatele OLE DB pro SQL Server 2000 (nainstalovaný s MDAC).

Načítání dat XML pomocí CXMLAccessoru

CXMLAccessor umožňuje přístup k datům ze zdroje dat jako řetězcová data, pokud nemáte žádné znalosti o schématu úložiště dat. CXMLAccessor funguje stejně jako CDynamicStringAccessorW to, že první převede všechna data, ke kterým se přistupuje z úložiště dat, jako jsou data ve formátu XML (označená). Názvy značek XML odpovídají názvům sloupců úložiště dat co nejblíže.

Použijte CXMLAccessor jako jakoukoli jinou třídu přístupového objektu a předáte ji jako parametr šablony:CCommand CTable

CTable<CXMLAccessor, CRowset> rs;

Pomocí metody GetXMLRowData můžete načíst data z tabulky po jednom řádku a procházet řádky pomocí metod, jako MoveNextje například:

// Open data source, session, and rowset
hr = rs.MoveFirst();

while(SUCCEEDED(hr) && hr != DB_S_ENDOFROWSET )
{
    CStringW strRowData;
    myCmd.GetXMLRowData(strRowData);

    printf_s( "%S\n", strRowData );

    hr = rs.MoveNext();
}

Pomocí metody GetXMLColumnData můžete načíst informace o sloupci (datovém typu) jako řetězcová data ve formátu XML.

Viz také

Použití přístupových objektů