1

我正在为我们的运输部门制定一个监控程序,该程序将显示准备发货的订单。我一直在使用 SQLDependency 来执行此操作并最终使其正常运行,但是,当我尝试向查询添加更多细节时,特别是与 datetime 列进行比较时,会重复触发 OnChange 事件。当我删除比较时,它工作得很好。

我浏览过Microsoft 的文档,但没有看到任何说明这种比较无效的内容。

我已将查询简化为:

SELECT [SALESLINE].[SHIPPINGDATEREQUESTED]
FROM [dbo].[SALESLINE]
WHERE [SALESLINE].[SHIPPINGDATEREQUESTED] >= '20130614'

有谁知道我可能做错了什么或以其他方式与日期进行比较?

我可以发布我的一些代码,但是,正如我所说,如果我的 WHERE 子句中没有日期时间,它就可以工作。

4

3 回答 3

4

尝试使用类型化参数:

WHERE [SALESLINE].[SHIPPINGDATEREQUESTED] > @someDateTime

并传入一个 DateTime 类型的参数。

于 2013-06-21T20:24:32.473 回答
0

您是否正在检查 OnChange 事件被触发的原因?您的查询可能不符合某些要求。如果您的查询本身是罪魁祸首,则可能是 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));
于 2013-06-21T20:29:16.600 回答
0

尝试按如下方式创建命令参数。确保 dateVar 是 DateTime 类型变量而不是字符串。

cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = dateVar;

我希望这会对某人有所帮助

于 2015-09-04T01:16:31.127 回答