我正在尝试使用c#在数据库中插入数据,但我收到错误 这是我的代码
string @admission_no = txtAddmissionNo.Text;
string @student_name = txtStudentName.Text;
string @father_name = txtSDof.Text;
string @receipt_no=txtReceiptNo.Text;
string @acedemic_year = academic_year.Text;
string @selectdate = dtpSD.Text;
string @Class = txtClass.Text;
string @section = txtSection.Text;
string @roll_no = txtRollNo.Text;
string query = "INSERT INTO details( Admission_no,First_Name,Father_name,recepit_no,selectdate,acedemic_year,class1,section,roll_no)values( @admission_no , @student_name,@father_name,@receipt_no,@selectdate,@acedemic_year,@Class,@section ,@roll_no)";
SqlCommand cmd = new SqlCommand(query, conn);
try
{
cmd.ExecuteNonQuery();
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
它给出错误你必须声明@admission _no
答案 0 :(得分:5)
您尚未向SqlCommand
添加任何参数。
cmd.Parameters.Add(new SqlParameter("@admission _no", SqlDbType.VarChar)).Value
= @admission_no;
...
您需要对插入查询字符串中使用@
定义的每个参数执行此操作。
您可能会因使用C#
符号声明@
变量而引起混淆,该符号引用变量并允许您使用与C#关键字同名的变量名称(例如MyEventType @event
)。这通常不是一个好主意,因为它使代码更难阅读IMO。
正如@SonerGönül在评论中指出的那样,仅使用@
参数定义
答案 1 :(得分:-2)
try{
SqlCommand cmd = new SqlCommand(query,conn);
cmd.Parameters.Add("@admission_no" , SqlDbType.Varchar,20).Value=txtAddmissionNo.Text;
cmd.Parameters.Add("@student_name" , SqlDbType.Varchar,50).Value=txtStudentName.Text;
cmd.Parameters.Add("@father_name" , SqlDbType.Varchar,50).Value=txtSDof.Text;
cmd.Parameters.Add("@receipt_no" , SqlDbType.Varchar,20).Value=txtReceiptNo.Text;
.... add other parameters and its value
cmd.ExecuteNonQuery();
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}