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 nivelado somente leitura, somente avanço e 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 torna a AdomdDataReader boa opção ao recuperar grandes quantidades de dados para fins de exibição porque os dados não são armazenados em cache na memória.

O AdomdDataReader também pode aumentar o desempenho do aplicativo recuperando dados assim que eles estão disponíveis, em vez de aguardar os resultados completos da consulta serem 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 pelo desempenho otimizado é que AdomdDataReader o objeto fornece menos informações sobre os dados recuperados do que outros métodos de recuperação de dados. O AdomdDataReader objeto não dá suporte a um modelo de objeto grande para representar dados ou metadados, nem esse modelo de objeto permite recursos analíticos mais complexos, como write-back de célula. No entanto, AdomdDataReader o objeto fornece um conjunto de métodos fortemente digitados para recuperar dados de conjunto de células e um método para recuperar metadados de 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 objeto AdomdDataReader para recuperar dados, siga estas etapas:

  1. Crie uma nova instância do objeto.

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

  2. Recuperar dados.

    Conforme o comando executa a consulta, ADOMD.NET retorna os resultados no formato Resultset , um formato tabular, conforme descrito na especificação XML for Analysis, AdomdDataReader para nivelar os dados do objeto. 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 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 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 fornece uma série de métodos de acessador digitados – métodos que permitem acessar 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 digitados disponíveis incluem GetDateTime, GetDoublee GetInt32. Para ver uma lista completa dos métodos de acessador digitados, 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, o AdomdConnection está sendo usado exclusivamente por esse AdomdDataReader. Você não poderá executar nenhum comando na instância AdomdConnectiondo , incluindo a criação de outro AdomdDataReader ou System.Xml. XmlReader, até que você feche o original AdomdDataReader.

Exemplo de recuperação de dados do AdomdDataReader

O exemplo de código a AdomdDataReader seguir itera por meio de um 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 modelo de registros atual usando o GetSchemaTable método . GetSchemaTable retorna um objeto DataTable que é preenchido com as informações de esquema para o registro atual. O 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, 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 para 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, exibidas pelo ADOMD.NET como conjuntos de linhas aninhados. Para recuperar o conjuntos de linhas aninhados associados a cada linha, chame o GetDataReader método .