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

46qrfjad  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(275)

嗨,伙计们,我一直都有这个错误,我想不出来。当我在数据库工具中运行查询时,它就工作了,但当它在我的microsoftwebdev中运行时就不工作了。
我得到的错误是:
在“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();

事先谢谢你的帮助。

x8goxv8g

x8goxv8g1#

这是您的问题:

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

参数可用于替换文字值。它们不能用来代替:
列名
表名
数据库
表达
函数名
以及任何不是常数的东西
所以, @SEARCHVARIABLES 似乎是一根弦。假设是这样的: userId IN (1, 2, 3) . 那么查询将是:

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

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

相关问题