Example #1
0
        /// <summary>
        /// 批量插入数据
        /// </summary>
        /// <param name="constring"></param>
        /// <param name="dt"></param>
        /// <returns></returns>
        public bool BulkToDB(DataTable dt)
        {
            try
            {
                string constring = DBO.GetConStr();

                //声明SqlBulkCopy ,using释放非托管资源
                using (SqlBulkCopy sqlBC = new SqlBulkCopy(constring))
                {
                    //一次批量的插入的数据量
                    sqlBC.BatchSize = 3000;

                    //超时之前操作完成所允许的秒数,如果超时则事务不会提交 ,数据将回滚,所有已复制的行都会从目标表中移除
                    sqlBC.BulkCopyTimeout = 60;

                    //设置要批量写入的表
                    sqlBC.DestinationTableName = "TB_DayRepotTemp";


                    //将dt的列名改为数据库字段名
                    //for (int i = 0; i < dt.Columns.Count; i++)
                    //{
                    //    dt.Columns[i].ColumnName = dt.Rows[0][i].ToString();
                    //}
                    dt.Columns[0].ColumnName = "宿舍区";
                    dt.Columns[1].ColumnName = "入住级别";
                    dt.Columns[2].ColumnName = "项目";
                    dt.Columns[3].ColumnName = "数量";
                    dt.Columns[4].ColumnName = "CheckInDate";
                    dt.Columns[5].ColumnName = "CreateUser";


                    //自定义的OleDbDataReader和数据库的字段进行对应
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        sqlBC.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
                    }

                    //删除数据库字段行
                    //dt.Rows.RemoveAt(0);

                    //批量写入
                    sqlBC.WriteToServer(dt);

                    return(true);
                }
            }
            catch (Exception ex)
            {
                return(false);

                throw ex;
            }
        }