减小带有命名参数的值不会改变该值

本文关键字:改变 参数 | 更新日期: 2023-09-27 18:06:12

我想在Access数据库中减少我的urunadedi值。我有以下代码:

cmd2.Connection = con;
cmd2.Parameters.AddWithValue("@urunid", Convert.ToInt64(textBox1.Text));
cmd2.Parameters.AddWithValue("@hesaplam",Convert.ToInt64(textBox2.Text));
cmd2.CommandText = @"UPDATE Table1
                     SET urunadedi=urunadedi-@hesaplam
                     WHERE urunadi=@urunid";
cmd2.ExecuteNonQuery();

urunadedi的值没有减小。为什么会这样,我该如何解决?


为方便非土耳其读者,urunadediurunidurunadi大致翻译为ProductNamehesaplam大致翻译为calculate

减小带有命名参数的值不会改变该值

Microsoft OLEDB 忽略参数名,只注意参数出现在CommandText中的顺序。因此,对于

cmd2.CommandText = @"UPDATE Table1
                     SET urunadedi=urunadedi-@hesaplam
                     WHERE urunadi=@urunid";
我们需要首先添加@hesaplam参数,因为它首先出现在CommandText 中
cmd2.Parameters.AddWithValue("@hesaplam", Convert.ToInt64(textBox2.Text));
cmd2.Parameters.AddWithValue("@urunid", Convert.ToInt64(textBox1.Text));

还请注意,因为OLEDB参数名称被忽略,所以使用问号(?)作为参数占位符是很常见的:

cmd2.CommandText = @"UPDATE Table1
                     SET urunadedi=urunadedi-?
                     WHERE urunadi=?";
cmd2.Parameters.AddWithValue("?", Convert.ToInt64(textBox2.Text));  // @hesaplam
cmd2.Parameters.AddWithValue("?", Convert.ToInt64(textBox1.Text));  // @urunid