作为例外指出的那样,你必须为了使用decimal
类型作为参数明确设置SqlParameter.Precision
和SqlParameter.Scale
性能。
假设您的SQL字段的类型为decimal(18,8)
。要做到这一点内嵌的方式是使用大括号初始化为您的SqlParameter,同时将它添加到SqlParameterCollection
,如下所示:
cmd.Parameters.Add(new SqlParameter("@ordGty", SqlDbType.Decimal) {
Precision = 18, Scale = 8 });
你也可以做
cmd.Parameters.Add(new SqlParameter("@ordGty", SqlDbType.Decimal) {
Precision = 18, Scale = 8}).Value = 0.4m; // or whatever
添加值,如果你需要一个。你甚至可以做
cmd.Parameters.Add(new SqlParameter("@ordGty", SqlDbType.Decimal) {
Precision = 18, Scale = 8, Value = 0.4m /* or whatever */});
如果你愿意。 Brace initialization真的很强大。注意:我意识到这是一个老问题,但我认为这种形式比创建对象时更具可读性,同时将其添加到列表中,然后设置比例和精度。为了后人! (因为这是一个高的谷歌搜索结果)
你有问题要问?你对这个错误有什么不清楚的地方? – Oded 2012-01-06 13:06:39
嗨Oded,是的我得到了上述例外设置精度和规模。 – 2012-01-06 13:09:23
而且?什么是不明确的错误?您需要设置精度和比例。 – Oded 2012-01-06 13:10:48