Mi pregunta es cómo obtener el número de filas devuelto por una consulta utilizando SqlDataReader
en C#. He visto algunas respuestas al respecto, pero ninguna estaba claramente definida, excepto una que indica que se debe hacer un ciclo while con el método Read()
e incrementar un contador.Cómo obtener el número de filas con SqlDataReader en C#
Mi problema es que estoy tratando de llenar una matriz multidimensional con la primera fila siendo los nombres de los encabezados de las columnas y cada fila después de los datos de las filas.
Sé que puedo simplemente volcar las cosas en un control de lista y no preocuparme por ello, pero para mi propia edificación personal y también me gustaría extraer los datos dentro y fuera de la matriz como lo elija y lo muestre en diferentes formatos.
así que creo que no puedo hacer el Read()
y luego incrementar manera ++ porque eso significa que tendría que abrir Read()
Read()
y luego abierta de nuevo para obtener la cantidad de filas y luego datos de columna.
Sólo un pequeño ejemplo de lo que estoy hablando:
int counter = 0;
while (sqlRead.Read())
{
//get rows
counter++
}
y luego un bucle para ejecutar a través de las columnas y el pop
something.Read();
int dbFields = sqlRead.FieldCount;
for (int i = 0; i < dbFields; i++)
{
// do stuff to array
}
Henk tiene razón: no hay ningún miembro del DataReader que le permita obtener el número de filas porque es un lector de solo avance. Es mejor primero obtener el recuento y luego ejecutar la consulta, tal vez en una consulta de resultados múltiples para que solo llegue a la base de datos una vez. – flipdoubt
El problema con el recuento especializado es que existe la posibilidad de que el recuento sea diferente del número de filas devueltas porque alguien más ha cambiado los datos de una manera que conduce a la cantidad de filas que se devuelven. –
Pete, tienes razón, requeriría un IsolationLevel caro. –