今天我发现一个错误。我无法理解为什么会这样。我希望有人能在这里帮助我
我的方法是
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。我也在调试时获得它的价值。我仍然得到错误。
答案 0 :(得分:1)
我不知道它是否相关,但您没有指定命令的类型。如果这是存储过程,请尝试使用:
Cmd.CommandType = CommandType.StoredProcedure;
它可能忽略了参数,理由是它不会出现在命令文本的任何地方 - 这对SQL查询没有意义,但对存储过程有意义。
如果这没有帮助,您可能需要查看SQL Server上的日志以查看它实际发送的内容。
答案 1 :(得分:1)
也许您需要将cmd.CommandType设置为StoredProcedure
。