在需要条件的上下文中指定的非布尔类型表达式,在'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();
谢谢你的帮助。
这是您的查询:
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;
在该上下文中不允许使用字符串。因此,您将得到一个错误。