sql命令,executeNonQuery()

时间:2015-02-23 14:44:04

标签: c# sql asp.net sql-server

我有一个从用户那里获取数据的网络表单。用户输入值并单击“添加”按钮。我想将用户输入的值插入数据库。但是当我运行该项目时。它在cmd.ExecuteNonQuery();

处出现以下错误
  

用户代码未处理SqlException:
  关键字'of'附近的语法不正确。

问题是什么以及如何解决这个问题?

查询是:

insert into EMPLOYEES
    (EMP_ID,
    FIRST_NAME,
    SECOND_NAME,
    THIRD_NAME,
    LAST_NAME,
    GENDER,
    DATE_OF_BIRTH,
    PLACE_OF_BIRTH,
    NATIONALITY,
    PHONE_NUMBER,
    DEPT_ID,
    JOB_ID,
    START_DATE)
values
    ('" + txtid.Text + "',
    '" + txtFirst.Text + "',
    '" + txtsecond.Text + "',
    '" + txtthird.Text + "',
    '" + txtlast.Text + "',
    '" + s + "',
    '" + txtdob.Text + "',
    '" + txtPlace.Text + "',
    '" + txtnat.Text + "',
    '" + txtphone.Text + "',
    '" + txtdep.Text + "',
    '" + txtpos.Text + "',
    '" + txtstart.Text + "')

1 个答案:

答案 0 :(得分:4)

您不应该将SQL语句连接在一起 - 使用参数化查询来避免SQL注入以及语法错误。

以下是调整代码的方法:

string sql = @"INSERT INTO employees (emp_id,first_name, second_name , third_name , last_name , gender , date_of_birth , place_of_birth ,nationality , phone_number, dept_id , job_id , start_date)
              VALUES(@emp_id,@first_name, @second_name , @third_name , @last_name , @gender , @date_of_birth , @place_of_birth ,@nationality , @phone_number, @dept_id , @job_id , @start_date)";
SqlCommand exeSQL = new SqlCommand(sql, cn);
cn.Open();
cmd.Parameters.AddWithValue("@emp_id", txtid.Text);
cmd.Parameters.AddWithValue("@first_name", txtFirst.Text);
cmd.Parameters.AddWithValue("@second_name", txtsecond.Text);
cmd.Parameters.AddWithValue("@third_name", txtthird.Text);
cmd.Parameters.AddWithValue("@last_name", txtlast.Text);
cmd.Parameters.AddWithValue("@gender", s);
cmd.Parameters.AddWithValue("@date_of_birth", txtdob.Text);
cmd.Parameters.AddWithValue("@place_of_birth", txtPlace.Text);
cmd.Parameters.AddWithValue("@nationality", txtnat.Text);
cmd.Parameters.AddWithValue("@phone_number", txtphone.Text);
cmd.Parameters.AddWithValue("@dept_id", txtdep.Text);
cmd.Parameters.AddWithValue("@job_id", txtpos.Text);
cmd.Parameters.AddWithValue("@start_date", txtstart.Text);
exeSQL.ExecuteNonQuery();