参数未通过

时间:2009-12-11 10:08:12

标签: c# sql sql-server-2008

今天我发现一个错误。我无法理解为什么会这样。我希望有人能在这里帮助我

我的方法是

  public UserFamilyInfoBO GetUserFamilyInfo(Int64 UserId)
        {
            try
            {
                DataSet Ds = new DataSet();
                SqlCommand Cmd = new SqlCommand("GetUserFamilyInfo", Cn);
                SqlDataAdapter Da = new SqlDataAdapter();
                Da.SelectCommand = Cmd;
                Cmd.Parameters.Add("@UserId", SqlDbType.BigInt).Value = UserId;

                Cn.Open();
                Da.Fill(Ds);
                Cn.Close();
                return SetBO(Ds.Tables[0]);
            }
            catch (Exception)
            {
                return null;
            }
        }

执行Da.Fill(Ds)时会抛出错误  “过程或函数'GetUserFamilyInfo'需要参数'@UserId',这是未提供的。”

我已添加参数@UserId。我也在调试时获得它的价值。我仍然得到错误。

2 个答案:

答案 0 :(得分:1)

我不知道它是否相关,但您没有指定命令的类型。如果这是存储过程,请尝试使用:

Cmd.CommandType = CommandType.StoredProcedure;

它可能忽略了参数,理由是它不会出现在命令文本的任何地方 - 这对SQL查询没有意义,但对存储过程有意义。

如果这没有帮助,您可能需要查看SQL Server上的日志以查看它实际发送的内容。

答案 1 :(得分:1)

也许您需要将cmd.CommandType设置为StoredProcedure