【问题标题】:sql command , executeNonQuery() [closed]sql 命令,executeNonQuery() [关闭]
【发布时间】:2015-02-23 14:44:03
【问题描述】:

我有一个从用户那里获取数据的网络表单。用户输入值并单击添加按钮。我想将用户输入的值插入数据库。但是当我运行这个项目时。它在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 + "')

【问题讨论】:

  • 请将查询编辑到问题中
  • 我还建议使用参数化查询。除了更安全之外,它也更容易,因为您不必注意是否必须转义字符串。
  • 您可能不会在 SQL 中发现错误。以这种方式(字符串连接)构建 SQL 命令是危险的,无论是从编码角度还是从安全角度来看。使用参数化查询。

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


【解决方案1】:

您不应该将您的 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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多