SqlBulkCopy с байтом [] Ошибка столбца DataTable - PullRequest
0 голосов
/ 28 июля 2010

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

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

Таблица данных представляет собой большую таблицу данных, и sqlbulkcopy прекрасно работает с таблицей данных и таблицей базы данных, за исключением столбцов byte [] / 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();
}

1 Ответ

1 голос
/ 28 июля 2010

Я обнаружил свою проблему. Столбец Byte [] в моей таблице данных не был в той же порядковой позиции, что и порядковый номер соответствующего столбца базы данных. Порядковый номер столбца данных составлял 56, в то время как порядковый номер столбца базы данных был 8, таким образом, либо таблица данных должна быть реорганизована, либо отображение столбца для sqlbulkcopy. Реорганизация таблицы данных была намного проще и быстрее.

...