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