原文地址: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);