Ejemplo n.º 1
0
        /// <summary>
        /// 批量数据写入
        /// </summary>
        /// <param name="targetTable">源表</param>
        /// <param name="sourceData">目标表</param>
        /// <param name="trans">事务</param>
        /// <returns>返回影响行数</returns>
        public int BulkCopyLocalTransaction(string targetTable, DataTable sourceData)
        {
            Trace.WriteLine(DateTime.Now + ":" + "开始拷贝数据到数据库\n");
            ISqlMapper sqlMap = GetLocalSqlMap();

            try
            {
                System.Threading.Thread.CurrentThread.IsBackground = true;
                var stopwatch = new Stopwatch();
                stopwatch.Start();
                int result = sqlMap.BulkCopyLocalTransaction(targetTable, sourceData);
                stopwatch.Stop();
                Trace.WriteLine(DateTime.Now + ":" + "完成拷贝数据到数据库");
                Trace.WriteLine("拷贝数据记录数:" + result);
                Trace.WriteLine(string.Format("耗时{0}", stopwatch.Elapsed.TotalSeconds));
                System.Threading.Thread.CurrentThread.IsBackground = false;
                return(result);
            }
            catch (Exception e)
            {
                Trace.Write(e.Message + "\n" + e.StackTrace);
                if (sqlMap != null && sqlMap.LocalSession != null && sqlMap.LocalSession.IsTransactionStart)
                {
                    System.Diagnostics.Debug.WriteLine("有事务启动:" + sqlMap.LocalSession.IsTransactionStart);
                }
                System.Threading.Thread.CurrentThread.IsBackground = false;
                //////try
                //////{
                //////    sqlMap.RollBackTransaction(true);
                //////}
                //////catch (Exception ex) { Trace.WriteLine(ex.Message + "\n" + ex.StackTrace); }
                throw new IBatisNetException(
                          "Error executing bulkcopy '" + targetTable + "' for object.  Cause: " + e.Message, e);
            }
        }