WebReference.IHotelService myclient = new WebReference.IHotelService();
object dateinfo = myclient.getHotelDataInfoList();
object获取了一个数据集,里面有8000多条数据,怎么把这个数据集循环插入到SQL表里面??求教。。
使用SqlBulkCopy批量插入数据,既然你已经得到了Object有8000条数据,所以他就可以转换成集合。以下是示例,希望对您有帮助。
以上没有使用事务,使用事务在性能上会有一定的影响,如果要使用事务,可以设置SqlBulkCopyOptions.UseInternalTransaction。
public void Insert(DataTable dataTable, int batchSize = 10000)
{
Checker.ArgumentNull(dataTable, "dataTable");
if (dataTable.Rows.Count == 0)
{
return;
}
using (var connection = (SqlConnection)ServiceContext.Database.CreateConnection())
{
try
{
connection.TryOpen();
//给表名加上前后导符
var tableName = DbUtility.FormatByQuote(ServiceContext.Database.Provider.GetService<ISyntaxProvider>(), dataTable.TableName);
using (var bulk = new SqlBulkCopy(connection, SqlBulkCopyOptions.KeepIdentity, null)
{
DestinationTableName = tableName,
BatchSize = batchSize
})
{
//循环所有列,为bulk添加映射
dataTable.EachColumn(c => bulk.ColumnMappings.Add(c.ColumnName, c.ColumnName), c => !c.AutoIncrement);
bulk.WriteToServer(dataTable);
bulk.Close();
}
}
catch (Exception exp)
{
throw new BatcherException(exp);
}
finally
{
connection.TryClose();
}
}
}
dateinfo 转换成 对应的类型 然后循环 就可以把
贴点代码、
@次时代: 这个代码 要看你 的object 具体是什么类型啊 比如 是datatable 还是 list 之类的
把他转换后
http://www.cnblogs.com/youuuu/archive/2011/06/25/2090117.html
如果是一个集合,就循环,添加到数据表 就行了!比如:通过StringBuilder拼接,这样比较快