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.