奇怪的SqlCommand.Parameter行为

时间:2012-09-28 13:38:11

标签: c# visual-studio-2010 debugging

将Visual Studio 2010 Pro SP1与.NET Framework 4 SP1一起使用。

我有这个简单的代码:

cmd.Parameters.Add("@tatCAN_FMS", SqlDbType.TinyInt).Value = gsmData.CANSquarellMode.Value ? 2 : 1;

其中cmdSqlCommandgsmData.CANSquarellMode.Value = true; gsmData.CANSquarellbool?类型。

当我使用默认的" Debug"来调试此代码时配置@tatCAN_FMS = 2的值,正确的值。

但是,如果我使用默认的" Release"再次调试相同的代码。配置,@tatCAN_FMS = NULL的值。为什么呢?

这是某些错误还是我错过了什么?

EDIT1:

默认情况下"发布"配置,如果我手动设置

cmd.Parameters["@tatCAN_FMS2"] = gsmData.CANSquarellMode.Value ? 2 : 1; 

使用立即窗口将参数值设置为期望值(2)。

1 个答案:

答案 0 :(得分:1)

使用包含参数值的Parameters.AddWithValue(字符串名称,对象值)的重载,并将你的gsmData.CANSquarellMode.Value?那里2:1。

cmd.Parameters.AddWithValue("@tatCAN_FMS", gsmData.CANSqaurellMode.Value ? 2 : 1);

MS SqlParameterCollection.AddWithValue