Próbuję dowiedzieć się, jak sprawdzić, czy mój SqlDataReader
jest pusty lub nie ma wierszy (co oznacza, że rezerwacja nie istnieje), a następnie wyświetlić pole wiadomości. Z jakiegoś powodu, gdy debuguję, gdy trafi on kod While dr.Read())
, wykracza on, jeśli nie ma wyniku zwrotu.Jak sprawdzić, czy SQLDataReader nie ma wierszy
Próbowałem wprowadzenie tego kodu w kilku różnych miejscach, ale żaden nie wydaje się wystrzelić MessageBox jeśli żadne rekordy są zwracane
if (dr.GetValue(0) == DBNull.Value || !dr.HasRows)
{
MessageBox.Show("Reservation Number Does Not Exist","Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
(read records)
}
mój kod ...
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! ");
}
Trzymaj pętlę tak, jak jest, ale zawiń instrukcję If wokół niej, aby sprawdzić, czy (dr.HasRows) {} – MethodMan