Udostępnij za pośrednictwem


Uzyskiwanie dostępu do danych XML

Istnieją dwie oddzielne metody pobierania danych XML ze źródła danych: jeden używa zestawu CStreamRowset , a drugi używa CXMLAccessor.

Funkcje CStreamRowset CXMLAccessor
Ilość przesyłanych danych Pobiera dane ze wszystkich kolumn i wierszy jednocześnie. Pobiera dane ze wszystkich kolumn, ale tylko jeden wiersz jednocześnie. Musisz nawigować po wierszach przy użyciu metod, takich jak MoveNext.
Formatowanie ciągu Program SQL Server formatuje ciąg XML i wysyła go do odbiorcy. Pobiera dane zestawu wierszy w formacie natywnym (żądania wysyłane przez dostawcę jako ciągi Unicode), a następnie tworzy ciąg zawierający dane w formacie XML.
Kontrola nad formatowaniem Masz pewną kontrolę nad sposobem formatowania ciągu XML przez ustawienie niektórych właściwości specyficznych dla programu SQL Server 2000. Nie masz kontroli nad formatem wygenerowanego ciągu XML.

Chociaż CStreamRowset zapewnia bardziej wydajny sposób pobierania danych w formacie XML, jest obsługiwany tylko przez program SQL Server 2000.

Pobieranie danych XML przy użyciu zestawu CStreamRowset

Jako typ zestawu wierszy w deklaracji CCommand lub CTable należy określić wartość CStreamRowset. Można go używać z własnym akcesorem lub bez dostępu, na przykład:

CCommand<CAccessor<CMyAccessor>, CStreamRowset> myCmd;

— lub —

CCommand<CNoAccessor, CStreamRowset> myCmd;

Zwykle podczas wywoływania CCommand::Open (na przykład CRowset określania TRowset jako klasy) otrzymuje wskaźnik IRowset . ICommand::ExecuteIRowset Zwraca wskaźnik, który jest przechowywany w elemencie m_spRowset CRowset członkowskim obiektu. Metody takie jak MoveFirst, MoveNexti GetData używają tego wskaźnika do pobierania danych.

Natomiast podczas wywoływania CCommand::Open metody (ale określ CStreamRowset jako TRowset klasęISequentialStream) ICommand::Execute zwraca wskaźnik, który jest przechowywany w m_spStream składowej danych CStreamRowset. Następnie użyj Read metody , aby pobrać dane (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 wszystkie wiersze zestawu wierszy jako jeden ciąg XML.

Aby zapoznać się z przykładem przy użyciu Read metody, zobacz Dodawanie obsługi XML do odbiorcy w temacie Implementowanie prostego konsumenta.

Uwaga

Obsługa kodu XML przy użyciu CStreamRowset programu działa tylko z programem SQL Server 2000 i wymaga dostawcy OLE DB dla programu SQL Server 2000 (zainstalowanego z usługą MDAC).

Pobieranie danych XML przy użyciu CXMLAccessor

Funkcja CXMLAccessor umożliwia dostęp do danych ze źródła danych jako danych ciągu, gdy nie masz wiedzy na temat schematu magazynu danych. CXMLAccessor działa tak, jak CDynamicStringAccessorW to, że poprzednia konwertuje wszystkie dane dostępne z magazynu danych jako dane sformatowane w formacie XML (oznakowane). Nazwy tagów XML są jak najbardziej zgodne z nazwami kolumn magazynu danych.

Użyj CXMLAccessor metody , tak jak w przypadku każdej innej klasy dostępu, przekazując ją jako parametr szablonu do CCommand lub CTable:

CTable<CXMLAccessor, CRowset> rs;

Użyj metody GetXMLRowData , aby pobrać dane z tabeli jeden wiersz jednocześnie i nawigować po wierszach 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żesz użyć metody GetXMLColumnData , aby pobrać informacje o kolumnie (typie danych) jako dane ciągów w formacie XML.

Zobacz też

Korzystanie z metod dostępu