5

我无法将十进制值插入到 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;

插入数据库的值被去除小数位。更具体地说,如果 fileSizeInMBRounded 为 11.73,则插入数据库的值为 11,00

请帮我

感谢期待

4

4 回答 4

9

我怀疑你的十进制字段在 SQL 中设置错误。你想要的是一个decimal(18,2)允许 2 位小数的字段。我怀疑您将该字段声明为decimal(18,0)(默认),它不允许任何小数位。

如果您可以使用 SQL Server Profiler 来验证进入数据库的 INSERT 的内容,那么您将更容易确定此类问题是由于您的代码还是 SQL Server 上的某些问题。

于 2011-05-02T14:40:58.227 回答
4

尝试将SqlParameter.Scale设置为 2。

SqlParameter parameter = new SqlParameter("@fileSize", SqlDbType.Decimal);
parameter.Scale = 2;
parameter.Value = fileSizeInMBRounded;
cmd.Parameters.Add(parameter);

还要Precision按照 Bruno 的建议查看属性(默认为 0)。

于 2011-05-02T14:31:15.427 回答
1

您应该设置比例和精度。

我认为这就是问题所在。

于 2011-05-02T14:32:06.113 回答
1

你的参数看起来不错。我会检查数据库列数据类型

于 2011-05-02T14:43:58.803 回答