передача нулевого значения в текстовое поле с десятичным числом - PullRequest
0 голосов
/ 12 октября 2018

передача нулевого значения в текстовое поле с десятичным числом

cmd.Parameters.Add(new SqlParameter("@P", SqlDbType.Decimal)).Value = decimal.Parse(TB_P.Text == null ? DBNull.Value : (object)TB_P.Text);//decimal.Parse(TB_P.Text);//

Наилучший перегруженный метод для 'decimal.Parse (string)' имеет недопустимые аргументы

1 Ответ

0 голосов
/ 12 октября 2018

Вы можете написать свой тест следующим образом

decimal.TryParse(TB_P.Text, out decimal result);
cmd.Parameters.Add("@P", SqlDbType.Decimal).Value = (result == 0 ? (object)DBNull.Value : result);

, но если 0 является допустимым значением для записи, вам нужно быть более подробным

object value;
if (!decimal.TryParse(TB_P.Text, out decimal result))
    value = DBNull.Value;
else
    value = result;

cmd.Parameters.Add("@P", SqlDbType.Decimal).Value = value;

Также обратите внимание, что TextBoxСвойство .Text никогда не бывает пустым.Это может быть пустая строка, но не нулевое значение, которое легко показать с помощью

TB_P.Text = null;
Console.WriteLine(TB_P.Text == null ? "Is null" : "Is not null");
...