기분을 상하게하는 열을 찾는 방법? 문자열을 int32로 변환 할 수 없습니다.

.net c# datatable sqlbulkcopy

문제

SqlBulkCopy를 사용하고 있습니다. 그래서 나는 데이터 테이블을 만들고 컬럼을 지정하고 데이터 테이블에 행을 추가 한 다음 삽입하려고했습니다.

System.InvalidOperationException이 사용자 코드에 의해 처리되지 않았습니다. Message = 데이터 소스의 String 유형의 지정된 값을 지정된 대상의 int 유형으로 변환 할 수 없습니다.

그래도이 오류가 계속 발생합니다. 것은 내가 3 int 열이 있고 나는 그것이 어떤 단서가 없다.

나는 심지어 각 int 열에 그것의 유형을 넣는다.

 datatable.Columns.Add("Id", typeof(int));

아직도 문제가있는 것 같습니다. 그렇다면 스택 추적 또는 int에서 예외가 실제로 죽는 열을 말할 것입니까?

수락 된 답변

Bruce Dunwiddie의 우수한 ValidatingDataReader 클래스를 확인하십시오. 이런 종류의 매핑 문제가있을 때 예외 메시지에 정말 훌륭한 정보를 제공합니다.


인기 답변

SQL Server에서 테이블로 데이터를 가져온 다음 ISNUMERIC을 사용하여 다음 중 하나를 확인할 수 있습니다.

SELECT *
  FROM YourImportTable
 WHERE ISNUMERIC(Column1) = 0
    OR ISNUMERIC(Column2) = 0
    OR ISNUMERIC(Column3) = 0

.NET을 벗어나지 않으려는 경우 행을 순환하여 변환 할 수 있습니다.

For Each dr as DataRow in datatable.Rows
   If Not IsNumeric(dr.Item(5))
      ' It's this column
   End If
   If Not IsNumeric(dr.Item(6))
      ' It's this column
   End If
Next


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.