私はこの質問が何度も聞かれたことを知っています、そして私は多くの答えを読みました、それでも私は何が悪いのか理解できません。何時間も経ちました。どんな助けでも大歓迎です。ASPページでストアドプロシージャを呼び出そうとしていますが、コレクションにないという例外が発生して、パラメーターを適切に追加できません。
procを次のように変更して、単純にし、問題を切り分けようとしました。
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;
AND C#コード
String connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["PC3PaymentConnection"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand cmd = new SqlCommand("up_validateUserWithClinicCount", connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@HTID", htId);
SqlParameter uidOut = new SqlParameter("@ValidUserID", SqlDbType.Int);
uidOut.Size = 4;
uidOut.Direction = ParameterDirection.Output;
cmd.Parameters.Add(uidOut);
SqlParameter pMultiClinics = new SqlParameter();
pMultiClinics.ParameterName = "@MultiClinicFlag";
pMultiClinics.SqlDbType = SqlDbType.Int;
pMultiClinics.Direction = ParameterDirection.Output;
cmd.Parameters.Add(pMultiClinics);
try
{
cmd.ExecuteNonQuery();
//--> Error points to the next line, and I have tried to use int.parse rather than convert also, with the same error -- parameter not in collection
MultiClinics = Convert.ToInt16(cmd.Parameters["pMultiClinics"].Value);
PC3User = Convert.ToInt16(uidOut.Value.ToString());
}
catch (SqlException sqlEx)
{
LbMsg.ForeColor = System.Drawing.Color.Red;
LbMsg.Text = sqlEx.Message;
}
}
}
私が欠けているものを見ることができればありがとう。