我正在为我们的运输部门制定监控程序,该程序将显示准备发货的订单。我一直在使用SQLDependency来完成这项工作并最终使其正常运行,但是,当我尝试为查询添加更多细节时,特别是与datetime列相比,OnChange事件会被重复触发。当我删除比较时,它完美地运作。
我经历过Microsoft's documentation,但我没有看到任何说这种比较无效的事情。
我已将查询简化为:
SELECT [SALESLINE].[SHIPPINGDATEREQUESTED]
FROM [dbo].[SALESLINE]
WHERE [SALESLINE].[SHIPPINGDATEREQUESTED] >= '20130614'
有谁知道我可能做错了什么或用其他方式来比较日期?
我可以发布我的一些代码,但是,正如我所说,如果我的WHERE子句中没有日期时间,它就可以正常工作。
答案 0 :(得分:4)
尝试使用输入的参数:
WHERE [SALESLINE].[SHIPPINGDATEREQUESTED] > @someDateTime
并传入DateTime类型的参数。
答案 1 :(得分:0)
您是否正在检查OnChange事件被触发的原因?您的查询可能不符合某些requirements。如果您的查询本身是责任,可能是SQLDependency订阅本身是重复触发的原因,在这种情况下,原因应该确认这一点。您可以通过查看eventargs。
在处理程序中进行检查阅读规则,没有什么显而易见的。所以也许试试:
using(SqlCommand cmd = new SqlCommand("SELECT [SALESLINE].[SHIPPINGDATEREQUESTED]
FROM [dbo].[SALESLINE]
WHERE [SALESLINE].[SHIPPINGDATEREQUESTED] >= @d", conn)){
DateTime myDate = DateTime.Now;
cmd.Parameters.Add(new SqlParameter("@d", myDate));
答案 2 :(得分:0)
尝试按如下方式创建命令参数。 确保dateVar是DateTime类型变量而不是字符串。
cmd.Parameters.Add(" @ date",SqlDbType.DateTime).Value = dateVar;
我希望这能帮到某人