2016-10-05 4 views
0

안녕하세요,이 오류가 계속 발생하고 있습니다. 알아낼 수 없습니다. 데이터베이스 도구에서 쿼리를 실행할 때 작동하지만 Microsoft 웹 개발자가 아닌 경우 작동합니다.'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(); 

감사합니다.

+0

myCommandSearch 결과 인쇄 – Madhivanan

+0

'Where' 절의 열 이름을 매개 변수화 할 수 없습니다. –

+0

@Prdp 할 수 없다면 여러 매개 변수를 추가해야합니까? –

답변

0

매개 변수를 이해하지 못했습니다.

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; 
    

    해당 문맥에서 문자열을 사용할 수 없습니다. 따라서 오류가 발생합니다.

  • +0

    응답 해 주셔서 감사합니다. WHERE 절에서 여러 열의 매개 변수를 전달하려는 경우 어떤 옵션이 있습니까? 모든 열은 동일한 열 이름 "답변"에서 검색됩니다. 예를 들어 WHERE answer = 'male'또는 answer = 'house'또는 answer = '100'입니다. 검색되는 열과 검색되는 변수에 대한 대답은 항상 동적이며 사용자가 선택한 변수 수에 따라 숫자가 항상 다릅니다. –

    +0

    고마워, 난 그냥 변수와 문자열을 함께 concat 솔루션을 생각한 다음 Sqlcommand로 전체 문자열을 전달하고 그것은 효과. –

    +0

    @ Tony.C. . . 네, 아아, 그게 해결책입니다. 쿼리를 "뭉근"해야합니다. –