Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理空值上的ExcuteScalar异常?_C#_Executescalar - Fatal编程技术网

C# 如何处理空值上的ExcuteScalar异常?

C# 如何处理空值上的ExcuteScalar异常?,c#,executescalar,C#,Executescalar,我有一个问题,如果返回的值不为null,这会起作用,但是当返回值为null时,我会得到一个System.NullreferenceException。我试过很多东西,但似乎都没能成功。这里的任何帮助都将不胜感激 string HwPlts = "select top 1 plts from (select sum(ISNULL(Heywood_Plts, 0)) as plts, date_Uploaded, time_Uploaded, Upload_ID from InboundRawDat

我有一个问题,如果返回的值不为null,这会起作用,但是当返回值为null时,我会得到一个
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()
是一个静态方法<相反,code>ToString()是一种实例方法,它取决于要转换为字符串的特定对象的实现


编辑:我应该补充一点,在大多数用例中,使用
Convert.ToString()
而不是
Object.ToString()

…cmd1001.ExecuteScalar()?.ToString()被认为是一种好的做法
如果
cmd1001.ExecuteScalar()
返回null,则您试图对null调用
ToString()
。这就是导致异常的原因
cmd1001.ExecuteScalar()?.ToString()
意味着如果第一部分返回null,不要调用
ToString()
——只返回null。但是如果结果不是null,则返回
ToString()
。很好!就这样。谢谢