C# 將DataTable表中的數據批量插入到數據庫表中的方法


C#中有時候需要將內存中的數據批量插入到數據庫表中,使用for循環進行批量插入不但耗時而且會頻繁操作數據庫。 針對數據量很少的可以使用for循環插入,但是針對於數據量大的則不推薦使用for循環插入,推薦使用sql的塊處理插入。 塊處理不但耗時少而且不會頻繁對數據庫進行操作,只是需要注意的一點是DataTable中的列必須與表的列完全一致。 如下代碼是批量插入的一個函數,自測可用。 

#region 使用SqlBulkCopy將DataTable中的數據批量插入數據庫中 
        /// <summary> 
        /// 注意:DataTable中的列需要與數據庫表中的列完全一致。
        /// 已自測可用。
        /// </summary> 
        /// <param name="conStr">數據庫連接串</param>
        /// <param name="strTableName">數據庫中對應的表名</param> 
        /// <param name="dtData">數據集</param> 
        public static void SqlBulkCopyInsert(string conStr, string strTableName, DataTable dtData)
        {
            try
            {
                using (SqlBulkCopy sqlRevdBulkCopy = new SqlBulkCopy(conStr))//引用SqlBulkCopy 
                {
                    sqlRevdBulkCopy.DestinationTableName = strTableName;//數據庫中對應的表名 
                    sqlRevdBulkCopy.NotifyAfter = dtData.Rows.Count;//有幾行數據 
                    sqlRevdBulkCopy.WriteToServer(dtData);//數據導入數據庫 
                    sqlRevdBulkCopy.Close();//關閉連接 
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }
        #endregion
View Code
#region 使用SqlBulkCopy將DataTable中的數據批量插入數據庫中 
        /// <summary> 
        /// 注意:DataTable中的列需要與數據庫表中的列完全一致。
        /// 已自測可用。
        /// </summary> 
        /// <param name="conStr">數據庫連接串</param>
        /// <param name="strTableName">數據庫中對應的表名</param> 
        /// <param name="dtData">數據集</param> 
        public static void SqlBulkCopyInsert(string conStr, string strTableName, DataTable dtData)
        {
            try
            {
                using (SqlBulkCopy sqlRevdBulkCopy = new SqlBulkCopy(conStr))//引用SqlBulkCopy 
                {
                    sqlRevdBulkCopy.DestinationTableName = strTableName;//數據庫中對應的表名 
                    sqlRevdBulkCopy.NotifyAfter = dtData.Rows.Count;//有幾行數據 
                    sqlRevdBulkCopy.WriteToServer(dtData);//數據導入數據庫 
                    sqlRevdBulkCopy.Close();//關閉連接 
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }
        #endregion
View Code

 


免責聲明!

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



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