在 'GROUP' 附近预期条件的上下文中指定的非布尔类型的表达式

An expression of non-boolean type specified in a context where a condition is expected, near 'GROUP'

大家好,我一直收到此错误,但我无法解决。它在我 运行 数据库工具中的查询时有效,但在我的 Microsoft web 开发中无效。

我得到的错误是:

An expression of non-boolean type specified in a context where a condition is expected, near 'GROUP'.

代码:

Session["string"] = "answer ='Male'";
Session["count"] = 1;
myCommandSearch = new SqlCommand("SELECT userId FROM UserAnswer WHERE @SEARCHVARIABLES GROUP by userId HAVING COUNT(*) = @VARIABLECOUNT", myConnection);
myCommandSearch.Parameters.AddWithValue("@SEARCHVARIABLES", Session["string"]);
myCommandSearch.Parameters.AddWithValue("@VARIABLECOUNT", Session["count"]);
SqlDataReader myReaderSearch = myCommandSearch.ExecuteReader();

在此先感谢您的帮助。

这是您的查询:

SELECT userId
FROM UserAnswer
WHERE @SEARCHVARIABLES
GROUP by userId
HAVING COUNT(*) = @VARIABLECOUNT;

参数可用于替换文字值。它们不能用于替换:

  • 列名称
  • Table 名字
  • 数据库
  • 表达式
  • 函数名称
  • 以及任何其他不是常量的东西

所以,@SEARCHVARIABLES 似乎是一个字符串。假设它是这样的:userId IN (1, 2, 3)。那么查询将是:

SELECT userId
FROM UserAnswer
WHERE 'userId IN (1, 2, 3)'
GROUP by userId
HAVING COUNT(*) = @VARIABLECOUNT;

该上下文中不允许使用字符串。因此,您遇到了错误。