DataReader에 열이 있는지 확인하거나 특정 예외에서 디버거가 중단되지 않음

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

  •  03-07-2019
  •  | 
  •  

문제

나는 다음과 같은 코드가 있습니다.

  //System.Data.IDataRecord dr
  try
  {
       Consolidated = Utility.NullConvert.ToBool(dr[Constants.Data.Columns.cConsolidated], false);
  }
  catch (IndexOutOfRangeException) { } //swallow

통합 열이 DataReader에 있을지 모르겠으므로 확인해야합니다. 잘 작동합니다 (그러나 약간 해킹됩니다).

그래도 디버거를 첨부하면 예외가 발생할 때마다 파괴됩니다. 매우 성가신.

해당 코드를 작성하는 더 좋은 방법이 있습니까? 아니면 예외를 무시하고 깨지지 말라고 지시하는 시각적 스튜디오 (Visual Studio)는 (여기서만, 어디에나 있지 않음).

도움이 되었습니까?

해결책

예, DataReader의 getSchematable () 메소드를 사용하여 열 목록을 얻으면 해당 열이 있는지 확인할 수 있습니다.

당신은 찾을 수 있습니다 이 매우 비슷한 질문 도움이 되는.

다른 팁

나는 단순히 사용할 것입니다 GetOrdinal() 루프가 시작될 때 열 인덱스를 먼저 찾아서 변수에 저장하십시오. 그런 다음 그것이 있는지 확인하십시오 >=0. 이것은 성능을 향상시키는 이점이 있습니다 (이름이 아닌 모든 액세스 에이 정수를 사용하는 한).

그리고 아니요, 특정한 예외를 무시하는 우아한 방법은 없습니다. 당신은 잡고 삼킬 수 있지만 그것은 좋은 접근법이 아닙니다.

다음 코드를 사용하기 만하면됩니다.

reader.GetSchemaTable().Columns.Contains("Your_Column")

이것은 부울을 반환합니다.

If reader.GetSchemaTable().Columns.Contains("ContactID") Then
   ' Do something
End If
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top