2010-07-27 53 views
0

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

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

数据表是一个很大的数据表,并且sqlbulkcopy可以在数据表和数据库表减去字节[] /二进制(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的创建? – 2010-07-27 21:31:36

回答

1

我发现我的问题。我的数据表中的Byte []列与相应的数据库列序号不在同一序号位置。 datatable列序号为56,而数据库列序号为8,因此无论是需要重新组织的数据表还是sqlbulkcopy的列映射。重新组织数据表要容易和快速。