Recuperando dados usando o XmlReader
A classe XmlReader, parte do namespace System.Xml da Biblioteca de Classes do Microsoft .NET Framework, é similar à classe AdomdDataReader, uma vez que a classe XmlReader também oferece acesso aos dados rápido, sem-cache e somente para encaminhamento. Se não houver necessidade de uma exibição analítica em memória dos dados usando o objeto CellSet, o objeto XmlReader será perfeito para a recuperação de dados XML, especialmente para grandes quantidades de dados. Como o XmlReader cria fluxos de dados, o XmlReader não precisa recuperar e armazenar em cache todos os dados antes de exibi-los ao chamador, como seria o caso se um objeto CellSet fosse usado para converter a resposta do XML for Analysis para uma representação do modelo de objeto analítico.
A classe XmlReader fornece acesso direto à resposta XML for Analysis recebida pelo ADOMD.NET quando o método ExecuteXmlReader do objeto AdomdCommand é 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:
Crie uma nova instância do objeto.
Para criar uma nova instância da classe XmlReader, chame o método Execute ou ExecuteXmlReader do objeto AdomdCommand.
Recupere dados.
Depois que o comando executar a consulta e retornar um XmlReader, analise 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 será o formato MDDataSet. O formato MDDataSet fornece dados e metadados para conjuntos de células em um formato bem-estruturado. Para obter mais informações sobre o formato MDDataSet, consulte a especificação do XML for Analysis.
Feche o leitor.
Sempre chame o método Close quando terminar de usar o objeto XmlReader. Enquanto um XmlReader estiver aberto, esse XmlReader terá uso exclusivo do objeto AdomdConnection usado para executar o comando. Você não poderá executar qualquer comando usando esse AdomdConnection, incluindo a criação de outro XmlReader ou AdomdDataReader, até fechar o XmlReader original.
Exemplo de recuperação de dados do XmlReader
O exemplo a seguir executa um comando e recupera os dados como um XmlReader, enviando 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();
}
Consulte também
Referência
Recuperando dados de uma fonte de dados analíticos