我正在尝试通过调用存储过程将数据插入SQL Server数据库中,但出现错误
过程或函数“插入”期望参数“ @Emp_no”,但未提供
我的存储过程称为Insertion。我已经对其进行了彻底检查,并且没有丢失任何参数,也已经通过使用标签对其进行了检查。标签显示该值,但我不知道为什么会收到错误消息。
Insertion
我的代码是
try { SqlCommand cmd = new SqlCommand(); cmd.Parameters.Clear(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "Insertion"; cmd.Connection = con; if (rdb_Male.Checked) { int @Emp_no = Convert.ToInt32(txtbx_Empno.Text); string @Emp_name = txtbx_Emp_Name.Text; double @phone = Convert.ToDouble(txtbx_Phone.Text); string @Email = txtbx_Email.Text; string @Password = txtbx_Pwd.Text; string @Gender = rdb_Male.Text; DateTime @Dob = Convert.ToDateTime(dob); string @Address = txtbx_Address.Text; string @Designation = txtbx_Designation.Text; string @Qualification = txtbx_Qual.Text; double @Experience = Convert.ToDouble(txtbx_Exp.Text); double @Salary = Convert.ToDouble(txtbx_Sal.Text); DateTime @Doj = Convert.ToDateTime(doj); } else if (rdb_Female.Checked) { int @Emp_no = Convert.ToInt32(txtbx_Empno.Text); string @Emp_name = txtbx_Emp_Name.Text; double @phone = Convert.ToDouble(txtbx_Phone.Text); string @Email = txtbx_Email.Text; string @Password = txtbx_Pwd.Text; string @Gender = rdb_Female.Text; DateTime @Dob = Convert.ToDateTime(dob); string @Address = txtbx_Address.Text; string @Designation = txtbx_Designation.Text; string @Qualification = txtbx_Qual.Text; double @Experience = Convert.ToDouble(txtbx_Exp.Text); double @Salary = Convert.ToDouble(txtbx_Sal.Text); DateTime @Doj = Convert.ToDateTime(doj); } if (con.State==ConnectionState.Closed) con.Open(); LABEL.Text = txtbx_Empno.Text; cmd.ExecuteNonQuery(); lbl_Errormsg.Visible = true; lbl_Errormsg.Text = "Record Inserted Successfully"; con.Close(); }
并且存储过程是
ALTER PROCEDURE dbo.Insertion ( @Emp_no int, @Emp_name varchar(30), @phone numeric(10,0), @Email varchar(30), @Password varchar(10), @Gender varchar(6), @Dob date, @Address varchar(100), @Designation varchar(20), @Qualification varchar(20), @Experience numeric(4,2), @Salary numeric(10,2), @Doj date ) AS Begin Insert into Register (Emp_no, Emp_name, phone, Email, Password, Gender, Dob, Address, Designation, Qualification, Experience, Salary, Doj) Values(@Emp_no, @Emp_name, @phone, @Email, @Password, @Gender, @Dob, @Address, @Designation, @Qualification, @Experience, @Salary, @Doj) End
请帮我。提前致谢。
您需要使用SqlCommand.Parameters.AddWithValue:
SqlCommand.Parameters.AddWithValue
cmd.Parameters.AddWithValue("@ParameterName", value);
或SqlCommand.Parameters.Add其他数据类型:
SqlCommand.Parameters.Add
cmd.Parameters.Add("@ParameterName", SqlDbType.Int, 5); cmd.Parameters["@ParameterName"].Value = value;
SqlCommand.Parameters.AddWithValue替换Add使用字符串和对象参数的含糊不清的重载。有关更多信息,请参见MSDN。
Add