首页 新闻 搜索 专区 学院

循环插入数据

0
悬赏园豆:5 [已解决问题] 解决于 2013-10-30 17:10

WebReference.IHotelService myclient = new WebReference.IHotelService();
object dateinfo = myclient.getHotelDataInfoList();

 

object获取了一个数据集,里面有8000多条数据,怎么把这个数据集循环插入到SQL表里面??求教。。

次时代的主页 次时代 | 初学一级 | 园豆:5
提问于:2013-10-30 15:35
< >
分享
最佳答案
0

使用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();
                }
            }
        }

收获园豆:5
雾静 | 小虾三级 |园豆:561 | 2013-10-30 15:50
其他回答(2)
0

dateinfo  转换成 对应的类型 然后循环 就可以把

hpze2000 | 园豆:109 (初学一级) | 2013-10-30 15:48

贴点代码、

支持(0) 反对(0) 次时代 | 园豆:5 (初学一级) | 2013-10-30 15:48

@次时代: 这个代码 要看你 的object 具体是什么类型啊  比如 是datatable 还是 list 之类的

把他转换后

【.NET】C#中遍历各类数据集合的方法

http://www.cnblogs.com/youuuu/archive/2011/06/25/2090117.html

 

支持(0) 反对(0) hpze2000 | 园豆:109 (初学一级) | 2013-10-30 16:21
0

如果是一个集合,就循环,添加到数据表 就行了!比如:通过StringBuilder拼接,这样比较快

秋壶冰月 | 园豆:5450 (大侠五级) | 2013-10-30 16:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册