Freigeben über


Zugreifen auf XML-Daten

Es gibt zwei separate Methoden zum Abrufen von XML-Daten aus einer Datenquelle: eine verwendet CStreamRowset und die andere verwendet CXMLAccessor.

Funktionalität CStreamRowset CXMLAccessor
Übertragene Datenmenge Ruft Daten aus allen Spalten und Zeilen gleichzeitig ab. Ruft Daten aus allen Spalten, aber jeweils nur einer Zeile ab. Sie müssen zeilenweise mithilfe von Methoden wie MoveNext.
Formatieren der Zeichenfolge SQL Server formatiert die XML-Zeichenfolge und sendet sie an den Consumer. Ruft Rowsetdaten im systemeigenen Format ab (Anforderungen, die der Anbieter als Unicode-Zeichenfolgen sendet) und erstellt dann die Zeichenfolge, die die Daten im XML-Format enthält.
Kontrolle über formatierung Sie haben eine gewisse Kontrolle darüber, wie die XML-Zeichenfolge formatiert wird, indem Sie einige SQL Server 2000-spezifische Eigenschaften festlegen. Sie haben keine Kontrolle über das Format der generierten XML-Zeichenfolge.

Bietet zwar CStreamRowset eine effizientere Möglichkeit zum Abrufen von Daten im XML-Format, wird jedoch nur von SQL Server 2000 unterstützt.

Abrufen von XML-Daten mit CStreamRowset

Sie geben CStreamRowset als Rowsettyp in Ihrer CCommand oder CTable Deklaration an. Sie können es beispielsweise mit Ihrem eigenen Accessor oder ohne Accessor verwenden:

CCommand<CAccessor<CMyAccessor>, CStreamRowset> myCmd;

Oder

CCommand<CNoAccessor, CStreamRowset> myCmd;

Normalerweise wird beim Aufrufen CCommand::Open (z CRowset . B. als TRowset Klasse) ein IRowset Zeiger angezeigt. ICommand::Execute gibt einen IRowset Zeiger zurück, der m_spRowset im Element des CRowset Objekts gespeichert ist. Methoden wie MoveFirst, MoveNextund GetData verwenden Sie diesen Zeiger, um die Daten abzurufen.

Wenn Sie dagegen aufrufen CCommand::Open (aber als TRowset Klasse angebenCStreamRowset), ICommand::Execute wird ein ISequentialStream Zeiger zurückgegeben, der m_spStream im Datenmememm von CStreamRowset gespeichert ist. Anschließend verwenden Sie die Read Methode, um die Daten (Unicode-Zeichenfolge) im XML-Format abzurufen. Zum Beispiel:

myCmd.m_spStream->Read()

SQL Server 2000 führt die XML-Formatierung aus und gibt alle Spalten und alle Zeilen des Rowsets als eine XML-Zeichenfolge zurück.

Ein Beispiel für die Verwendung der Read Methode finden Sie unter Hinzufügen der XML-Unterstützung zum Consumer in der Implementierung eines einfachen Consumers.

Hinweis

DIE XML-Unterstützung mit CStreamRowset SQL Server 2000 funktioniert nur mit SQL Server 2000 und erfordert, dass Sie über den OLE DB-Anbieter für SQL Server 2000 verfügen (installiert mit MDAC).

Abrufen von XML-Daten mit CXMLAccessor

Mit CXMLAccessor können Sie auf Daten aus einer Datenquelle als Zeichenfolgendaten zugreifen, wenn Sie kein Wissen über das Schema des Datenspeichers haben. CXMLAccessor funktioniert wie CDynamicStringAccessorW folgt, mit der Ausnahme, dass der frühere Daten, auf die über den Datenspeicher zugegriffen wird, als XML-formatierte (markierte) Daten konvertiert. Die XML-Tagnamen entsprechen den Spaltennamen des Datenspeichers so genau wie möglich.

Verwenden Sie CXMLAccessor sie wie jede andere Accessorklasse, und übergeben Sie sie als Vorlagenparameter an CCommand oder CTable:

CTable<CXMLAccessor, CRowset> rs;

Verwenden Sie "GetXMLRowData ", um Daten aus der Tabelle jeweils eine Zeile abzurufen, und navigieren Sie mithilfe von Methoden wie MoveNextz. B.:

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

Sie können GetXMLColumnData verwenden, um die Spalteninformationen (Datentyp) als XML-formatierte Zeichenfolgendaten abzurufen.

Siehe auch

Verwenden von Zugriffsmethoden