2011-11-02 5 views
1

C#의 SqlCommand 클래스를 사용하여 SQL 서버에서 저장 프로 시저를 실행하고 있습니다. 현재는 저장 프로 시저에 매개 변수 값을 구문 분석 한 다음 실행 문자열을 작성한 다음 서버에서 문자열을 실행합니다. 문제는 문자열이 제대로 전달되지 않는 따옴표가있는 경우입니다.따옴표가있는 SQL 서버 SP에 매개 변수 전달

SqlParameter 개체를 사용하여 따옴표가 이스케이프 될 염려없이 매개 변수를 전달할 수 있습니까?

답변

1

예, 매개 변수를 전송하는 가장 좋은 방법입니다.

예 :

using (SqlCommand cmd = new SqlCommand("SomeProcedure", connection) { 
    cmd.Parameters.Add("@Id", SqlDbType.Int).Value = 42; 
    cmd.Parameters.Add("@Text", SqlDbType.Varchar, 50).Value = "A string value"; 
    cmd.ExecuteNonQuery(); 
} 
1

간단히 말해서 SQL 주입 공격으로부터 보호하기 위해 최소한 문자열 연결이 아닌 SqlParameter 개체를 사용해야합니다.

+0

는 작은 바비 테이블에 대한 작업 같은 소리. –

0

SqlParameter를 사용할 때 매개 변수의 형식과 크기를 지정할 수 있습니다. 이렇게하면 실행 계획 재사용 (StoredProcs와 같은 문제는 아니지만)을 보장 할뿐 아니라 이스케이프 및 인용에 대해 걱정할 필요가 없도록 보장합니다. 모든 것이 완료되었습니다.