매개 변수가있는 쿼리에 검색 키로 nvarchar 값을 추가 할 때 거의 100 % 확신됩니다. 문제는 내가 아펙스트로피의 주위에 @exp
이 내 자리 보유자로 의도 된 경우 쿼리가 @exp가 장소 보유자가 아닌 내 검색 키인 것으로 해석된다는 것입니다. 검색 키가 아포스트로피로 둘러싸여 있지 않으면 쿼리가 구문 적으로 올바르지 않다는 점을 제외하면 아포스트로피를 제거합니다. 실행 계획이 이미 평가되었고 검색 키 값이 말 그대로 스페인어가 아닌 '스페인어'가되기 때문에 매개 변수에 삽입되는 값에 아포스트로피를 추가 할 수는 없다고 설명되었습니다. 내 질문은이 문제를 어떻게 해결할 것인가입니다. 문제에 대한보다 자세한 배경은 아래 설명을 참조하십시오.문자열로 저장된 사용자 입력을 데이터베이스 필드와 비교할 수있는 매개 변수가있는 쿼리 만들기
제목 상태에는 매개 변수화를 사용하는 두 가지 동적 쿼리와 그렇지 않은 쿼리가 있습니다. 두 쿼리 모두 똑같은 작업을 수행하기위한 것입니다. 쿼리는 특정 언어로 1 차 또는 2 차 경험이있는 구성원 수를 반환하는 데 사용됩니다.
이렇게 쿼리가 설정되었습니다. 연결이 제대로 설정되고 두 쿼리에 사용되는 String exp
의 값은 테스트를 위해 스페인어로 하드 코드됩니다.
SQl_Command.CommandText = "SELECT COUNT(ID) As MyCount FROM members WHERE ([Primary Exp] = @exp) AND ([Approved] = 'True') OR ([Approved] = 'True') AND ([Secondary Exp] = @exp)";
SQl_Command.Parameters.Add("@exp", SqlDbType.NVarChar, 255).Value = exp;
나는 또한 시도 : 파라미터 사용
SQl_Command.CommandText = "SELECT COUNT(ID) As MyCount FROM members WHERE ([Primary Exp] = '" + exp + "') AND ([Approved] = 'True') OR ([Approved] = 'True') AND ([Secondary Exp] ='" + exp + "')";
: 파라미터를 사용하지
SqlParameter param = new SqlParameter("@exp", SqlDbType.NVarChar, 255);
param.Value = exp;
SQl_Command.Parameters.Add(param);
나는 오류 방법과 관련이있다 확신한다 I 매개 변수에 값을 추가하거나 컨텍스트에서 SqlCommand에 매개 변수를 추가하는 방법 아포스트로피가 필요합니다. e가 검색 키를 둘러 쌉니다. 나는 당시의 CommandText에 아포스트로피를 넣으면 또한 쿼리 실행 내가
`SELECT COUNT(ID) As MyCount FROM members WHERE ([Primary Exp] = '@exp') AND ([Approved] = 'True') OR ([Approved] = 'True') AND ([Secondary Exp] = '@exp')`
가 반환 @exp에 경험이있는 멤버를 검색을 의미 얻을 밖으로 반환을 명령 텍스트를 0으로 인쇄를 넣을 자리 표시자를 넣어 해당 항목이 없으므로 0입니다.
이 문제에 도움을 주시면 감사하겠습니다. 위의 설명에서 무언가를 잘못 언급했다면 알려 주시고 내가 왜 잘못되었는지 설명해 주시겠습니까?
코드는 나에게 좋아 보인다. 매개 변수가있는 버전의 매개 변수 자리 표시 자 주위에 아포스트로피가 필요하지 않습니다. 오류가 발생했다는 말씀입니까? 그게 뭐야? 또한 승인 된 열의 데이터 유형은 무엇입니까? –
이 코드는 웹 사이트에서 사용되며 사용자 입력은 링크를 클릭하여 전문 지식에 따라 페이지를 정렬 함으로서 발생합니다. @exp 주위에 아포스트로피없이 매개 변수화 된 쿼리를 사용하고 항목을 정렬하기 위해 링크를 클릭하면 페이지에 404 오류가 발생합니다. – TheDude