C# 双精度、浮点或十进制的SqlParameter
我有这样一个C# 双精度、浮点或十进制的SqlParameter,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我有这样一个SqlParameter: SqlParameter parameter3 = new SqlParameter("@StageDaysBehind", SqlDbType.Decimal); parameter3.Value = schedVarSaveClass.StageDaysBehind; parameter3.Direction = ParameterDirection.Input; command.Parameters.Add(parameter3); schedVa
SqlParameter
:
SqlParameter parameter3 = new SqlParameter("@StageDaysBehind", SqlDbType.Decimal);
parameter3.Value = schedVarSaveClass.StageDaysBehind;
parameter3.Direction = ParameterDirection.Input;
command.Parameters.Add(parameter3);
schedVarSaveClass.StageDaysBehind
是一个double,其值为2.5,但它作为2插入到数据库中,如何使其作为2.5而不是2插入
我试过这个:
SqlParameter parameter3 = new SqlParameter("@StageDaysBehind", SqlDbType.Decimal);
parameter3.Value = schedVarSaveClass.StageDaysBehind;
parameter3.Precision = 2;
parameter3.Scale = 5;
parameter3.Direction = ParameterDirection.Input;
command.Parameters.Add(parameter3);
仍然不起作用。考虑改用AddWithValue,如下所示:
cmd.Parameters.AddWithValue("@FIELD1",yourValue)
它将更好地处理类型:decimal、float等。您的参数是一个
SqlDbType.decimal
,但您尚未指定精度和比例。我相信scale默认为0
,在这种情况下,小数点后没有数字。将Precision
和Scale
属性指定给列decimal(p,s)
中定义的数据类型中的值。你能把这一点作为答案吗请举个例子,我尝试设置精度和比例,但结果相同,在代码中保存2.5作为2你应该使用精度18,刻度2在没有设置精度和刻度的情况下,我很难用最小的设置重现问题<代码>声明@Temp表([Value][decimal](18,2));插入@Temp值(@StageDaysBehind);从@Temp中选择[Value]将值
属性设置为单值
、双值
、或十进制
值都有效。它选择2.5
作为decimal
。您能显示您的插入SQL和表定义吗。实际上,强烈建议不要使用AddWithValue,例如。