2013-06-18 5 views
1

결과를 읽는 데 필요한 크기의 배열을 만들기 위해 쿼리가 반환 한 열의 수를 알고 싶습니다.GetSqlValues가 숨겨진 필드를 가져 옵니까?

object[] array = new object[rdr.FieldCount]; 
rdr.GetSqlValues(array); 

하지만 FieldCount 또는 VisibleFieldCount 사용하는 경우는 잘 모르겠어요 : SqlDataReader 내가 그런 짓을 할 사용

. (나는 숨겨진 필드 무엇인지 모르겠어요.하지만 지금은 떠날 수 있습니다.)

+0

아니요! –

+0

@AppDeveloper 감사합니다. 당신은 당신의 코멘트를 대답으로 바꿀 수 있습니다. (가급적이면 약간의 지원이 필요합니다.) – ispiro

+0

스티브가 더 잘 설명해주었습니다. –

답변

3

이 GetSqlValues에서 디 컴파일 코드()

public virtual int GetSqlValues(object[] values) 
{ 
    SqlStatistics statistics = null; 
    int num3; 
    try 
    { 
     statistics = SqlStatistics.StartTimer(this.Statistics); 
     this.CheckDataIsReady(); 
     if (values == null) 
     { 
      throw ADP.ArgumentNull("values"); 
     } 
     this.SetTimeout(this._defaultTimeoutMilliseconds); 
     int num2 = (values.Length < this._metaData.visibleColumns) ? values.Length : this._metaData.visibleColumns; 
     for (int i = 0; i < num2; i++) 
     { 
      values[this._metaData.indexMap[i]] = this.GetSqlValueInternal(i); 
     } 
     num3 = num2; 
    } 
    finally 
    { 
     SqlStatistics.StopTimer(statistics); 
    } 
    return num3; 
} 

는 당신이 볼 수 있듯이 배열은 visibleColumns 내부 값과 비교하여 검사됩니다. 이 값은 VisibleFieldCount에서 반환 한 값과 같습니다.

코드에서 알 수 있듯이 전달 된 배열의 길이를 확인하고 전달 된 배열에 들어갈 수있는 여러 열을 복사합니다. FieldCount 요소의 배열을 전달하면 (as from docs on VisibleFieldCount) 숨겨진 필드가 내부 배열의 끝에 추가되므로 표시되는 필드 만 검색합니다.

+0

감사합니다. – ispiro

관련 문제