2010-07-27 2 views
0

У меня есть строго типизированный набор данных, содержащий данные с одним из столбцов в виде столбца byte [], который я пытаюсь вставить в поле таблицы базы данных (4). Я могу установить значения столбца байта [] без каких-либо проблем, но при запуске sqlbulkcopy на datatable я получаю следующее исключение:SqlBulkCopy with Byte [] Ошибка столбца DataTable

«Данное значение типа Int32 из источника данных не может быть преобразовано в тип двоичный код указанного целевого столбца. "

Datatable - это большой тип данных, и sqlbulkcopy отлично работает с таблицей данных и таблицы базы данных минус столбцы []/binary (4). Ниже приведен код, который я вставил, который разбивает SqlBulkCopy с помощью .NET 2.0.

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. Реорганизация данных была намного проще и быстрее.

Смежные вопросы