Recuperando dados usando o AdomdDataReader
Na recuperação de dados analíticos, o objeto AdomdDataReader oferece um bom equilíbrio entre sobrecarga e interatividade. O objeto AdomdDataReader recupera um fluxo dados somente leitura, somente encaminhamento, bidimensional a partir de uma fonte de dados analíticos. Esse fluxo de dados não armazenado permite que a lógica procedural processe com eficiência os resultados de uma fonte de dados analíticos de forma sequencial. Isso faz do AdomdDataReader uma boa opção para a recuperação de grandes quantidades de dados para fins de exibição, uma vez que os dados não são armazenados em cache em memória.
O AdomdDataReader também pode melhorar o desempenho do aplicativo ao recuperar dados assim que estiverem disponíveis, em vez de aguardar os resultados completos da consulta a ser retornada. O AdomdDataReader também reduz a sobrecarga do sistema porque, por padrão, este leitor só armazena uma linha de cada vez em memória.
A desvantagem do desempenho otimizado é que o objeto AdomdDataReader oferece menos informações sobre os dados recuperados do que outros métodos de recuperação de dados. O objeto AdomdDataReader não dá suporte a um modelo de objeto grande para a representação de dados ou de metadados e esse modelo de objeto também não permite recursos analíticos mais complexos, como o write-back de célula. No entanto, o objeto AdomdDataReader oferece um conjunto de métodos com rigidez de tipo para a recuperação de dados de conjuntos de células e um método para a recuperação de metadados de conjuntos de células em formato tabular. Adicionalmente, AdomdDataReader implementa a interface IDbDataReader para dar suporte à ligação de dados e para a recuperação de dados usando o método SelectCommand a partir do namespace System.Data da Biblioteca de Classes do Microsoft .NET Framework.
Recuperando dados do AdomdDataReader
Para usar o objeto AdomdDataReader para recuperar dados, siga estas etapas:
Crie uma nova instância do objeto.
Para criar uma nova instância da classe AdomdDataReader, chame o método Execute ou ExecuteReader do objeto AdomdCommand.
Recupere dados.
Quando o comando executa a consulta, o ADOMD.NET retorna os resultados no formato Resultset, um formato tabular como descrito na especificação do XML for Analysis, para que os dados fiquem bidimensionais para o objeto AdomdDataReader. Um formato tabelar é incomum na consulta de dados analíticos que consideram a dimensionalidade variável em tais dados.
O ADOMD.NET armazena esses resultados tabulares no buffer de rede no cliente até que você solicite-os usando um dos métodos a seguir:
Chame o método Read do objeto AdomdDataReader.
O método Read obtém uma linha dos resultados da consulta. Em seguida, você passa o nome, ou a referência ordinal, da coluna para a propriedade Item para acessar cada coluna da linha retornada. Por exemplo, a primeira coluna da linha atual é nomeada, ColumnName. Em seguida, reader[0].ToString() ou reader["ColumnName"].ToString() retornarão o conteúdo da primeira coluna da linha atual.
Chame um dos métodos de acessador de tipo.
O AdomdDataReader oferece uma série de métodos de acessador de tipo – métodos que permitem o acesso a valores de coluna em seus tipos de dados nativos. Quando você conhece o tipo de dados subjacente de um valor de coluna, um método de acessador de tipo reduz a quantidade de conversão de tipo exigida na recuperação do valor da coluna e oferece o melhor desempenho.
Alguns dos métodos de acessador de tipo disponíveis incluem GetDateTime, GetDouble e GetInt32. Para obter uma lista completa de métodos de acessador de tipo, consulte AdomdDataReader.
Feche o leitor.
Você deve sempre chamar o método Close ao terminar de usar o objeto AdomdDataReader. Embora uma instância de um objeto AdomdDataReader esteja aberta, o AdomdConnection é usado exclusivamente pelo AdomdDataReader. Você não poderá executar qualquer comando na instância de AdomdConnection, incluindo a criação de outro AdomdDataReader ou de System.Xml.XmlReader, até fechar o AdomdDataReader original.
Exemplo de recuperação de dados do AdomdDataReader
O exemplo de código a seguir itera por meio de um objeto AdomdDataReader e retorna os dois primeiros valores, como cadeias de caracteres, de cada linha.
If Reader.HasRows Then
Do While objReader.Read()
Console.WriteLine(vbTab & "{0}" & vbTab & "{1}", _
objReader.GetString(0), objReader.GetString(1))
Loop
Else
Console.WriteLine("No rows returned.")
End If
objReader.Close()
if (objReader.HasRows)
while (objReader.Read())
Console.WriteLine("\t{0}\t{1}", _
objReader.GetString(0), objReader.GetString(1));
else
Console.WriteLine("No rows returned.");
objReader.Close();
Recuperando metadados do AdomdDataReader
Embora uma instância de um objeto AdomdDataReader esteja aberta, você poderá recuperar informações de esquema, ou metadados, sobre o conjunto de registros atual por meio do método GetSchemaTable. GetSchemaTable retorna um objeto DataTable que é preenchido com as informações de esquema para o conjunto de registros atual. DataTable conterá uma linha para cada coluna do conjunto de registros. Cada coluna da linha da tabela do esquema é mapeada para uma propriedade da coluna retornada no conjunto de células, onde ColumnName é o nome da propriedade e o valor da coluna é o valor da propriedade.
Exemplo de recuperação de metadados do AdomdDataReader
O exemplo de código a seguir grava as informações de esquema para um objeto AdomdDataReader.
Dim schemaTable As DataTable = objReader.GetSchemaTable()
Dim objRow As DataRow
Dim objColumn As DataColumn
For Each objRow In schemaTable.Rows
For Each objColumn In schemaTable.Columns
Console.WriteLine(objColumn.ColumnName & " = " & objRow(objColumn).ToString())
Next
Console.WriteLine()
Next
DataTable schemaTable = objReader.GetSchemaTable();
foreach (DataRow objRow in schemaTable.Rows)
{
foreach (DataColumn objColumn in schemaTable.Columns)
Console.WriteLine(objColumn.ColumnName + " = " + objRow[objColumn]);
Console.WriteLine();
}
Recuperando vários conjuntos de resultados
A mineração de dados dá suporte ao conceito de tabelas aninhadas, exibidas pelo ADOMD.NET como conjuntos de linhas aninhados. Para recuperar o conjunto de linhas aninhado associado a cada linha, chame o m��todo GetDataReader.
Consulte também
Referência
Recuperando dados de uma fonte de dados analíticos