Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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:
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.
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()oureader["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.
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.