我尝试更新我的表时遇到错误。该表由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();
}
答案 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);