使用SqlBulkCopy進行批量插入數據時踩過的坑

以前一直都沒用過SqlBulkCopy關鍵字進行數據插入,更沒了解過。數據庫

事因:因業務須要在數據表中添加兩列,而後將數據插入進表中spa

以前都是這樣寫的排序

  dt.Columns.Add(new DataColumn("sComment", typeof(string))); 等等一一寫出索引

而後再一一賦值string

dt.Rows[i]["sComment"] = tempBill.sComment;數據

但是我將我那兩列定義好也賦了值,要麼異常要麼就不往表中插入數據。異常

一直覺得是Linq映射的問題,後來逛了下CSDN才知道 SqlBulkCopy 使用是有要求的,它不是以你所寫的列名去表中自動對應的,而是以列有索引順序與你寫的代碼中的列去對應的。如下是別人在CSDN上的回覆:co

SqlBulkCopy不是根據表的ColumnName來匹配的,而是根據ColumnIndex匹配,
也就是說你的表 字段必須跟數據庫的表字段徹底一致(Index的排序要跟數據表的同樣)。
就算你該字段不打算給他插入值,也要建個DataColumn。包括自增ID.不須要給他值就行了new

因而本身也將代碼中的列順序一一都與數據表順序對應起來,另外就算代碼中用不到的列名,也要在代碼中定義好寫出來只要不賦值就能夠了。要否則仍是沒法插入數據,還會報錯。

相關文章
相關標籤/搜索