Udostępnij za pośrednictwem


Uzyskiwanie dostępu do danych XML

Istnieją dwa oddzielne metod pobierania danych XML ze źródła danych: jeden wykorzystuje CStreamRowset i innych zastosowań CXMLAccessor.

Funkcje

CStreamRowset

CXMLAccessor

Ilość danych przesyłanych

Pobiera dane ze wszystkich kolumn i wierszy na raz.

Pobiera dane z wszystkich kolumn, ale tylko w jednym wierszu naraz.Muszą przejść wierszy przy użyciu metod, takich jak MoveNext.

Formatowanie ciągu

SQL Server Formatuje ciąg XML i wysyła go do konsumenta.

Pobiera dane z wierszy w formacie macierzystym (żądań, które dostawca wysłać jako ciągi znaków Unicode) i następnie konstruuje ciąg znaków zawierający dane w formacie XML.

Kontrolę nad formatowaniem

Masz pewien poziom kontroli nad sposobu formatowania ciągu XML przez ustawienie niektórych właściwości specyficzne dla programu SQL Server 2000.

Masz brak kontroli nad format generowanych ciągu XML.

Podczas gdy CStreamRowset zawiera więcej ogólnie skuteczny sposób pobierania danych w formacie XML jest obsługiwane tylko przez program SQL Server 2000.

Pobieranie danych XML przy użyciu CStreamRowset

Możesz określić CStreamRowset jako typ wierszy w sieci CCommand lub CTable deklaracji.Można go z własnych akcesor lub nie akcesor na przykład:

CCommand<CAccessor<CMyAccessor>, CStreamRowset> myCmd;

- lub -

CCommand<CNoAccessor, CStreamRowset> myCmd;

Zwykle po wywołaniu CCommand::Open (określające, na przykład, CRowset jako TRowset klasy), uzyskuje on IRowsetwskaźnik.ICommand::ExecuteZwraca IRowsetwskaźnik, który jest przechowywany w m_spRowset członek CRowset obiektu.Metody takie jak MoveFirst, MoveNext, i GetData do pobierania danych za pomocą tego wskaźnika.

Natomiast po wywołaniu CCommand::Open (ale CStreamRowset jako TRowset klasy), ICommand::Execute zwraca ISequentialStream wskaźnik, który jest przechowywany w m_spStream członek danych z CStreamRowset.Następnie użyj Read metoda pobierania danych (ciąg Unicode) w formacie XML.Na przykład:

myCmd.m_spStream->Read()

Program SQL Server 2000 wykonuje formatowanie XML i zwraca wszystkie kolumny i wiersze wszystkich wierszy jako jeden ciąg XML.

Na przykład za pomocą Read metody, zobacz "Dodawanie XML wsparcie do konsumenta" w wykonania prostego konsumenta.

[!UWAGA]

Obsługa języka XML za pomocą CStreamRowset działa z programem SQL Server 2000 wyłącznie i wymaga posiadania dostawcy OLE DB dla programu SQL Server 2000 (instalowana z pakietem MDAC).

Pobieranie danych XML przy użyciu CXMLAccessor

CXMLAccessor umożliwia dostęp do danych ze źródła danych jako ciąg danych, gdy nie znają schematu magazynu danych.CXMLAccessorjak program Works CDynamicStringAccessorW z wyjątkiem, że były konwertuje wszystkie dane z magazynu danych w formacie XML (oznaczonych) danych.Nazwy tagów XML jak najdokładniej dopasować nazwy kolumn magazynu danych.

Użyj CXMLAccessor jak w przypadku innych klasy akcesor, przekazując jej parametr szablonu do CCommand lub CTable:

CTable<CXMLAccessor, CRowset> rs;

Użyj GetXMLRowData do pobierania danych z tabeli jeden wiersz naraz, a następnie przejdź wierszy przy użyciu metod, takich jak MoveNext, na przykład:

// 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();
}

Można użyć GetXMLColumnData do pobrania informacji o kolumnie (typ danych) jako ciąg znaków w formacie XML dane.

Zobacz też

Koncepcje

Za pomocą akcesorów