将空值传递给具有十进制数字的文本框

时间:2018-10-12 18:57:42

标签: c# visual-studio-2013 sql-server-2008-r2 .net-4.0

将空值传递给具有十进制数字的文本框

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 :(得分:1)

您可以通过这种方式编写测试

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属性从不为null。它可以是一个空字符串,但不能是

易于说明的空值
TB_P.Text = null;
Console.WriteLine(TB_P.Text == null ? "Is null" : "Is not null");