같은 조건을 수행 할 때 매개 변수화 된 쿼리가 중단됩니다. 왜요?

StackOverflow https://stackoverflow.com/questions/440962

  •  22-07-2019
  •  | 
  •  

문제

따라서 쿼리와 같은 매개 변수를 수행하는 메소드가 있습니다. 이 메소드는 검색 매개 변수/값을 가져간 다음 쿼리에 대한 명령에 추가됩니다.

그것은 작동하지 않습니다. 작동해야하며 값을 코딩하여 SQL 문자열 인 SANS 매개 변수화로 직접 검색하면 작동합니다! 내가 그것을 가지고있을 때 매개 변수는 그렇지 않습니다! 모든 아이디어.

다음은 (가짜, 이름을 변경했습니다) 예제 코드입니다.

myDataReader = SQLExecute("SELECT * FROM TableOfAwesomeness WHERE BestTVShow LIKE 'Arrested Development%'")

작동 할 것이다. 하지만

Function MethodOfReturningHorror(ByVal TVShow as String) as SqlDataReader
{
dim command as new SQLCommand
command.connection = sqlconnection
command.CommandText = "SELECT * FROM TableOfAwesomeness WHERE BestTVShow LIKE '@tvShow%'"
command.Parameters.Add("tvShow",TVShow)

return command.ExecuteReader()
}

나는 게으름/간결함을 위해 질문과 관련이없는 코드를 놓쳤다. 따라서 반환 비트와 물건을 무시하십시오. 중요한 것은 데이터 리더에 아무것도 포함하지 않고 첫 번째 예에서는 그렇지 않다는 것입니다. 나는 그것이 같은 절의 매개 변수화와 관련이 있다고 확신합니다.

감사!

도움이 되었습니까?

해결책

이 시도:

command.CommandText = "SELECT * FROM TableOfAwesomeness WHERE BestTVShow LIKE @tvShow + '%'"

다른 팁

'%'를 SQL에 포함시키지 않고 매개 변수 문자열의 끝에 '%'를 추가하십시오.

확인하고있는 값이 바르 차르 값인지 확인하기 위해이를 시도하고 정수 유형을 말하지 않습니다.

command.CommandText = "SELECT * FROM TableOfAwesomeness WHERE BestTVShow LIKE convert(varchar(100), @tvShow) + '%'"

T-SQL이 기본 유형 변환 및 문자열 연결을 할 때 몇 가지 문제가있었습니다.

( "Varchar (100)"를 인스턴스에서 작동하도록 분명히 변경 : 데이터 유형, 예상 길이)

@tvShow 변수이며 문자열 내부에서 사용하고 있습니다. C#에서 이것과 동일합니다.

var tvShow = "5th Wheel";
var netwokAndShow = "Fox tvShow";
Console.WriteLine(networkAndShow); // Prints 'Fox tvShow', not 'Fox 5th Wheel'

당신은 다음과 같이 보이기를 원합니다.

LIKE @tvShow + '%'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top