将空值传递给具有十进制数字的文本框
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)'的最佳重载方法匹配有一些 无效的参数
答案 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");