代码返回错误的变量

时间:2014-05-25 06:56:31

标签: c# sql-server

所以这应该返回@rez,而是返回@idCEL。为什么呢?

int rez=0;
var cmd = new SqlCommand(@"exec spUpdateCELPowerMeasurementForGeoData1
                         @idCEL, @rez OUT", conn);
cmd.Parameters.AddWithValue("@idCEL",idCEL).Direction=System.Data.ParameterDirection.Input;
cmd.Parameters.AddWithValue("@rez", rez).Direction=System.Data.ParameterDirection.Output;
cmd.CommandTimeout=700;
cmd.ExecuteNonQuery();

rez = int.Parse(cmd.Parameters[@rez].Value.ToString());

return rez;

1 个答案:

答案 0 :(得分:9)

@rez周围使用引号 - 它应该是一个字符串:

rez = int.Parse(cmd.Parameters["@rez"].Value.ToString());

@rez is actually the rez local variable,而不是" rez" sql参数。它始终为零,因此您将获得第一个参数。

我也避免使用ToStringParse。如果您的存储过程返回了一个数字,则可以执行(int)cmd.Parameters["@rez"].ValueConvert.ToInt32