Chcę pobrać 1. wiersz wartości pierwszej komórki z bazy danych, działa dobrze z poniżej kodu. Ale gdy nie znaleziono żadnego wyniku, rzuca wyjątek.Wartość powrotna za pomocą wyniku String = Błąd Command.ExecuteScalar() występuje, gdy wynik zwraca null
Sposób postępowania z DBNull
.
Czy powinienem zmienić moje zapytanie? które zwracają pewną wartość, jeśli nie mają żadnego rekordu?
System.NullReferenceException: Odniesienie do obiektu nie jest ustawione na wystąpienie obiektu.
Kod:
public string absentDayNo(DateTime sdate, DateTime edate, string idemp)
{
string result="0";
string myQuery="select COUNT(idemp_atd) absentDayNo from td_atd where ";
myQuery +=" absentdate_atd between '"+sdate+"' and '"+edate+" ";
myQuery +=" and idemp_atd='"+idemp+"' group by idemp_atd ";
SqlCommand cmd = new SqlCommand(myQuery, conn);
conn.Open();
//System.NullReferenceException occurs when their is no data/result
string getValue = cmd.ExecuteScalar().ToString();
if (getValue != null)
{
result = getValue.ToString();
}
conn.Close();
return result;
}
Gdzie zgłasza wyjątek? –
Wyjątek wyrzuca 'ciąg getValue = cmd.ExecuteScalar(). ToString();' średni błąd występuje, gdy ich nie ma wyniku –
btw, to jest ** naprawdę ** zły sposób na zbudowanie zapytania; wyraźny i rażący otwór wtryskowy sql; istnieje również problem internacjonalizacji i niektóre niepotrzebne ciągi pośrednie. Mam nadzieję, że to nie jest tak, jak zrobić sql normalnie ... –