更新数据库记录时,所有记录都以相同的值更新

时间:2017-02-28 07:54:41

标签: c# sql sql-server

我使用c#文本框更新了sql数据库,但所有记录都更新了我在该文本框中输入的值。我做错了。

我的代码

private void btnsave_Click(object sender, EventArgs e)
{
    try
    {
        string connectionString = (@"Data Source = M2\SQL2016; Initial Catalog = inventoryDB; Integrated Security = True");

        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            conn.Open();
            using (SqlCommand cmd =
                    new SqlCommand("UPDATE companyDB SET compname=@label3", conn))
            {
                cmd.Parameters.AddWithValue("@label3", cmpname.Text);
                int rows = cmd.ExecuteNonQuery();
            }


        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Not Updated");
    }

1 个答案:

答案 0 :(得分:2)

您应在此处设置where子句以过滤应更新的记录。 WHERE子句仅用于提取满足指定条件的记录。请参阅以下示例,该示例基于id列进行过滤:

new SqlCommand("UPDATE companyDB SET compname=@label3 where id = @id", conn))

cmd.Parameters.AddWithValue("@id", id.Text);

虽然直接指定类型并使用Value属性比AddWithValue更好:

cmd.Parameters.Add("@label3", SqlDbType.VarChar).Value = cmpname.Text;

另请查看: Can we stop using AddWithValue() already?