SqlCommand参数无法识别

时间:2011-06-30 20:00:47

标签: c# sql-server

为什么

        scIns.Parameters.Add(new SqlParameter("@v30", 0.00m));

导致“@ v30 undefined”错误,但

        decimal dZero = 0.00m;
        scIns.Parameters.Add(new SqlParameter("@v30", dZero));

工作正常吗?

2 个答案:

答案 0 :(得分:3)

SqlParamter有两个不同的重载,有两个参数,第一个是字符串,第二个是SqlDbType或object。

在第一种情况下,当传入0.00m时,它会转换为Int64,而在第二种情况下,因为传入的值是十进制类型,然后使用SqlDbType.Decimal。

查看此Link

更新:
找到了另一个stackoverflow问题,讨论了这一问题并得到了详细的答案。 :)

答案 1 :(得分:1)

如果你查看调试器,你会发现在第一种情况下,参数的DbType是Int64,而在第二种情况下它是十进制。

尝试使用其他一个SqlParameter ctor重载,您可以在其中显式指定SqlDbType。

希望有所帮助,

约翰

相关问题