C# 获取存储过程输出时出错

C# 获取存储过程输出时出错,c#,resharper,C#,Resharper,我试图将存储过程的输出放入函数中,但在代码中,我总是收到一个错误,告诉我没有指定输出参数。你能帮忙吗 代码在这里 public int UserAuthentication(String username, String password) { SqlConnection conn = new SqlConnection("Data Source=...\\..; Initial Catalog=CUSTOMER360;User ID=sa;password=******");

我试图将存储过程的输出放入函数中,但在代码中,我总是收到一个错误,告诉我没有指定输出参数。你能帮忙吗

代码在这里

public int UserAuthentication(String username, String password)
{
    SqlConnection conn = new SqlConnection("Data Source=...\\..; Initial Catalog=CUSTOMER360;User ID=sa;password=******");
    SqlCommand command = new SqlCommand("sp_Campaign_UserAuthentication", conn);
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add(new SqlParameter("@login_id", SqlDbType.VarChar, 50, "loginid"));
    command.Parameters.Add(new SqlParameter("@password",
        SqlDbType.VarChar,50,
        "password"));
    SqlParameter ret = command.Parameters.Add(" @result", SqlDbType.Int);
    ret.Direction = ParameterDirection.ReturnValue;
    command.Parameters["@login_id"].Value = username;
    command.Parameters["@password"].Value = password;
    conn.Open();
    command.ExecuteNonQuery();
    conn.Close();
    return (int)ret.Value;
}

我认为ReturnValue参数必须是edit命令参数列表中的第一个参数

此外,请在关闭连接之前尝试查询返回参数的值

确保存储的进程调用

RETURN (@SomeReturnValue) 

最后,尝试删除@result参数名称中的前导空格,以防万一。

我假设您发布的sa用户密码是一个伪字符串:-@结果是返回值,它在参数列表中。我还尝试在关闭连接之前获取返回值,但结果相同………您的代码将该参数作为第三个参数添加到命令的参数列表中。将其作为第一个移动。是否也可以发布存储过程的标题?只需进程名和参数列表即可。我想知道您是否混淆了输出和返回值参数类型。我发现解决方案是存储过程,所以不是返回类型ParameterDirection.Output;必须使用