我无法在Sql Server表中插入十进制值。
我想做的是通过这几行代码不言自明:
long fileSizeInBytes = ComponentUploadControl.FileContent.Length;
Decimal fileSizeInMB = Convert.ToDecimal(fileSizeInBytes) / (1024.0m * 1024.0m);
Decimal fileSizeInMBRounded = Math.Round(fileSizeInMB, 2);
cmd.Parameters.Add("@fileSize", SqlDbType.Decimal).Value = fileSizeInMBRounded;
插入到数据库中的值会被去掉小数点。更具体地说,如果filesizeinmbround为11.73,则插入到数据库中的值为11,00
请帮帮我
感谢期待
我怀疑您的十进制字段在SQL中设置错误。你想要的是一个decimal(18,2)
字段,它允许小数点后2位。我怀疑您将字段声明为decimal(18,0)
(默认值),它不允许任何小数点。
如果您可以使用SQL Server Profiler来验证INSERT到您的DB的内容,那么您将更容易确定这样的问题是由于您的代码还是SQL服务器上的某些东西。
尝试设置SqlParameter。缩放到2
SqlParameter parameter = new SqlParameter("@fileSize", SqlDbType.Decimal);
parameter.Scale = 2;
parameter.Value = fileSizeInMBRounded;
cmd.Parameters.Add(parameter);
还可以查看Bruno建议的Precision
属性(默认为0)。
你应该设置比例和精度。
我想这就是问题所在。
您的参数看起来很好。检查数据库列数据类型