减小带有命名参数的值不会改变该值
本文关键字:改变 参数 | 更新日期: 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
的值没有减小。为什么会这样,我该如何解决?
为方便非土耳其读者,urunadedi、urunid和urunadi大致翻译为ProductName, hesaplam大致翻译为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