Как обрабатывать исключения ExcuteScalar для значений Null? - PullRequest
1 голос
/ 09 апреля 2019

У меня проблема, это работает, если возвращаемое значение не равно нулю, однако я получаю 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();

1 Ответ

1 голос
/ 09 апреля 2019

Проблема в этой строке:

HWplt.Text = cmd1001.ExecuteScalar().ToString();

Вместо этого используйте

HWplt.Text = Convert.ToString(cmd1001.ExecuteScalar());

Это позволяет избежать исключения с нулевой ссылкой, поскольку Convert.ToString() является статическим методом.ToString(), напротив, является методом экземпляра, который зависит от реализации для конкретного объекта, который вы преобразуете в строку.

Редактировать: я должен добавить, что в большинстве случаев он считается хорошей практикой-применение Convert.ToString() вместо Object.ToString().

...