【发布时间】: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 字段中插入一个字符串,因为该字段被定义为长文本,但也没有骰子。在这里不知所措。忽略它与此有关:stackoverflow.com/questions/7522924/…
-
你能指定数据类型是日期时间而不是字符串吗?像这样: cmd.AddParameter("ExpiryDate", DbType.DateTime, 0, ParameterDirection.Input, now);