C# 过程或函数spAddStudent指定的参数太多

C# 过程或函数spAddStudent指定的参数太多,c#,C#,我正在将visual studio 2010 ultimate与SQL Server 2012配合使用,当我第一次单击“保存”按钮时,它工作正常,但更改值后,它会显示上述异常。我没能解决这个问题。请帮帮我 谢谢 阿卜杜勒·穆塔利布 public int AddStudent(StudentManager studentManager) { try { sqlCom.Connection = sqlCon;

我正在将visual studio 2010 ultimate与SQL Server 2012配合使用,当我第一次单击“保存”按钮时,它工作正常,但更改值后,它会显示上述异常。我没能解决这个问题。请帮帮我

谢谢

阿卜杜勒·穆塔利布

    public int AddStudent(StudentManager studentManager)
    {
        try
        {
            sqlCom.Connection = sqlCon;
            sqlCon.Open();
            sqlCom.CommandType = CommandType.StoredProcedure;
            sqlCom.CommandText = "spAddStudent";
            sqlCom.Parameters.AddWithValue("@Name", studentManager.Name);
            sqlCom.Parameters.AddWithValue("@Father", tudentManager.Father);
            sqlCom.Parameters.AddWithValue("@Gender", tudentManager.Gender);
            sqlCom.Parameters.AddWithValue("@Religion", studentManager.Religion);
            sqlCom.Parameters.AddWithValue("@MotherTongue", studentManager.Tongue);
            sqlCom.Parameters.AddWithValue("@BirthDate", studentManager.BrithDate);
            sqlCom.Parameters.AddWithValue("@Class", studentManager.StudentClass);
            sqlCom.Parameters.AddWithValue("@Section", studentManager.Section);
            sqlCom.Parameters.AddWithValue("@Shift", studentManager.Shift);
            sqlCom.Parameters.AddWithValue("@RollNo", studentManager.RollNo);
            sqlCom.Parameters.AddWithValue("@Fee", studentManager.Fee);
            sqlCom.Parameters.AddWithValue("@FatherOccupation", studentManager.FatherOccupation);
            sqlCom.Parameters.AddWithValue("@FatherCNIC", studentManager.Cnic);
            sqlCom.Parameters.AddWithValue("@AddWithValueressRes", studentManager.AddressRes);
            sqlCom.Parameters.AddWithValue("@PhoneRes", studentManager.PhoneRes);
            sqlCom.Parameters.AddWithValue("@PhoneOff", studentManager.PhoneOff);
            sqlCom.Parameters.AddWithValue("@Mobile", studentManager.Mobile);
            sqlCom.Parameters.AddWithValue("@PostalCode", studentManager.PostalCode);
            sqlCom.Parameters.AddWithValue("@Email", studentManager.Email);
            sqlCom.Parameters.AddWithValue("@OtherInfo", studentManager.OtherInfo);
            int i = sqlCom.ExecuteNonQuery();
            sqlCon.Close();
            return i;                
        }
        catch (Exception ex)
        {
            throw ex;
        }           
    }       
}      

}

您可以通过在AddStudent的开头调用sqlCom.Parameters.Clear()来解决这个问题,以防止在调用该方法时累积冗余参数。
此外,使用AddWithValue很容易,也很常见,但可能会有问题

您可以通过在AddStudent的开头调用sqlCom.Parameters.Clear()来解决这个问题,以防止在调用该方法时累积冗余参数。
此外,使用AddWithValue很容易,也很常见,但可能会有问题

我没有看到创建SqlCommand的过程。但是我建议“使用(var sqlCom=new SqlCommand(sqlCon))”或者在这个函数的末尾调用sqlCom.Dispose()。但我建议“使用(var sqlCom=new SqlCommand(sqlCon))”或在此函数末尾调用sqlCom.Dispose()。