嘿所有我不知道为什么我收到此错误:当我尝试运行此了条件,预计,不久的“@ VAL4”在上下文中指定非布尔类型的表达式
An expression of non-boolean type specified in a context where a condition is expected, near '@val4'
代码在C#:
SELECT * FROM tT WHERE active = @val1 AND (ApDate BETWEEN @val2 AND @val3) AND @val4
上面查询的数据是:
@val1 = 1
@val2 = 9/30/2016 12:00:00 AM
@val3 = 9/30/2017 12:00:00 AM
@val4 = (RequestID = 0 OR RequestID =469 OR RequestID =471 OR RequestID =472 OR
RequestID =473 OR RequestID =474 OR RequestID =494 OR
RequestID =496 OR RequestID =497)
所以把那干脆它看起来像THI S:
SELECT *
FROM tT
WHERE active = 1
AND (ApDate BETWEEN '9/30/2016 12:00:00 AM' AND '9/30/2017 12:00:00 AM')
AND (RequestID = 0 OR RequestID =469 OR RequestID =471 OR RequestID =472 OR
RequestID =473 OR RequestID =474 OR RequestID =494 OR
RequestID =496 OR RequestID =497)
然而,当我运行的服务器管理Studio中相同的查询它运行得很好......
而我只是用这样的:
command.Parameters.AddWithValue("@val1", Value_here);
command.Parameters.AddWithValue("@val2", Value_here);
command.Parameters.AddWithValue("@val3", Value_here);
command.Parameters.AddWithValue("@val4", Value_here);
由于意味着将4个参数添加到查询中。
注意不是由于当前问题,而不是现在相同的命名问题。
@DavidG它正在被比较..它正在比较** RequestID ** – StealthRT
对不起,误读。但是,似乎您正在尝试将原始SQL作为参数传递,是吗?你能证明你是如何做到的吗? – DavidG
所以你现在有答案,而且我建议http://blogs.msmvps。com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/ – DavidG