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


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

事因:因業務需要在數據表中添加兩列,然后將數據插入進表中

之前都是這樣寫的

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

然后再一一賦值

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

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

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

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

於是自己也將代碼中的列順序一一都與數據表順序對應起來,另外就算代碼中用不到的列名,也要在代碼中定義好寫出來只要不賦值就可以了。要不然還是無法插入數據,還會報錯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM