繁体   English   中英

更新语句中关键字“ where”附近的语法不正确

[英]Incorrect syntax near the keyword 'where' in update statement

我正在尝试执行UPDATE数据,但是显示错误。

protected void Button2_Click(object sender, EventArgs e)//Update
{
    {
        SqlConnection con = new SqlConnection(@"Data Source=SYSTEM2\SQLEXPRESS;Initial Catalog=amresh;Integrated Security=True");
        SqlCommand cmd = new SqlCommand("UPDATE detail SET name='" + TxtBox_name.Text + "',address='" + TexBo_add.Text + "', WHERE contact_no='" + TexBo_num.Text + "'",con);
        con.Open();
        cmd.ExecuteNonQuery();
        ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('record updated');", true);
        con.Close();
    }
}

哦,在如此狭窄的空间中有很多错误:

  • 实际的SQL错误只是不必要的逗号
  • 但是:您有SQL注入问题
  • 和失踪的处置

我非常喜欢使用工具来避免痛苦。 这与使用“ dapper”相同

using(var con = new SqlConnection(ConnectionString)) 
{
     con.Execute(@"update detail
         set name=@name, address=@address
         where contact_no = @num",
         new {
             name = TxtBox_name.Text,
             address = TexBo_add.Text,
             num = TexBo_num.Text
        });
}

此外,它可能还希望是:

...
num = int.Parse(TexBo_num.Text)
...

但是然后-用相同的方法同时提到UI控件和数据访问的代码可能意味着您的UI代码做得太多。

首先, 小鲍比桌子会像便宜衣服一样摆满整个房间。 其次,查看SqlCommand文档,以获取有关如何使用参数进行更新的示例。

您需要在where之前删除, (逗号)。

SqlCommand cmd = new SqlCommand("UPDATE detail SET name='" + TxtBox_name.Text + "',address='" + TexBo_add.Text + "', WHERE contact_no='" + TexBo_num.Text + "'", con);
                                                                                                                   ^

但是我建议您使用Parameterized查询。

string query= "UPDATE detail SET name=@name, address=@address WHERE contact_no=@contactno";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@name", TxtBox_Name.Text);
cmd.Parameters.AddWithValue("@address", TexBo_add.Text);
cmd.Parameters.AddWithValue("@contactno", TexBo_num.Text);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM