Udostępnij za pośrednictwem


Uzyskiwanie dostępu do danych XML

Istnieją dwie osobne metody pobierania danych XML ze źródła danych: jeden używa CStreamRowset i innych zastosowań CXMLAccessor.

Funkcjonalność

CStreamRowset

CXMLAccessor

Ilość danych przesyłanych

Pobiera dane ze wszystkich kolumn i wierszy na raz.

Pobiera dane z wszystkich kolumn, ale tylko jeden wiersz naraz.Należy przejść wierszy przy użyciu metod, takich jak MoveNext.

Ciąg formatowania

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

Pobiera zestaw wierszy danych w oryginalnym formacie (liczba żądań, które dostawca wysłać ją jako ciągi Unicode) i następnie tworzy ciąg zawierający dane w formacie XML.

Kontrolę nad formatowaniem

Masz pewien poziom kontroli nad jak ma być sformatowany ciąg XML przez ustawienie niektórych właściwości specyficzne dla SQL Server 2000.

Nie masz kontroli nad format wygenerowanych ciągu XML.

Podczas gdy CStreamRowset zapewnia więcej skutecznie sposób pobierania danych w formacie XML jest obsługiwana tylko przez program SQL Server 2000.

Pobieranie danych XML przy użyciu CStreamRowset

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

CCommand<CAccessor<CMyAccessor>, CStreamRowset> myCmd;

-lub-

CCommand<CNoAccessor, CStreamRowset> myCmd;

Normalnie gdy wywołanie CCommand::Open (Określanie, na przykład, CRowset jako TRowset klasy), uzyska IRowset wskaźnik.ICommand::ExecuteZwraca IRowset wskaź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.

Z drugiej strony, jeśli zadzwonisz pod CCommand::Open (ale Określa CStreamRowset jako TRowset klasy), ICommand::Execute zwraca ISequentialStream wskaźnik, który jest przechowywany w m_spStream element członkowski danych CStreamRowset.Następnie należy użyć Read metoda pobierania danych (ciąg Unicode) w formacie XML.Na przykład:

myCmd.m_spStream->Read()

SQL Server 2000 wykonuje formatowania XML i zwraca wszystkie kolumny i wszystkie wiersze zestawu wierszy jako jeden ciąg XML.

Na przykład za pomocą Read metoda, zobacz "Dodawanie XML wsparcie to the Consumer" w wykonania prostego konsumenta.

[!UWAGA]

Obsługa języka XML za pomocą CStreamRowset działa tylko z programem SQL Server 2000 i wymaga, aby miały dostawca OLE DB dla programu SQL Server 2000 (instalowana z pakietem MDAC).

Pobieranie danych XML przy użyciu CXMLAccessor

CXMLAccessor pozwala na dostęp do danych ze źródła danych jako ciąg danych, gdy nie znasz schematu magazynu danych.CXMLAccessordziała jak CDynamicStringAccessorW , chyba że były konwertuje wszystkie dane udostępniane z magazynu danych jako (oznaczone) danych w formacie XML.Nazwy tagów XML jak najdokładniej dopasować nazwy kolumn w magazynie danych.

Użycie CXMLAccessor tak jak inne klasy akcesor przekazaniem go jako parametr szablonu do CCommand lub CTable:

CTable<CXMLAccessor, CRowset> rs;

Użycie 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 pobierania informacji o kolumnie (typ danych) jako ciąg znaków w formacie XML dane.

Zobacz też

Koncepcje

Korzystanie z metod dostępu