原文地址:https://www.cnblogs.com/ShoneH/p/4691454.html
下面的原地址忘了
public bool ExcuteNonQuery(DataTable dt) { string connString = System.Configuration.ConfigurationManager.AppSettings["AEHMS"]; using (SqlConnection connection = new SqlConnection(connString)) { connection.Open(); SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connection); sqlbulkcopy.BulkCopyTimeout = 100; //超时之前操作完成所允许的秒数 sqlbulkcopy.BatchSize = dt.Rows.Count; //每一批次中的行数 sqlbulkcopy.DestinationTableName = dt.TableName; //服务器上目标表的名称 for (int i = 0; i < dt.Columns.Count; i++) { sqlbulkcopy.ColumnMappings.Add(i, i); //映射定义数据源中的列和目标表中的列之间的关系 } sqlbulkcopy.WriteToServer(dt); // 将DataTable数据上传到数据表中 connection.Close(); } return true; }
类 映射成 DataTable
DataTable dt = new DataTable("tb_SensorRecord"); Type elementType = typeof(tb_SensorRecord); elementType.GetProperties().ToList().ForEach(propInfo => dt.Columns.Add(propInfo.Name, Nullable.GetUnderlyingType(propInfo.PropertyType) ?? propInfo.PropertyType));
行 默认赋空值
//默认值赋空 DataRow row = dt.NewRow(); elementType.GetProperties().ToList().ForEach(propInfo => row[propInfo.Name] = DBNull.Value); dt.Rows.Add(row);