SqlCommand 不接受参数参数时出错

Error With SqlCommand not accepting Parameter Arguments

我正在尝试使用以下代码在我的数据库中执行一个存储过程:

using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["myCNN"].ConnectionString))
{
    using (var cmd = new SqlCommand("dbo.myStoredProcedure", connection))
    {
        cmd.Parameters.Add("@PatientId", SqlDbType.VarChar, 40).Value = number;
        cmd.Parameters.Add("@NickName", SqlDbType.VarChar, 20).Value = "stlukeshs";                            
        var reader = cmd.ExecuteReader();
        while(reader.Read())
        {
            //Do Stuff..
        }
        //closer reader
        reader.Close();
    }
}

但是,在执行时我收到一条错误消息:

An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code

Additional information: Procedure or function 'myStoredProcedure' expects parameter '@PatientId', which was not supplied.

很明显,您看到我正在添加参数,我的 number 值为 100,而不是 null。所以我有点困惑为什么它没有得到我的参数参数。

您需要指定CommandType,默认为Text。您必须将 StoredProcedure 指定为 CommandType

cmd.CommandType = CommandType.StoredProcedure;

所以,你的完整代码应该是:

using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["myCNN"].ConnectionString))
{
    using (var cmd = new SqlCommand("dbo.myStoredProcedure", connection))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@PatientId", SqlDbType.VarChar, 40).Value = number;
        cmd.Parameters.Add("@NickName", SqlDbType.VarChar, 20).Value = "stlukeshs";                            
        var reader = cmd.ExecuteReader();
        while(reader.Read())
        {
            //Do Stuff..
        }
        //closer reader
        reader.Close();
    }
}