C#中有時候需要將內存中的數據批量插入到數據庫表中,使用for循環進行批量插入不但耗時而且會頻繁操作數據庫。
針對數據量很少的可以使用for循環插入,但是針對於數據量大的則不推薦使用for循環插入,推薦使用sql的塊處理插入。
塊處理不但耗時少而且不會頻繁對數據庫進行操作,只是需要注意的一點是DataTable中的列必須與表的列完全一致。
如下代碼是批量插入的一個函數,自測可用。
1 #region 使用SqlBulkCopy將DataTable中的數據批量插入數據庫中 2 /// <summary> 3 /// 注意:DataTable中的列需要與數據庫表中的列完全一致。 4 /// 已自測可用。 5 /// </summary> 6 /// <param name="conStr">數據庫連接串</param> 7 /// <param name="strTableName">數據庫中對應的表名</param> 8 /// <param name="dtData">數據集</param> 9 public static void SqlBulkCopyInsert(string conStr, string strTableName, DataTable dtData) 10 { 11 try 12 { 13 using (SqlBulkCopy sqlRevdBulkCopy = new SqlBulkCopy(conStr))//引用SqlBulkCopy 14 { 15 sqlRevdBulkCopy.DestinationTableName = strTableName;//數據庫中對應的表名 16 sqlRevdBulkCopy.NotifyAfter = dtData.Rows.Count;//有幾行數據 17 sqlRevdBulkCopy.WriteToServer(dtData);//數據導入數據庫 18 sqlRevdBulkCopy.Close();//關閉連接 19 } 20 } 21 catch (Exception ex) 22 { 23 throw (ex); 24 } 25 } 26 #endregion
