C#执行查询不更新数据库

本文关键字:更新 数据库 查询 执行 | 更新日期: 2023-09-27 18:20:14

以下代码有效,我收到消息框,说产品已经更新,但数据库中没有任何更改。

这是从同一数据库中的另一个方法复制和粘贴的,该方法运行良好。

    private void btnProductSave_Click(object sender, EventArgs e)
    {
        if (txtProductName.Text != "")
        {
            var confirmResult = MessageBox.Show("Are you sure you want to save changes to this product?", "Confirm Save", MessageBoxButtons.YesNo);
            if (confirmResult == DialogResult.Yes)
            {
                SqlConnection con = null;
                con = new SqlConnection(ConfigurationManager.ConnectionStrings["PVAdmin.Properties.Settings.PricerConnectionString"].ConnectionString);
                string sql2 = "UPDATE Products SET productName = @productName WHERE productID = @productID";
                SqlCommand myCommand2 = new SqlCommand(sql2, con);
                myCommand2.Parameters.AddWithValue("@productName", txtProductName.Text);
                myCommand2.Parameters.AddWithValue("@productID", lblProductID.Text);
                con.Open();
                myCommand2.ExecuteNonQuery();
                con.Close();
                MessageBox.Show("Product saved.");
                this.LoadProduct((int)cboProductSelect.SelectedValue);
            }
            else
            {
                MessageBox.Show("No changes were saved.");
            }
        }
    }

C#执行查询不更新数据库

我以前见过这种情况,结果是sql引擎似乎会自我更新。由于您的@parm与列相同,sql正在说用我更新我。

要修复此问题,请尝试轻微重命名您的参数,如

UPDATE Products SET productName = @pProductName WHERE productID = @pPproductID";
myCommand2.Parameters.AddWithValue("@pProductName", txtProductName.Text);
myCommand2.Parameters.AddWithValue("@pProductID", lblProductID.Text);

通过这种方式,SQL没有列"pProductName",实际上将转到参数。。。与"pProductID"类似。非常微妙,但可能正是你所遇到的。另外,您要连接到哪个数据库。不同的引擎使用不同的令牌字符进行参数传递。。。"?","@",":"就我所知的少数。。。