Share via


Recuperando dados usando o XmlReader

a classe xmlreader , parte do namespace de System.Xml para a biblioteca de classes do Microsoft .NET Framework, é semelhante à AdomdDataReader classe na qual a classe xmlreader também fornece acesso rápido, não armazenado em cache e somente encaminhamento aos dados. Se não houver necessidade de uma exibição analítica na memória dos dados usando o CellSet objeto, o objeto XmlReader será perfeito para recuperar dados XML, especialmente para grandes quantidades de dados. Como o XmlReader transmite dados, o XmlReader não precisa recuperar e armazenar em cache todos os dados antes de expor os dados para o chamador, como seria o caso se um CellSet objeto fosse usado para converter a resposta de XML for Analysis em uma representação de modelo de objeto analítico.

A classe XmlReader fornece acesso direto à resposta de XML for Analysis recebida pelo ADOMD.net quando o ExecuteXmlReader método do AdomdCommand objeto é chamado. Como os dados recuperados são XML bruto, você terá de analisar os dados e os metadados manualmente. Assim que os dados forem recuperados, o objeto XmlReader deverá ser fechado.

Recuperando dados e metadados

Para usar a classe XmlReader para recuperar dados, siga estas etapas:

  1. Crie uma nova instância do objeto.

    Para criar uma nova instância da classe XmlReader , chame o Execute método ou ExecuteXmlReader do AdomdCommand objeto.

  2. Recuperar dados.

    Depois que o comando executa a consulta e retorna um XmlReader, você deve analisar os dados e os metadados. Os dados e metadados XML são apresentados no formato nativo usado pelo provedor de XML for Analysis. Para a maioria dos provedores de XML for Analysis, o formato nativo é o formato MDDataSet . O formato MDDataSet fornece dados e metadados para células em um formato bem estruturado. Para obter mais informações sobre o formato MDDataSet , consulte a especificação de XML for Analysis.

  3. Feche o leitor.

    Você sempre deve chamar o Close método quando terminar de usar o objeto XmlReader . Embora um XmlReader esteja aberto, o XmlReader tem uso exclusivo do AdomdConnection objeto que foi usado para executar o comando. Você não poderá executar nenhum comando usando esse ' xref: Microsoft. AnalysisServices. AdomdClient. AdomdConnection > , incluindo a < criação de outro XmlReader ou AdomdDataReader , até que você feche o XmlReaderoriginal.

Exemplo de recuperação de dados do XmlReader

O exemplo a seguir executa um comando e recupera os dados como um XmlReader, gerando o conteúdo do arquivo para o console.

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