Recuperação de dados usando XmlReader

A classe XmlReader, que faz parte do namespace System.Xml para a Biblioteca de Classes do Framework .NET, é semelhante à AdomdDataReader classe. Ambas as classes fornecem acesso rápido, sem cache e apenas avançado aos dados. Se não precisar de uma visão analítica em memória dos dados usando o CellSet objeto, o objeto XmlReader é perfeito para recuperar dados XML, especialmente para grandes quantidades de dados. Como o XmlReader transmite dados, não precisa de recuperar e armazenar em cache todos os dados antes de os expor ao chamador. Em contrapartida, se usar um objeto CellSet para converter a resposta XML for Analysis numa representação de modelo de objetos analítico, tem de esperar que todos os dados sejam colocados em cache.

A classe XmlReader fornece acesso direto à resposta XML for Analysis recebida por ADOMD.NET quando o ExecuteXmlReader método do AdomdCommand objeto é chamado. Como os dados recuperados são XML bruto, tens de analisar os dados e metadados manualmente. Assim que os dados forem recuperados, o objeto XmlReader deve ser fechado.

Recuperação de dados e metadados

Para obter dados utilizando a XmlReader classe, siga estes passos:

  1. Crie uma nova instância do objeto.

    Chame o método Execute ou ExecuteXmlReader no objeto AdomdCommand para criar uma instância de XmlReader.

  2. Recuperar dados.

    Depois de o comando executar a consulta e devolver um XmlReader, analise os dados e metadados. Os dados e metadados XML estão no formato nativo utilizado pelo fornecedor XML for Analysis. Para a maioria dos fornecedores XML para Análise, o formato nativo é o formato MDDataSet . O formato MDDataSet fornece tanto dados como metadados para conjuntos de células num formato bem estruturado. Para mais informações sobre o formato MDDataSet , consulte a especificação XML for Analysis.

  3. Fecha o leitor.

    Chama o Close método quando terminares de usar o objeto XmlReader . Embora um XmlReader esteja aberto, tem uso exclusivo do AdomdConnection objeto que executa o comando. Não podes executar nenhum comando usando esse <'xref:Microsoft. AnalysisServices.AdomdClient.AdomdConnection>, incluindo criar outro XmlReader ou AdomdDataReader, até fechar o XmlReader original.

Recuperar dados do XmlReader

O exemplo seguinte executa um comando, recupera dados como um XmlReader e escreve o conteúdo na consola.

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