Recuperar datos mediante AdomdDataReader
Al recuperar datos analíticos, el objeto AdomdDataReader proporciona un buen equilibrio entre la sobrecarga y la interactividad. El AdomdDataReader objeto recupera un flujo plano de datos de solo lectura, de solo avance y plano de un origen de datos analíticos. Este flujo de datos no almacenado en búfer habilita la lógica de procedimiento para procesar los resultados de un origen de datos analíticos secuencialmente de forma eficaz. Esto hace que AdomdDataReader sea una buena elección al recuperar grandes cantidades de datos con fines de presentación porque los datos no se almacenan en caché en memoria.
también AdomdDataReader puede aumentar el rendimiento de la aplicación mediante la recuperación de datos en cuanto están disponibles, en lugar de esperar a que se devuelvan los resultados completos de la consulta. también AdomdDataReader reduce la sobrecarga del sistema porque, de forma predeterminada, este lector almacena solo una fila a la vez en memoria.
La diferencia para optimizar el rendimiento es que el objeto AdomdDataReader proporciona menos información sobre los datos recuperados que otros métodos de recuperación de datos. El AdomdDataReader objeto no admite un modelo de objetos de gran tamaño para representar datos o metadatos, ni permite características analíticas más complejas, como la reescribición de celdas. Sin embargo, el AdomdDataReader objeto proporciona un conjunto de métodos fuertemente especificados para recuperar datos del conjunto de celdas y un método para recuperar metadatos del conjunto de celdas en un formato tabular. Además, AdomdDataReader implementa la interfaz IDbDataReader para admitir el enlace de datos y recuperar datos mediante el método SelectCommand, desde el espacio de nombres System.Data de la biblioteca de clases de Microsoft .NET Framework.
Recuperar datos desde AdomdDataReader
Para usar el AdomdDataReader objeto para recuperar datos, siga estos pasos:
Crear una nueva instancia del objeto.
Para crear una nueva instancia de la clase AdomdDataReader , llame al método Execute o ExecuteReader del AdomdCommand objeto .
Recuperar datos.
Cuando el comando ejecuta la consulta, ADOMD.NET devuelve los resultados en el formato Resultset , un formato tabular como se describe en la especificación XML for Analysis, para aplanar los datos del AdomdDataReader objeto. El formato tabular no es muy frecuente en las consultas de datos analíticos debido a la dimensionalidad variable de dichos datos.
ADOMD.NET almacena estos resultados tabulares en el búfer de red del cliente hasta que los solicite a través de uno de los métodos siguientes:
Llame al método Read del objeto AdomdDataReader.
El Read método obtiene una fila de los resultados de la consulta. A continuación, puede pasar el nombre o la referencia ordinal de la columna a la propiedad Item para tener acceso a cada columna de la fila devuelta. Por ejemplo, la primera columna de la fila actual se denomina ColumnName. A continuación,
reader[0].ToString()
oreader["ColumnName"].ToString()
devolverá el contenido de la primera columna de la fila actual.Llame a uno de los métodos de descriptor de acceso con tipo.
proporciona AdomdDataReader una serie de métodos de accessor con tipo: métodos que permiten acceder a los valores de columna en sus tipos de datos nativos. Cuando se conoce el tipo de datos subyacente de un valor de columna, el uso de un método de descriptor de acceso con tipo reduce la conversión de tipos que es necesario realizar al recuperar el valor de columna y, por lo tanto, ofrece el máximo rendimiento.
Algunos de los métodos de accessor con tipo que están disponibles son GetDateTime, GetDoubley GetInt32. Para obtener una lista completa de los métodos de accessor con tipo, vea AdomdDataReader.
Cerrar el lector.
Siempre debe llamar al método Close cuando haya terminado de usar el AdomdDataReader objeto . Mientras una instancia de un AdomdDataReader objeto está abierta, AdomdConnection la utiliza exclusivamente ese AdomdDataReaderobjeto . No podrá ejecutar ningún comando en la AdomdConnectioninstancia de , incluida la creación de otra AdomdDataReader o System.Xml. XmlReader, hasta que cierre el objeto original AdomdDataReader.
Ejemplo de recuperación de datos desde AdomdDataReader
En el ejemplo de código siguiente se recorre en AdomdDataReader iteración un objeto y se devuelven los dos primeros valores, como cadenas, de cada fila.
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();
Recuperar metadatos desde AdomdDataReader
Mientras una instancia de un objeto AdomdDataReader está abierta, puede recuperar información de esquema, o metadatos, sobre el conjunto de registros actual mediante el GetSchemaTable método . GetSchemaTable devuelve un objeto DataTable que se rellena con la información de esquema del conjunto de registros actual. DataTable contendrá una fila para cada columna del conjunto de registros. Cada columna de la fila de la tabla de esquema se asigna a una propiedad de la columna devuelta en el conjunto de celdas, donde ColumnName es el nombre de la propiedad y el valor de la columna es el valor de la propiedad.
Ejemplo de recuperación de metadatos desde AdomdDataReader
En el ejemplo de código siguiente se escribe la información de esquema de un 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();
}
Recuperar varios conjuntos de resultados
En minería de datos se admite el concepto de tablas anidadas, que ADOMD.NET expone como conjuntos de filas anidados. Para recuperar el conjunto de filas anidado asociado a cada fila, llame al GetDataReader método .