Filas que contenidas en un DataReader

09/02/2004 - 18:01 por Mario Barro | Informe spam
Hola a todos;


Es posible saber el número de elementos que contiene un datareader, o tras
su devolución con un objeto command.

Es decir,

SqlDataReader dtr = cmd.ExecuteReader();

// En este momento saber cuantos elementos se han devuleto.

Gracias

Preguntas similare

Leer las respuestas

#6 Alejandro Mezcua
10/02/2004 - 12:39 | Informe spam
Hola, Mario.

El que el DataReader no te devuelva el número de registros no es una
limitación, simplemente es su funcionalidad. Un DataReader te proporciona un
acceso tipo stream de un origen de datos abstracto, no tiene por qué ser una
base de datos, puede ser un archivo cualquiera, y tu puedes crear tu propia
implementación de un DataReader para otra fuente de datos distinta. El
concepto de stream hace que sea imposible saber el tamaño completo de los
datos hasta haber recorrido todo el stream (los datos se van adquiriendo
byte a byte). La gran ventaja es la velocidad con la que puedes acceder al
contenido.

Si necesitas saber el número completo del registros obtenidos de una
consulta puedes utilizar clases de más alto nivel dentro del namespace de
System.Data.

Es comparable a, por ejemplo, la clase XmlReader con respecto a la clase
XmlDocument. XmlReader funciona al estilo del DataReader, mientras que la
clase XmlDocument carga todo un documento XML en memoria. La primera es más
rápida y consumen menos recursos, pero tiene menos 'funcionalidad' que si
estará incluida en el XmlDocument, que consume más memoria por tener que
cargar todo el documento.

Un saludo,

Alejandro Mezcua
MVP .NET
Zaltor Soluciones Informáticas

"Mario Barro" wrote in message
news:
Gracias a todos;

El tema del dataReader tiene su funcionalidad muy buena pero también tiene
sus limitaciones, como en este caso expuesto.

He intentado con un procedimiento almacenado recoger el valor de las filas
afectadas por la consulta, es decir, que el dataReader sea creado a partir
de un command que ataca a un procedimiento de SQL-Server con un parámetro


de
salida, donde devuelve el número de filas afectadas por la consulta
(@@ROWCOUNT)

Pero la implementación del dataReader (su avance a través de los datos)


hace
que realice más de una petición de datos, con lo cual el número de


registros
afectados por la consulta (parámetro devuelto) no está disponible hasta


que
se cierra el datarReader.

Todo esto viene, por la necesidad de dimensionar un array con el número de
elementos devueltos por la consulta, antes de recorrerla, ya que si no
pierde todo su encanto.


Respuesta Responder a este mensaje
#7 Mario Barro
10/02/2004 - 15:07 | Informe spam
Gracias por tu aclaración;

Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida