2

我有一个带有DECIMAL(10,2)列的 SQL Server 表。这应该适合最多99999999.99. >= 1000但是当我通过以下 C# 代码向其中插入任何数字时,我得到了异常

将数据类型 double 转换为 float 时出错。

如果插入的值为< 1000,则可以正常工作。顺便说一下,C# 值是双精度值。

任何人都可以解释一下吗?

// ...

Database.AddInParameter(cmd, "@AssessmentScaleScore", DbType.Double,
                        (goal.StudentAssessmentInstanceID > 0
                         && goal.AssessmentScaleScore > 0)
                             ? goal.AssessmentScaleScore
                             : System.Data.SqlTypes.SqlDouble.Null);

// ...

Database.ExecuteDataSet(cmd);

再说一次,goal.AssessmentScaleScore是 a double,我将它插入到DECIMAL(10,2)数据库的列中。如果值是< 1000它工作正常,但如果它>= 1000我得到一个异常。

我不明白。

4

1 回答 1

0

对不起,我在这里跳枪问这个。

原来我是个白痴,我的存储过程中的参数将它作为 DECIMAL(5,2) 而不是 DECIMAL(10,2) 像 DB 列。

所以我溢出了过程中的参数,而不是数据库中的列。

于 2013-05-24T14:59:09.180 回答