ADO.NET-插入多條記錄(用SqlBulkCopy類)

/// <summary>
        /// 批量複製
        /// </summary>
        /// <param name="connectionString">目標表的數據庫連接字符串</param>
        /// <param name="sourceTable">原表</param>
        /// <param name="destinationTable">目標表名</param>
        public static void ExecuteBulkCopy(string connectionString, DataTable sourceTable, string destinationTable)
        {
            using (SqlConnection sqlconn = new SqlConnection(connectionString))
            {
                sqlconn.Open();
                using (SqlBulkCopy sbc = new SqlBulkCopy(sqlconn))
                {
                    sbc.BatchSize = 1000;
                    sbc.BulkCopyTimeout = 180;

                    //將DataTable表名作爲待導入庫中的目標表名  
                    sbc.DestinationTableName = destinationTable;

                    //將數據集合和目標服務器庫表中的字段對應  
                    for (int i = 0; i < sourceTable.Columns.Count; i++)
                    {
                        //列映射定義數據源中的列和目標表中的列之間的關係
                        sbc.ColumnMappings.Add(sourceTable.Columns[i].ColumnName, sourceTable.Columns[i].ColumnName);
                    }

                    sbc.WriteToServer(sourceTable);
                }
                sqlconn.Close();
            }
        }

        /// <summary>
        /// 批量複製
        /// </summary>
        /// <param name="trans">事務</param>
        /// <param name="sourceTable">數據源</param>
        /// <param name="destinationTable">目標表名</param>
        public static void ExecuteBulkCopy(SqlTransaction trans, DataTable sourceTable, string destinationTable)
        {
            using (SqlBulkCopy sbc = new SqlBulkCopy(trans.Connection, SqlBulkCopyOptions.KeepIdentity, trans))
            {
                sbc.BatchSize = 1000;
                sbc.BulkCopyTimeout = 180;

                //將DataTable表名作爲待導入庫中的目標表名  
                sbc.DestinationTableName = destinationTable;

                //將數據集合和目標服務器庫表中的字段對應  
                for (int i = 0; i < sourceTable.Columns.Count; i++)
                {
                    //列映射定義數據源中的列和目標表中的列之間的關係
                    sbc.ColumnMappings.Add(sourceTable.Columns[i].ColumnName, sourceTable.Columns[i].ColumnName);
                }

                sbc.WriteToServer(sourceTable);
            }
        }

發佈了73 篇原創文章 · 獲贊 6 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章