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

本文关键字:附近 表达式 GROUP 类型 条件 上下文 布尔 | 更新日期: 2023-09-27 18:11:49

嗨,伙计们,我一直得到这个错误,我不能弄清楚。当我在数据库工具中运行查询时,它会工作,但当它在我的微软web开发中不工作。

我得到的错误是:

在上下文中指定的非布尔类型表达式,其中

代码 :

Session["string"] = "answerswer ='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();

谢谢你的帮助。

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

这是您的查询:

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

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

  • 表名
  • <
  • 数据库/gh><
  • 表达式/gh>
  • 函数名
  • 和其他非常量

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

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

在该上下文中不允许使用字符串。因此,您将得到一个错误。