Gegevens ophalen met xmlReader

De XmlReader-klasse , onderdeel van de System.Xml-naamruimte voor de Microsoft .NET Framework-klassebibliotheek, is vergelijkbaar met de AdomdDataReader klasse waarin de XmlReader-klasse ook snelle, niet-in de cache opgeslagen, alleen-doorstuurtoegang tot gegevens biedt. Als er geen in-memory, analytische weergave van de gegevens nodig is met behulp van het CellSet object, is het XmlReader-object perfect voor het ophalen van XML-gegevens, met name voor grote hoeveelheden gegevens. Omdat XmlReader gegevens streamt, hoeft XmlReader niet alle gegevens op te halen en op te cachen voordat de gegevens aan de aanroeper worden weergegeven, zoals het geval is als een CellSet object wordt gebruikt om de XML voor analysereactie te converteren naar een analytische objectmodelweergave.

De XmlReader-klasse biedt directe toegang tot het XML for Analysis-antwoord dat is ontvangen door ADOMD.NET wanneer de ExecuteXmlReader methode van het AdomdCommand object wordt aangeroepen. Omdat de opgehaalde gegevens onbewerkte XML zijn, moet u de gegevens en metagegevens handmatig parseren. Zodra de gegevens zijn opgehaald, moet het XmlReader-object worden gesloten.

Gegevens en metagegevens ophalen

Als u de XmlReader-klasse wilt gebruiken om gegevens op te halen, voert u de volgende stappen uit:

  1. Maak een nieuw exemplaar van het object.

    Als u een nieuw exemplaar van de XmlReader-klasse wilt maken, roept u de Execute of ExecuteXmlReader methode van het AdomdCommand object aan.

  2. Gegevens ophalen.

    Nadat de opdracht de query uitvoert en een XmlReader retourneert, moet u de gegevens en metagegevens parseren. De XML-gegevens en -metagegevens worden weergegeven in de systeemeigen indeling die wordt gebruikt door de XML for Analysis-provider. Voor de meeste XML for Analysis-providers is de systeemeigen indeling de MDDataSet-indeling. De MDDataSet-indeling biedt zowel gegevens als metagegevens voor cellensets in een goed gestructureerde indeling. Zie de XML voor analysespecificatie voor meer informatie over de MDDataSet-indeling .

  3. Sluit de lezer.

    U moet altijd de Close methode aanroepen wanneer u klaar bent met het XmlReader-object . Terwijl een XmlReader is geopend, heeft xmlReader exclusief gebruik van het AdomdConnection object dat is gebruikt om de opdracht uit te voeren. U kunt geen opdrachten uitvoeren met die <'xref:Microsoft.AnalysisServices.AdomdClient.AdomdConnection>, inclusief het maken van een andere XmlReader of AdomdDataReader, totdat u de oorspronkelijke XmlReader sluit.

Voorbeeld van het ophalen van gegevens uit xmlReader

In het volgende voorbeeld wordt een opdracht uitgevoerd en worden de gegevens opgehaald als xmlReader, die de inhoud van het bestand naar de console uitvoert.

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