我遇到的问题是当我在不同的字段上运行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
您可以假设这些表在两个实例中都保存相同的数据(这是自动加载的,只包含一条记录)。
有人发现任何错误吗?
答案 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
集合的顺序应与参数在查询中出现的顺序相匹配。