2010-12-16 8 views
8

포크,매개 변수화 된 SqlCommand - SqlDbType을 지정하는 이점?

내가 틀린 경우가 아니면 각 매개 변수에 대해 SqlDbType을 지정하여 매개 변수가있는 SQL 쿼리를 생성 할 수 있습니다. 그것은 매개 변수 이름과 매개 변수의 값만을 제공하여 SqlParameter를 생성 할 수있는 것 같습니다. SqlDbType을 지정하면 어떤 이점이 있습니까?

답변

6

이점은 다음과 같습니다. 매개 변수가 SqlDbType 인 것을 명확하게 제어 할 수 있습니다.

그렇지 않으면 ADO.NET은 제공 한 값에 따라 추측을해야합니다. .AddWithValue 방법. 그러한 추측은 대부분 시간이 꽤 좋습니다. DBNull.Value을 제공하십시오. 실제로 생각해 볼 때 약간의 까다로운 작업이 필요합니다.

또한 문자열을 제공하면 최대 문자 수를 지정할 수있는 경우가 많습니다. 해당 문자열 매개 변수의 길이 (저장된 프로 시저의 VARCHAR(x) 정의에있는 x). 그렇게하지 않으면 ADO.NET에서 현재 길이를 사용하게되며, 때때로 좋거나 나쁠 수 있습니다.

전반적으로 : 제어력이 뛰어나고 의도가 무엇인지 명확하게 밝혀줍니다.

+0

감사합니다! 말이된다! – SFun28

0

주요 이점은 성능입니다. 매개 변수 유형을 지정하지 않으면 SqlClient 엔진이 매개 변수 값에서이를 추론합니다. 디자인 타임에 매개 변수 유형을 알고 있으면이를 지정하여 추론 단계의 비용을 피할 수 있습니다.

+0

니콜 - 퍼실 로스가 유의합니까? – SFun28

2

SqlDbType을 지정하면 제공된 SqlDbType에 대해 매개 변수를 제공하는 값의 유효성이 검사되므로 데이터가 맞지 않으면 이전에 오류가 발생합니다 (그렇지 않으면 SQL Server에서 예외가 발생합니다).

1

특정 SqlDbType을 사용하면 더 많은 제어 권한을 얻음에 동의합니다. 유니 코드 텍스트를 다룰 때 텍스트를 다룰 때 더 많은 제어가 필요한 또 다른 이유가 있습니다. 예를 들어, SqlDbType.NVarChar 대 SqlDbType.VarChar를 사용합니다.

+0

멋진 포인트! 나는 유니 코드 텍스트를 사용하지 않지만, 그렇게했다면 걱정이 될 것입니다. – SFun28

관련 문제