2010-07-27 5 views
0

이진 (4) 데이터베이스 테이블 필드에 삽입하려는 byte [] 열로 열 중 하나가있는 데이터 테이블을 포함하는 강력한 형식의 데이터 집합이 있습니다. 바이트 [] 열 값을 아무 문제없이 설정할 수 있지만 데이터 테이블에서 sqlbulkcopy를 실행할 때 다음 예외가 발생합니다.SqlBulkCopy with Byte [] DataTable 열 오류

"데이터 소스의 Int32 유형의 지정된 값을 입력 할 수 없습니다. 지정된 대상 열의 2 진수입니다. "

데이터 테이블은 대형 데이터 테이블이며 sqlbulkcopy는 데이터 테이블과 데이터베이스 테이블에서 바이트 []/binary (4) 열을 제외한 값으로 잘 작동합니다. 다음은 .NET 2.0을 사용하여 SqlBulkCopy를 깨는 코드입니다.

byte[] codeByteArray = GetByteArray(); 
dt.byteArrayCol = codeByteArray; 

... 

using(SqlBulkCopy bc = new SqlBulkCopy(conn)) 
{ 
    bc.DestinationTableName = dt.TableName; 
    bc.WriteToServer(dt); 
    bc.Close(); 
} 
+0

DataTable을 만들 수 있습니까? –

답변

1

문제점을 발견했습니다. 내 데이터 테이블의 Byte [] 열이 해당 데이터베이스 열 서수와 같은 서수 위치에 있지 않습니다. datatable 열 서수는 56이고 데이터베이스 열 서수는 8이므로 재구성해야하는 데이터 테이블이나 sqlbulkcopy의 열 매핑 중 하나입니다. 데이터 테이블을 재구성하는 것이 훨씬 쉽고 빠릅니다.