データベースから1行目の1番目のセルの値をフェッチしたい場合、以下のコードでうまく動作します。しかし、結果が見つからない場合、例外がスローされます。文字列を使用した戻り値result =結果がnullを返すとCommand.ExecuteScalar()エラーが発生する
DBNull
で処理する方法。
クエリを変更する必要がありますか?彼らはレコードがない場合、いくつかの値を返しますか?
System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。
コード:
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;
}
どこに例外がスローされますか? –
例外は 'string getValue = cmd.ExecuteScalar()。ToString();'というエラーが発生した場合、結果は –
btwであり、**本当に**クエリをビルドするには悪い方法です。クリアと露骨なSQL注入穴;国際化の問題と不要な中間文字列もあります。私はあなたがsqlを通常どのようにしているのではないかと願っています。 –