Freigeben über


Abrufen von Daten mittels XmlReader

Die XmlReader-Klasse, die Bestandteil des System.Xml-Namespace für die Microsoft .NET Framework-Klassenbibliothek ist, ähnelt der AdomdDataReader-Klasse insofern, als die XmlReader-Klasse ebenfalls einen schnellen Vorwärtszugriff auf die Daten ohne Zwischenspeicherung ermöglicht. Wenn keine analytische Ansicht der Daten im Arbeitsspeicher mithilfe des CellSet-Objekts erforderlich ist, eignet sich das XmlReader-Objekt perfekt für das Abrufen von XML-Daten, insbesondere wenn es sich um große Datenmengen handelt. Da XmlReader Daten streamt, ist es nicht erforderlich, dass XmlReader alle Daten abruft und zwischenspeichert, bevor sie für den Aufrufer verfügbar gemacht werden. Dies wäre der Fall, wenn ein CellSet-Objekt zum Konvertieren der XML for Analysis-Antwort in eine analytische Objektmodelldarstellung verwendet würde.

Die XmlReader-Klasse bietet direkten Zugriff auf die von ADOMD.NET empfangene XML for Analysis-Antwort, wenn die ExecuteXmlReader-Methode des AdomdCommand-Objekts aufgerufen wird. Da es sich bei den abgerufenen Daten um nicht formatierte XML-Rohdaten handelt, müssen Sie die Daten und Metadaten manuell analysieren. Sobald die Daten abgerufen wurden, sollte das XmlReader-Objekt geschlossen werden.

Abrufen von Daten und Metadaten

Um die XmlReader-Klasse für das Abrufen von Daten zu verwenden, führen Sie die folgenden Schritte aus:

  1. Erstellen Sie eine neue Instanz des Objekts.

    Um eine neue Instanz der XmlReader-Klasse zu erstellen, rufen Sie die Execute- oder ExecuteXmlReader-Methode des AdomdCommand-Objekts auf.

  2. Rufen Sie Daten ab.

    Nachdem der Befehl die Abfrage ausgeführt hat und ein XmlReader-Objekt zurückgibt, müssen Sie die Daten und die Metadaten analysieren. Die XML-Daten und -Metadaten werden im systemeigenen Format angegeben, das vom XML for Analysis-Anbieter verwendet wird. Für die meisten XML for Analysis-Anbieter ist das systemeigene Format das MDDataSet-Format. Das MDDataSet-Format stellt sowohl Daten als auch Metadaten für Cellsets in einem gut strukturierten Format bereit. Weitere Informationen zum MDDataSet-Format finden Sie in der Spezifikation für XML for Analysis.

  3. Schließen Sie den Leser.

    Sie sollten immer die Close-Methode aufrufen, wenn Sie die Verwendung des XmlReader-Objekts abgeschlossen haben. Solange ein XmlReader-Objekt geöffnet ist, ist dieses XmlReader-Objekt zur ausschließlichen Verwendung des AdomdConnection-Objekts berechtigt, das zum Ausführen des Befehls verwendet wurde. Sie sind in diesem Fall nicht in der Lage, Befehle mithilfe dieses AdomdConnection auszuführen, einschließlich der Erstellung eines weiteren XmlReader oder AdomdDataReader, bis Sie das ursprüngliche XmlReader-Objekt schließen.

Beispiel für das Abrufen von Daten aus XmlReader

Im folgenden Beispiel wird ein Befehl ausgeführt, und die Daten werden als XmlReader-Objekt abgerufen, wobei die Dateiinhalte an die Konsole ausgegeben werden.

        void OutputDataWithXML()
        {
            //Open a connection to the local server.
            AdomdConnection conn = new AdomdConnection("Data Source=localhost");
            conn.Open();

            //Create a command to retrieve the data.
            AdomdCommand cmd = new AdomdCommand(@"WITH MEMBER [Measures].[FreightCostPerOrder] AS 
[Measures].[Reseller Freight Cost]/[Measures].[Reseller Order Quantity],  
FORMAT_STRING = 'Currency'

SELECT [Geography].[Geography].[Country].&[United States].Children ON ROWS, 
[Date].[Calendar].[Calendar Year] ON COLUMNS
FROM [Adventure Works]
WHERE [Measures].[FreightCostPerOrder]", conn);

            //Execute the command, retrieving an XmlReader.
            System.Xml.XmlReader reader = cmd.ExecuteXmlReader();

            //Do something with the reader: Parse data, Parse metadata,
            //                              Save for later loading into CellSet, etc.
            Console.WriteLine(reader.ReadOuterXml());

            //Close the reader, then the connection
            reader.Close();
            conn.Close();

            //Await user input.
            Console.ReadLine();
        }

Siehe auch

Verweis

Abrufen von Daten von einer analytischen Datenquelle

Abrufen von Daten mittels Cellset

Abrufen von Daten mittels AdomdDataReader