c#批量插入數據到數據庫【支持事務操作】

#region   批量插入數據到數據庫
             DateTime startTime;
             private bool SqlBulkCopy(DataTable dt)
             {

                 try
                 {
                     startTime = DateTime.Now;
                     //數據批量導入sqlserver,創建實例     SqlBulkCopyOptions.UseInternalTransaction採用事務   複製失敗自動回滾
                     System.Data.SqlClient.SqlBulkCopy sqlbulk = new System.Data.SqlClient.SqlBulkCopy(System.Configuration.ConfigurationSettings.AppSettings["ConStr"], SqlBulkCopyOptions.UseInternalTransaction);
                     sqlbulk.SqlRowsCopied +=
                     new SqlRowsCopiedEventHandler(OnRowsCopied); //訂閱複製完成後的方法,參數是 sqlbulk.NotifyAfter的值
                     sqlbulk.NotifyAfter = dt.Rows.Count;

                     //目標數據庫表名
                     sqlbulk.DestinationTableName = "T_TempUpLoadTC";
                     //數據集字段索引與數據庫字段索引映射
                     sqlbulk.ColumnMappings.Add(0, "userName");
                     sqlbulk.ColumnMappings.Add(1, "JiFenCount");
                     //導入
                     sqlbulk.WriteToServer(dt);
                     sqlbulk.Close();
                     return true;
                 }
                 catch (Exception ex)
                 {
                     throw new Exception(ex.Message);
                 }
                 finally
                 {
                     dt.Dispose();
                 }
             }
        

             //複製完成後的處理事件
             private void OnRowsCopied(object sender, SqlRowsCopiedEventArgs args)
             {
                 lblCounter.Text += args.RowsCopied.ToString() + " 條記錄已導入";
                 TimeSpan copyTime = DateTime.Now - startTime;
                 lblCounter.Text += "  花費時間:" + copyTime.Seconds.ToString() + "." +
                 copyTime.Milliseconds.ToString() + " 秒";
             }
           #endregion

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章