Debería llamar a SqlDataReader.HasRows si estoy llamando a SqlReader.Read

Tratando de ver si es beneficioso agregar un if (dr.HasRows) antes de la function while (dr.read()) . Quiero decir, técnicamente, si no tiene filas, no va a leer, entonces ¿importaría si primero verificaras esto?

 using (SqlDataReader dr = cmd.ExecuteReader()) { if (dr.HasRows) { while (dr.Read()) { ....do stuff here } } } 

o, básicamente, va a hacer exactamente lo mismo si solo se asegura de que tenga valores para proporcionar …

 using (SqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { ....do stuff here } } 

No … No es obligatorio verificar (dr.HasRows) si el DataReader contiene alguna fila o no.

Read() devolverá False si no hay más filas para recuperar, pero Reader.HasRows es mucho más revelador en cuanto a lo que hace que Read() por lo que sería una buena práctica usar Reader.HasRows porque accidentalmente puede hacer algo que no sea Read() que puede caer en la exception.

Ten cuidado. HasRows () devuelve falso para mi consulta CTE, aunque haya filas (en realidad, 437 filas).

No es obligatorio verificar si el DataReader tiene filas (dr.HasRows). El método Read () devolverá verdadero si hay más datos para leer y falso si no hay más datos, rompiendo así el ciclo while.

Creo que esto es principalmente para procedimientos almacenados que pueden o no tener datos (uno o más sets de resultados) y es "más fácil" verificar primero en caso de que también haga otras cosas que el ciclo while (es decir, inicializar encabezado / pie de página, etc. cuando hay datos).

tratar

  string myconnection = "datasource= localhost;port=3306;username=root;password=root;"; MySqlConnection myconn = new MySqlConnection(myconnection); //MySqlDataAdapter mydata = new MySqlDataAdapter(); MySqlDataReader myreader; MySqlCommand SelectCommand = new MySqlCommand("select *from student_info.student_info where username= '" + textBox1.Text +" 'and password=' " + textBox2.Text +"';",myconn ); myconn.Open(); myreader = SelectCommand.ExecuteReader(); int count = 0; if (myreader.HasRows) //returing false but i have 4 row { while (myreader.Read()) //returing false { MessageBox.Show("in button3"); count = count + 1; } } 

tu opinión requerida