Tôi đang cố gắng tìm ra cách kiểm tra xem SqlDataReader
của tôi có rỗng hay không có hàng (nghĩa là đặt chỗ không tồn tại) và sau đó hiển thị hộp thư. Đối với một số lý do khi tôi gỡ lỗi một khi nó chạm vào mã While dr.Read())
nó bước ra nếu nó không có kết quả trả về.Làm thế nào để kiểm tra xem SQLDataReader không có hàng
Tôi đã thử đặt mã này trong một vài địa điểm khác nhau nhưng không ai dường như bắn ra các bảng thông báo nếu không có hồ sơ được trả về
if (dr.GetValue(0) == DBNull.Value || !dr.HasRows)
{
MessageBox.Show("Reservation Number Does Not Exist","Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
(read records)
}
Mã của tôi ...
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! ");
}
Giữ vòng lặp của bạn theo cách của nó nhưng bọc một tuyên bố nếu xung quanh nó để kiểm tra xem (dr.HasRows) {} – MethodMan