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.