Compartilhar via


Recuperando dados usando o AdomdDataReader

Ao recuperar dados analíticos, o AdomdDataReader objeto fornece um bom equilíbrio entre sobrecarga e interatividade. O AdomdDataReader objeto recupera um fluxo de dados linearizado, somente leitura e apenas para frente de uma fonte de dados analítica. Esse fluxo de dados não compilado permite que a lógica de procedimento processe resultados de forma eficiente de uma fonte de dados analítica sequencialmente. Isso torna a boa opção AdomdDataReader ao recuperar grandes quantidades de dados para fins de exibição porque os dados não são armazenados em cache na memória.

É possível também aumentar o desempenho do aplicativo recuperando dados assim que estiverem disponíveis, em vez de aguardar que os resultados completos da consulta sejam retornados. O AdomdDataReader também reduz a sobrecarga do sistema porque, por padrão, esse leitor armazena apenas uma linha por vez na memória.

A compensação para o desempenho otimizado é que o AdomdDataReader objeto fornece menos informações sobre dados recuperados do que outros métodos de recuperação de dados. O objeto AdomdDataReader não dá suporte a um modelo de objetos de grande porte para a representação de dados ou metadados, nem esse modelo de objetos permite funcionalidades analíticas mais complexas, como a atualização de células. No entanto, o AdomdDataReader objeto fornece um conjunto de métodos fortemente tipados para recuperar dados do conjunto de células e um método para recuperar metadados do conjunto de células em um formato tabular. Além disso, AdomdDataReader implementa a interface IDbDataReader para dar suporte à associação de dados e para recuperar dados usando o método SelectCommand , no namespace System.Data da Biblioteca de Classes do Microsoft .NET Framework.

Recuperando dados do AdomdDataReader

Para usar o AdomdDataReader objeto para recuperar dados, siga estas etapas:

  1. Crie uma nova instância do objeto.

    Para criar uma nova instância da classe AdomdDataReader, você deve chamar o método Execute ou o método ExecuteReader do objeto AdomdCommand.

  2. Recuperar dados.

    À medida que o comando executa a consulta, ADOMD.NET retorna os resultados no formato Resultset, um formato tabular, conforme descrito na especificação XML for Analysis, para achatar os dados para o objeto AdomdDataReader. Um formato tabular é incomum ao consultar dados analíticos considerando a dimensionalidade variável nesses dados.

    ADOMD.NET armazena esses resultados tabulares no buffer de rede no cliente até solicitá-los usando um dos seguintes métodos:

    • Chame o método Read do objeto AdomdDataReader.

      O Read método obtém uma linha dos resultados da consulta. Em seguida, você pode passar 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 na linha atual é nomeada, ColumnName. Em seguida, reader[0].ToString() ou reader["ColumnName"].ToString() retornará o conteúdo da primeira coluna na linha atual.

    • Chame um dos métodos de acesso tipados.

      AdomdDataReader fornece uma série de métodos de acesso tipados, métodos que permitem acessar valores de coluna em seus tipos de dados nativos. Quando você conhece o tipo de dado subjacente de um valor de coluna, um método acessador tipado reduz a quantidade de conversão de tipo necessária ao recuperar esse valor, oferecendo assim o melhor desempenho.

      Alguns dos métodos do acessador tipado disponíveis incluem GetDateTime, GetDoublee GetInt32. Para obter uma lista completa de métodos de acesso tipados, consulte AdomdDataReader.

  3. Feche o leitor.

    Você sempre deve chamar o Close método quando terminar de usar o AdomdDataReader objeto. Enquanto uma instância de um AdomdDataReader objeto está aberta, ela AdomdConnection está sendo usada exclusivamente por aquela AdomdDataReader. Você não poderá executar nenhum comando na instância de AdomdConnection, incluindo criar outra AdomdDataReader ou System.Xml.XmlReader, até fechar o original AdomdDataReader.

Exemplo de recuperação de dados do AdomdDataReader

O exemplo de código a seguir itera por meio de um AdomdDataReader objeto 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

Enquanto uma instância de um AdomdDataReader objeto está aberta, você pode recuperar informações de esquema ou metadados sobre o conjunto de registros atual usando o GetSchemaTable método. GetSchemaTable retorna um objeto DataTable que é preenchido com as informações de esquema do conjunto de registros atual. O DataTable conterá uma linha para cada coluna do conjunto de registros. Cada coluna da linha da tabela de esquema é mapeada para uma propriedade da coluna retornada no conjunto de células, em que 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 de um AdomdDataReader objeto.

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, que ADOMD.NET expõe como conjuntos de linhas aninhados. Para recuperar o conjunto de linhas aninhado associado a cada linha, você chama o método GetDataReader.