C# Can';我不明白!此SqlParameterCollection不包含具有ParameterName的SqlParameter。存储过程参数

C# Can';我不明白!此SqlParameterCollection不包含具有ParameterName的SqlParameter。存储过程参数,c#,asp.net,stored-procedures,C#,Asp.net,Stored Procedures,我知道这个问题已经被问过很多次了,我也读过很多答案,但我不知道是什么错了。已经好几个小时了。任何帮助都将不胜感激。我只是试图调用ASP页面中的存储过程,但无法正确添加参数,导致异常,即该参数不在集合中 我对我的程序进行了如下修改,以使其简单化并隔离问题 ALTER PROCEDURE [dbo].[up_validateUserWithClinicCount] @HTID INT = 0, @ValidUserID INT OUTPUT, @MultiClinicF

我知道这个问题已经被问过很多次了,我也读过很多答案,但我不知道是什么错了。已经好几个小时了。任何帮助都将不胜感激。我只是试图调用ASP页面中的存储过程,但无法正确添加参数,导致异常,即该参数不在集合中

我对我的程序进行了如下修改,以使其简单化并隔离问题

 ALTER PROCEDURE [dbo].[up_validateUserWithClinicCount]     
@HTID       INT = 0,
@ValidUserID    INT OUTPUT,
@MultiClinicFlag    INT OUTPUT
AS
DECLARE @vClinicCount   INT = null
DECLARE @vUserValid     INT = null
BEGIN

SET @ValidUserID = 2
SET @MultiClinicFlag = 1
END;
还有C#代码


如果您能看到我缺少的内容,请多谢。

您已经有了参数的对象引用,无需从参数集合中获取它。此外,sql INT是32位的

MultiClinics = (int)pMultiClinics.Value;
要从参数集合中检索,请使用您为其提供的ParameterName:

MultiClinics = (int)cmd.Parameters["@MultiClinicFlag"].Value;

在execute之后使用@pMultiClinics而不是cmd.Parameters[“pMultiClinics”].Value的id。该参数未被称为
“pMultiClinics”
。它叫
“@MultiClinicFlag”
哇,对不起。我已经很累了,对这一点还很陌生,但还是犯了一个相当愚蠢的错误。谢谢你的帮助。就是这样。它是c#中的int 32,数据库中的int。现在没问题
MultiClinics = (int)cmd.Parameters["@MultiClinicFlag"].Value;