よろしくお願いいたします。大変感謝しております。
「プロシージャまたは関数に指定された引数が多すぎます」という理由で、スタック オーバーフローやその他の Google の結果を 2 時間にわたって精査した後、有用なヘルプが見つかりませんでした。その理由は、指定された引数が多すぎるか、引数の名前が間違っているか、または型が間違っている可能性があるとどこでも読んだからです。これらのどれも私の場合には当てはまりません。これが私のコードです:
CREATE PROCEDURE dbo.sproc_UpdateInfo
(
@Name nvarchar(40),
@UserId varchar(50),
@Password varchar(50),
@Address nvarchar(120)
)
AS
Update tbl_Users SET Name=@Name, Password=@Password, Address=@Address WHERE UserId=@UserId
RETURN
そして、これがC#側のものです:
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandText = "sproc_UpdateInfo";
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.Add("@Name", SqlDbType.NVarChar, 40).Value = name;
sqlCmd.Parameters.Add("@UserId", SqlDbType.VarChar, 50).Value = userID;
sqlCmd.Parameters.Add("@Password", SqlDbType.VarChar, 50).Value = password;
sqlCmd.Parameters.Add("@Address", SqlDbType.NVarChar, 120).Value = address;
SqlConnection sqlConn = new SqlConnection(connectionString);
sqlCmd.Connection = sqlConn;
try
{
sqlCmd.Connection.Open();
int rowaffected = sqlCmd.ExecuteNonQuery(); //Error occurs here
return rowaffected;
}
catch (SqlException se)
{
throw new Exception("SqlException: sqlstr=" + sqlCmd.CommandText, se);
}
finally
{
sqlCmd.Dispose();
sqlConn.Close();
}