简单的SQL Update语句偶尔在MS Access中工作

本文关键字:MS Access 工作 偶尔 SQL Update 语句 简单 | 更新日期: 2023-09-27 18:16:01

我遇到的问题是,当我在不同的字段上运行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

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

有人发现任何错误吗?

简单的SQL Update语句偶尔在MS Access中工作

当使用OLEDB provider 时,参数的顺序很重要。

不是

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集合的顺序应与查询中参数出现的顺序一致。