/// <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; } }