2010-07-27 33 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的列映射。重新組織數據表要容易和快速。