偶尔在 MS Access 中工作的简单 SQL 更新语句?

Posted

技术标签:

【中文标题】偶尔在 MS Access 中工作的简单 SQL 更新语句?【英文标题】:Simple SQL Update statements occassionally working in MS Access? 【发布时间】:2014-08-01 12:25:41 【问题描述】:

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

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

有人发现任何错误吗?

【问题讨论】:

end_log=@end_log 几乎可以肯定是问题所在。打印出错误,然后您可能需要对日期格式大惊小怪。 您的第一个查询没有在您的数据库管理器中更新?我觉得我没有清楚地理解你的问题。 尝试使用now 代替now.ToString() Soner 我的第一个查询没有更新,而我的第二个查询更新了。 Randy 我在 INSERT INTO 语句中使用完全相同的“now.ToString()”,效果很好。事实上,我只是尝试在 end_notes 字段中插入一个字符串,因为该字段被定义为长文本,但也没有骰子。在这里不知所措。忽略它与此有关:***.com/questions/7522924/… 你能指定数据类型是日期时间而不是字符串吗?像这样: cmd.AddParameter("ExpiryDate", DbType.DateTime, 0, ParameterDirection.Input, now); 【参考方案1】:

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

【讨论】:

我现在感觉自己像个白痴。有用!我知道对于使用 ? 表示法的参数需要设置顺序,但假设 @ 表示法绕过了这一点,因为它被命名了。谢谢,感谢您的帮助!

以上是关于偶尔在 MS Access 中工作的简单 SQL 更新语句?的主要内容,如果未能解决你的问题,请参考以下文章

通过慢速网络连接在 git 中工作的最快方法是啥?

MS Access .accdb 文件为其他打开,但给了我“无法识别的数据库格式”

MS Access VBA 中的 SQL 指令

关于管道如何在 Bash 中工作的简单解释是啥?

在 JBOSS 6 EAP 中部署一个在 JBOSS AS 5 中工作的简单 WAR 应用程序的问题

MS Access中的简单SQL语句[重复]