2016-12-31 98 views
-5

我创建表单需要从存储过程的访问,当我跑我得到这个错误的应用程序:过程或函数“spAddEmployee”需要参数“@name”,但未提供

Procedure or function 'spAddEmployee' expects parameter '@name', which was not supplied

C#代码:

string connectionstring = ConfigurationManager.ConnectionStrings["AddEmployee"].ConnectionString; 

using (SqlConnection con = new SqlConnection(connectionstring)) 
{ 
    SqlCommand cmd = new SqlCommand("dbo.spAddEmployee", con); 
    cmd.CommandType = CommandType.StoredProcedure; 

    con.Open(); 

    SqlParameter paramname = new SqlParameter(); 
    paramname.ParameterName = "@Name"; 
    paramname.Value = employee.Name; 
    cmd.Parameters.Add(paramname); 

    SqlParameter paramgender = new SqlParameter(); 
    paramname.ParameterName = "@gender"; 
    paramname.Value = employee.Gender; 
    cmd.Parameters.Add(paramgender); 

    SqlParameter paramcity = new SqlParameter(); 
    paramname.ParameterName = "@city"; 
    paramname.Value = employee.City; 
    cmd.Parameters.Add(paramcity); 

    SqlParameter paramdateofbirth = new SqlParameter(); 
    paramdateofbirth.ParameterName = "@dateofbirth"; 
    paramname.Value = employee.Dateofbirth; 
    cmd.Parameters.Add(paramdateofbirth); 

    cmd.ExecuteNonQuery(); 

    con.Close(); 
} 

my procedure code is given in snapshot

请帮我

回答

2

你一个重新使用您用于名称为性别和城市的相同SqlParameter对象(paramname)。所以它基本上是用第一个Gender和City来覆盖这个值。所以我认为你的City值是null,因此它会抛出一个错误。

这应该工作

using (var con = new SqlConnection(connectionstring)) 
{ 
    var cmd = new SqlCommand("dbo.spAddEmployee", con) { 
           CommandType = CommandType.StoredProcedure}; 
    con.Open(); 
    var paramname = new SqlParameter 
    { 
     ParameterName = "@Name", 
     Value = employee.Name 
    }; 
    cmd.Parameters.Add(paramname); 

    var paramgender = new SqlParameter 
    { 
     ParameterName = "@gender", 
     Value = employee.Gender 
    }; 
    cmd.Parameters.Add(paramgender); 

    var paramcity = new SqlParameter 
    { 
     ParameterName = "@city", 
     Value = employee.City 
    }; 
    cmd.Parameters.Add(paramcity); 

    var paramdateofbirth = new SqlParameter 
    { 
     ParameterName = "@dateofbirth", 
     Value = employee.Dateofbirth 
    }; 
    cmd.Parameters.Add(paramdateofbirth); 
    cmd.ExecuteNonQuery(); 

} 
+1

是感谢您的帮助,现在我可以访问我的存储过程 –

相关问题