更新SQL Server时出错

时间:2018-05-17 14:26:34

标签: c# sql-server

我尝试更新我的表时遇到错误。该表由6列组成,显示在窗体上的数据网格视图中。 ID列显示在表单上的标签中,以防止用户编辑。

现在,当我尝试更新时,我收到此错误:

  

无法绑定多部分标识符“lblId.Text”。

任何建议都会有所帮助。

这是我的更新代码:

private void btnupdate_Click(object sender, EventArgs e)
{
    cn.Open();

    cmd = new SqlCommand ("UPDATE jimmy SET Id=@Id, 
         FirstName=@FirstName, LastName=@LastName, Telephone=@Telephone, 
        Address=@Address, City=@City,Country=@Country WHERE @Id=lblId.Text", cn);

    cmd.Parameters.AddWithValue("@Id", lblID.Text);
    cmd.Parameters.AddWithValue("@FirstName", txtfirstname.Text);
    cmd.Parameters.AddWithValue("@LastName", txtlastname.Text);
    cmd.Parameters.AddWithValue("@Telephone", txttelephone.Text);
    cmd.Parameters.AddWithValue("@Address", txtaddress.Text);
    cmd.Parameters.AddWithValue("@City", txtcity.Text);
    cmd.Parameters.AddWithValue("@Country", txtcountry.Text);

    cmd.ExecuteNonQuery();
    cn.Close();

    MessageBox.Show("Updated");
    cleartext();
}

2 个答案:

答案 0 :(得分:4)

错误来自WHERE子句中的SQL命令文本。

应该是

WHERE Id = @Id

而不是

WHERE @Id = lblId.Text 

您不能通过将lblId.Text直接放入SQL命令文本来向SQL Server说明从文本框控制器中读取文本。

答案 1 :(得分:1)

WHERE @Id=lblId.Text应为WHERE Id=@Id,因为lblId.Text很可能是您想要作为参数值传递的UI控件值,无论如何您都在说cmd.Parameters.AddWithValue("@Id", lblID.Text);