有时在MS Access中工作的简单SQL Update语句?

时间:2014-08-01 12:25:42

标签: c# sql ms-access

我遇到的问题是当我在不同的字段上运行SQL UPDATE时,我的SQL语句中的相同WHERE标准会产生更改,而另一个则不会。

这不会产生影响的行:

 DateTime now = DateTime.Now;
 OleDbCommand cmd = new OleDbCommand("UPDATE shifts SET end_log=@end_log WHERE profile_id=@profile_id;");
 cmd.Parameters.AddWithValue("@profile_id", profileID);  // profileID is a string
 cmd.Parameters.AddWithValue("@end_log", now.ToString());  

然而,如果我运行它,会影响一行:

 OleDbCommand cmd = new OleDbCommand("UPDATE shifts SET closing=true WHERE profile_id=@profile_id;");
 cmd.Parameters.AddWithValue("@profile_id", profileID);

我的班次表包含以下字段:

profile_id - Short Text
end_log - Date/Time
closed - Yes/No

您可以假设这些表在两个实例中都保存相同的数据(这是自动加载的,只包含一条记录)。

有人发现任何错误吗?

1 个答案:

答案 0 :(得分:0)

使用OLEDB提供程序订单参数非常重要。

而不是

OleDbCommand cmd = new OleDbCommand("UPDATE shifts SET end_log=@end_log WHERE profile_id=@profile_id;");
cmd.Parameters.AddWithValue("@profile_id", profileID);  // profileID is a string
cmd.Parameters.AddWithValue("@end_log", now.ToString());  

OleDbCommand cmd = new OleDbCommand("UPDATE shifts SET end_log=@end_log WHERE profile_id=@profile_id;");
cmd.Parameters.AddWithValue("@end_log", now.ToString());  
cmd.Parameters.AddWithValue("@profile_id", profileID);  // profileID is a string

将参数添加到Parameters集合的顺序应与参数在查询中出现的顺序相匹配。