update over ejemplos bigger avg sql-server select ado.net

sql server - over - select*solo devuelve un valor



sql server min over partition (9)

Quiero seleccionar múltiples (todos) valores de la tabla Cuenta.

string query = "SELECT * FROM Account"; SqlConnection connection = new SqlConnection(connectionString); SqlCommand command = new SqlCommand(query, connection); SqlDataReader reader; connection.Open(); reader = command.ExecuteReader(); reader.Read(); label1.Text = reader["PasswordHash"].ToString(); connection.Close();

¿Por qué esto siempre devuelve solo la primera fila? En realidad, devuelve una fila, porque si configuro where cláususe algo como where id = 2 and id = 3 , todavía devuelve solo un valor. La tabla tiene más de un valor que he marcado en Management Studio, la consulta se ejecuta como deberían.

Gracias por adelantado.



Necesitas un ciclo while;

while(reader.Read()) { Console.WriteLine("{0}", reader[0]); }


Usar where id = 2 and id = 3 devolvería resultados cero ya que id = 2 e id = 3 son mutuamente excluyentes. where id = 2 or id = 3 podría funcionar.

while (reader.Read()) { /*Do stuff with current row*/ }

podría funcionar para iterar a través de los resultados


Como no está repitiendo los resultados de la consulta, solo se muestra un resultado.

string query = "SELECT * FROM Account"; SqlConnection connection = new SqlConnection(connectionString); SqlCommand command = new SqlCommand(query, connection); SqlDataReader reader; connection.Open(); reader = command.ExecuteReader(); While(reader.Read()) { label1.Text += " " +reader["PasswordHash"].ToString(); } connection.Close();

El código anterior recorre los resultados de la consulta y le proporcionará lo que desea en una cadena concatenada asignada a label1.text . También puede ver los resultados insertando Console.WriteLine(reader["PasswordHash"].ToString()); en el bucle while


Deberías hacer

while (reader.Read()) // process information

Necesita iterar toda la información que recuperó.

Nota: Utilice instrucciones de uso en su SqlConnection, SqlCommand y SqlDataReader para asegurarse de que los objetos se eliminen correctamente.


El reader.Read() de reader.Read() obtendrá la siguiente fila, por lo que puede usar while(reader.Read()) para iterar sobre las filas.


El lector solo avanza un registro a la vez. Tendría que iterar a través del conjunto de resultados en un bucle:

while (reader.Read()) { // do something with the current row by accessing reader[] } reader.Close();

Hay mejores formas de estructurar el código, pero esto ilustra el punto que faltaba y requiere los menores cambios.


Mirando tu código, mi recomendación es usar algún otro objeto para agregar el código. El texto de una etiqueta no es una elección apropiada.

Intente utilizar un bucle foreach en una lista para recuperar todos los datos que se han devuelto.


Necesita bucle y lector de datos es la mejor manera para su código, muestra, algo como esto:

SqlDataReader myReader = myCommand.ExecuteReader(); // Always call Read before accessing data. while (myReader.Read()) { Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1)); } // always call Close when done reading. myReader.Close();