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.");
}
}
}
我以前见过这种情况,结果是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"类似。非常微妙,但可能正是你所遇到的。另外,您要连接到哪个数据库。不同的引擎使用不同的令牌字符进行参数传递。。。"?","@",":"就我所知的少数。。。