SqlBulkCopy与Byte [] DataTable列错误

时间:2010-07-27 21:24:27

标签: c# bytearray strongly-typed-dataset sqlbulkcopy

我有一个强类型数据集,其中包含一个数据表,其中一列作为byte []列,我试图插入二进制(4)数据库表字段。我能够毫无问题地设置byte []列值,但是当我在数据表上运行sqlbulkcopy时,我收到以下异常:

“数据源中Int32类型的给定值无法转换为指定目标列的二进制类型。”

数据表是一个大数据表,sqlbulkcopy可以正常工作,数据表和数据库表减去byte [] / 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();
}

1 个答案:

答案 0 :(得分:1)

我发现了我的问题。我的数据表中的Byte []列与相应的数据库列序号不在相同的序号位置。数据表列序号为56,而数据库列序号为8,因此需要重新组织数据表或sqlbulkcopy的列映射。重新组织数据表更加容易和快捷。