我有一个强类型数据集,其中包含一个数据表,其中一列作为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();
}
答案 0 :(得分:1)
我发现了我的问题。我的数据表中的Byte []列与相应的数据库列序号不在相同的序号位置。数据表列序号为56,而数据库列序号为8,因此需要重新组织数据表或sqlbulkcopy的列映射。重新组织数据表更加容易和快捷。