使用主键更新1行

时间:2018-05-15 21:43:08

标签: c#

我在form1中有一个datagridview,用户选择一行,相关的详细信息将发送到form2中的相关文本框。从这里用户点击一个按钮,该按钮应该更新所选行(在数据库中)的单元格并将其更改为“生产中”(即orderstatus文本框。

我希望能够更新与客户ID相关的行,这是数据库中的主键...当前软件会更新数据库表中的所有内容......

MAcon.Open();
OleDbCommand cm = new OleDbCommand("UPDATE [Customer Orders] SET [Order Status]=@OrderStatus WHERE [CustomerID]=@CustomerID", MAcon);
cm.Parameters.AddWithValue("@OrderStatus", textBox4.Text);
cm.Parameters.AddWithValue("@CustomerID", CustID.Text);
cm.ExecuteNonQuery();
MAcon.Close();

1 个答案:

答案 0 :(得分:0)

正如其他人所指出的那样,如果没有对客户订单表进行某种定义,就很难真正了解问题。

根据您提供给我们的信息对其进行有根据的猜测,我假设客户订单上的customerID字段是整数。

我想说,问题是由在.AddWithValue()中继承的隐含类型转换引起的。 CustID.Text将返回一个String,因此update语句中的where子句将整数值与永远不相等的字符串进行比较。

如果将代码更改为:

,则可能会有更好的结果
cm.Parameters.Add("@OrderStatus", SqlDbType.VarChar).Value = textBox4.Text;
cm.Parameters.Add("@CustomerID", SqlDbType.Int32).Value = textBox4.Text

这只是我的头脑,所以语法和类型可能有点偏离