使用c#在数据库中插入数据

时间:2014-07-03 07:54:51

标签: c# sql-server

我正在尝试使用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

2 个答案:

答案 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());
}