Estoy tratando de averiguar cómo comprobar si mi SqlDataReader
es nulo o no tiene filas (lo que significa que la reserva no existe) y luego mostrar un cuadro de mensaje. Por alguna razón, cuando depuro una vez que llega al código While dr.Read())
, sale si no tiene un resultado de retorno.Cómo comprobar si SQLDataReader no tiene filas
He intentado poner este código en unos pocos lugares diferentes, pero ninguno parece disparar el cuadro de mensaje si no hay registros se devuelven
if (dr.GetValue(0) == DBNull.Value || !dr.HasRows)
{
MessageBox.Show("Reservation Number Does Not Exist","Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
(read records)
}
Mi código ...
try
{
using (SqlConnection con = new SqlConnection(connectionString))
{
using (SqlCommand cmd = con.CreateCommand())
{
con.Open();
cmd.CommandText = "usp_StoredProcedureName";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@regnum", regnumber);
using (SqlDataReader dr = cmd.ExecuteReader())
{
//Loop through all the rows, retrieving the columns you need.
while (dr.Read())
{
lblConf.Text = dr.GetValue(0).ToString();
lblName.Text = dr.GetValue(1).ToString() + "," + dr.GetValue(2);
lblCompany.Text = dr.GetValue(3).ToString();
lblStatus.Text = dr.GetValue(4).ToString();
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show("Can not open connection! ");
}
Mantén el ciclo como está, pero ajusta una declaración If para ver si (dr.HasRows) {} – MethodMan