-1

我正在尝试更新数据,但它显示错误。

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

3 回答 3

3

哦,在这么狭小的空间里有这么多错误:

  • 实际的 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 代码做得太多。

于 2013-09-22T09:15:42.553 回答
2

首先,Little Bobby Tables就像一件便宜的西装。其次,查看SqlCommand的文档,了解如何使用参数进行更新的示例。

于 2013-09-22T09:01:30.030 回答
0

您需要删除,之前的(逗号)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);
于 2013-09-22T09:03:33.207 回答