executereader - sqldatareader c# ejemplos
DeberÃa llamar a SqlDataReader.HasRows si estoy llamando a SqlReader.Read (5)
Creo que esto se debe principalmente a procedimientos almacenados que pueden o no tener datos (uno o más conjuntos de resultados) y es "más fácil" verificar primero en caso de que también haga otras cosas que no sean el bucle while (es decir, inicializar el encabezado / pie de página, etc.) cuando hay datos).
Intentando ver si es beneficioso agregar un if (dr.HasRows)
antes de la función while (dr.read())
. Quiero decir, técnicamente, si no tiene filas no va a leer, entonces ¿importaría si verificas esto primero?
using (SqlDataReader dr = cmd.ExecuteReader())
{
if (dr.HasRows)
{
while (dr.Read())
{
....do stuff here
}
}
}
o esto va a hacer esencialmente lo mismo si solo te estás asegurando de que tenga valores para proporcionar ...
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
....do stuff here
}
}
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.
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 buscar, pero Reader.HasRows
es mucho más revelador de lo que hace que Read()
por lo que sería una buena práctica usar Reader.HasRows
porque accidentalmente puedes hacer algo Aparte de Read()
que puede caer en la excepción.
Ten cuidado. HasRows () devuelve falso para mi consulta CTE, aunque hay filas (437 filas en realidad).
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 es requerida