使用命名参数减小值不会更改所述值
我想减少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大致翻译为计算 。
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