Partilhar via


Recuperando dados usando o AdomdDataReader

Ao recuperar dados analíticos, o AdomdDataReader objeto proporciona um bom equilíbrio entre sobrecarga e interatividade. O AdomdDataReader objeto recupera um fluxo de dados apenas de leitura, só de avanço, e achatado a partir de uma fonte de dados analítica. Este fluxo de dados não armazenado em buffer permite que a lógica procedural processe de forma eficiente os resultados de uma fonte de dados analítica de forma sequencial. Isto torna-o AdomdDataReader uma boa escolha ao recuperar grandes quantidades de dados para fins de visualização, pois os dados não estão armazenados em cache na memória.

Também AdomdDataReader pode aumentar o desempenho da aplicação ao recuperar dados assim que estão disponíveis, em vez de esperar que os resultados completos da consulta sejam devolvidos. Isto AdomdDataReader também reduz a sobrecarga do sistema porque, por defeito, este leitor armazena apenas uma linha de cada vez na memória.

A desvantagem para o desempenho otimizado é que o AdomdDataReader objeto fornece menos informação sobre os dados recuperados do que outros métodos de recuperação de dados. O objeto AdomdDataReader não suporta um modelo de objeto grande para representar dados ou metadados, nem este modelo de objeto permite funcionalidades analíticas mais complexas, como a retroação de célula. No entanto, o objeto AdomdDataReader 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 formato tabular. Além disso, AdomdDataReader implementa a interface IDbDataReader para suportar ligação de dados e para recuperar dados usando o método SelectCommand , a partir do namespace System.Data da Microsoft .NET Framework Class Library.

Recuperação de Dados do AdomdDataReader

Para usar o AdomdDataReader objeto para recuperar dados, segue estes passos:

  1. Crie uma nova instância do objeto.

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

  2. Recuperar dados.

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

    ADOMD.NET armazena estes resultados tabulares no buffer de rede do cliente até os solicitar, utilizando um dos seguintes métodos:

    • Chame o método Read do objeto AdomdDataReader.

      O Read método obtém uma linha a partir dos resultados da consulta. Pode então passar o nome, ou a referência ordinal, da coluna à propriedade Item para aceder a cada coluna da linha devolvida. Por exemplo, a primeira coluna da linha atual é chamada ColumnName. Depois, ou reader[0].ToString() ou reader["ColumnName"].ToString() devolverá o conteúdo da primeira coluna da linha atual.

    • Chama um dos métodos de acesso tipado.

      AdomdDataReader fornece uma série de métodos de acesso tipados—métodos que permitem o acesso aos valores das colunas nos seus tipos de dados nativos. Quando se conhece o tipo de dado subjacente ao valor de uma coluna, um método de acesso tipado reduz a quantidade de conversão de tipo necessária ao recuperar o valor da coluna e, assim, proporciona o maior desempenho.

      Alguns dos métodos de acesso tipado disponíveis incluem GetDateTime, GetDouble, e GetInt32. Para uma lista completa de métodos de acesso tipificados, veja AdomdDataReader.

  3. Fecha o leitor.

    Deve chamar sempre o método Close quando terminar de usar o objeto AdomdDataReader. Enquanto uma instância de um AdomdDataReader 'objeto é aberta, o AdomdConnection está a ser usado exclusivamente por esse AdomdDataReader. Não poderá executar quaisquer comandos na instância do AdomdConnection, incluindo criar outro AdomdDataReader ou System.Xml.XmlReader, até fechar o original AdomdDataReader.

Exemplo de recuperação de dados do AdomdDataReader

O exemplo de código seguinte itera através de um AdomdDataReader objeto e devolve 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();  

Recuperação de Metadados do AdomdDataReader

Enquanto uma instância de um AdomdDataReader objeto estiver aberta, pode obter informação do esquema, ou metadados, sobre o conjunto de registos atual usando o GetSchemaTable método. GetSchemaTable devolve um objeto DataTable que é preenchido com a informação do esquema do conjunto de registos atual. O DataTable conterá uma linha para cada coluna do conjunto de registos. Cada coluna da linha da tabela de esquema corresponde a uma propriedade da coluna devolvida no conjunto de células, onde Nomeda da Coluna é o nome da propriedade e o valor da coluna é o valor da propriedade.

Exemplo de recuperação de metadados do AdomdDataReader

O seguinte exemplo de código escreve a informação do 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();  
}  

Recuperação de Múltiplos Conjuntos de Resultados

A mineração de dados suporta o conceito de tabelas aninhadas, que ADOMD.NET expõem como conjuntos de linhas aninhadas. Para recuperar o conjunto de linhas aninhado associado a cada linha, chama o método GetDataReader.