【问题标题】:System.Data.SqlClient.SqlException: Incorrect syntax near ''System.Data.SqlClient.SqlException:'' 附近的语法不正确
【发布时间】:2011-01-05 18:06:20
【问题描述】:
cmd.Connection = con;
con.Open();
cmd.CommandText = "Update tiit.Enquiry Set Status='" + DropDownList4.SelectedValue + "', NextFollowup='" + TextBox8.Text + "', Remarks='" + TextBox9.Text + "', Name='" + TextBox1.Text + "', Email='" + TextBox2.Text + "', Phone='" + TextBox3.Text + "','','','','', City='" + TextBox4.Text + "', Country='" + TextBox5.Text + "', Course='" + TextBox6.Text + "', Comments='" + TextBox7.Text + "', Cost='" +TextBox14.Text+ "' where SN='" + HiddenField1.Value + "'";
int i = cmd.ExecuteNonQuery();
con.Close();

【问题讨论】:

  • 请发布更多详细信息

标签: asp.net


【解决方案1】:

不,不要这样做。 从不在构建 SQL 查询时使用字符串连接(+ 运算符)。使用参数化查询:

cmd.Connection = con; 
con.Open(); 
cmd.CommandText = "UPDATE tiit.Enquiry Set Status=@Status, NextFollowup=@NextFollowup, ...";
cmd.Parameters.AddWithValue("@Status", DropDownList4.SelectedValue);
cmd.Parameters.AddWithValue("@NextFollowup", TextBox8.Text);
...

这样您的代码就不会受到 SQL 注入的攻击,也不会出现任何编码问题。

【讨论】:

    【解决方案2】:

    很可能是这样的:

    "Update tiit.Enquiry Set Status='"
    

    你有问题吗。 (我说的是。)

    不过我完全同意 - 使用参数化查询。

    【讨论】:

      猜你喜欢
      • 2021-03-31
      • 2019-07-17
      • 2017-12-08
      • 2014-05-09
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多