如何处理 Null 值的 ExcuteScalar 异常?
How to handle ExcuteScalar exceptions on Null values?
我有一个问题,如果值 returned 不为空,此方法有效,但是当 return 为空时,我得到一个 System.NullreferenceException
。我尝试了很多东西,但似乎无法破解它。这里的任何帮助将不胜感激。
string HwPlts = "select top 1 plts from (select sum(ISNULL(Heywood_Plts, 0)) as plts, date_Uploaded, time_Uploaded, Upload_ID from InboundRawData Group by date_Uploaded, time_Uploaded, dispatch_Date, Upload_ID having dispatch_Date = @prod_Date) as p order by Upload_ID desc";
SqlCommand cmd1001 = new SqlCommand(HwPlts, connection);
cmd1001.Parameters.AddWithValue("@prod_Date", dateTimePicker1.Text);
HWplt.Text = cmd1001.ExecuteScalar().ToString();
问题出在这一行:
HWplt.Text = cmd1001.ExecuteScalar().ToString();
改为使用
HWplt.Text = Convert.ToString(cmd1001.ExecuteScalar());
这避免了空引用异常,因为Convert.ToString()
是一个静态方法。 ToString()
,相比之下,是一个实例方法,它取决于您要转换为字符串的特定对象的实现。
编辑:我应该补充一点,在大多数用例中使用 Convert.ToString()
而不是 Object.ToString()
被认为是一种好的做法。
我有一个问题,如果值 returned 不为空,此方法有效,但是当 return 为空时,我得到一个 System.NullreferenceException
。我尝试了很多东西,但似乎无法破解它。这里的任何帮助将不胜感激。
string HwPlts = "select top 1 plts from (select sum(ISNULL(Heywood_Plts, 0)) as plts, date_Uploaded, time_Uploaded, Upload_ID from InboundRawData Group by date_Uploaded, time_Uploaded, dispatch_Date, Upload_ID having dispatch_Date = @prod_Date) as p order by Upload_ID desc";
SqlCommand cmd1001 = new SqlCommand(HwPlts, connection);
cmd1001.Parameters.AddWithValue("@prod_Date", dateTimePicker1.Text);
HWplt.Text = cmd1001.ExecuteScalar().ToString();
问题出在这一行:
HWplt.Text = cmd1001.ExecuteScalar().ToString();
改为使用
HWplt.Text = Convert.ToString(cmd1001.ExecuteScalar());
这避免了空引用异常,因为Convert.ToString()
是一个静态方法。 ToString()
,相比之下,是一个实例方法,它取决于您要转换为字符串的特定对象的实现。
编辑:我应该补充一点,在大多数用例中使用 Convert.ToString()
而不是 Object.ToString()
被认为是一种好的做法。