网站批量导入数据到Sql

最近论坛里面经常有人问到这个问题,刚好我的项目也用到这个功能,从网上收集了一些资料,也整理了下!供大家参考!

 

两种方式:

1,SqlBulkCopy 类
使您可以用其他源的数据有效批量加载 SQL Server 表。

 属性:
   名称            说明
 BatchSize         每一批次中的行数。在每一批次结束时,将该批次中的行发送到服务器。 
 BulkCopyTimeout   超时之前操作完成所允许的秒数。 
 ColumnMappings    返回 SqlBulkCopyColumnMapping 项的集合。列映射定义数据源中的列和目标表中                     的列之间的关系。  
 NotifyAfter       定义在生成通知事件之前要处理的行数。
 DestinationTableName 服务器上目标表的名称。
 
 方法:
   WriteToServer 已重载. 将所有行从数据源复制到 SqlBulkCopy 对象的 DestinationTableName 属性指定的目标表中。
  重载列表:
 名称                                  说明
 WriteToServer(array<DataRow>[]()[])   将所提供的 DataRow 数组中的所有行复制到 SqlBulkCopy                                         对象的 DestinationTableName 属性指定的目标表中。 

 WriteToServer(DataTable)              将所提供的 DataTable 中的所有行复制到 SqlBulkCopy 对                                         象的 DestinationTableName 属性指定的目标表中。 

 WriteToServer(IDataReader)            将所提供的 IDataReader 中的所有行复制到 SqlBulkCopy                                          对象的 DestinationTableName 属性指定的目标表中。 

 WriteToServer(DataTable,DataRowState) 只将与所提供 DataTable 中所提供行状态匹配的行复制                                            到SqlBulkCopy 对象的 DestinationTableName 属性
                                       指定的目标表中。
 
##IDataReader 接口:: 提供一种方法来读取一个或多个通过在数据源执行命令所获得的只进结果集流,这是由访问关系数据库的 .NET Framework 数据提供程序实现的。
  使用IDataReader 和 IDataRecord 接口可以通过继承类实现 DataReader 类,该类提供一种读取结果集的一个或多个只进流的方法

SqlBulkCopy..::.ColumnMappings 属性
类型:System.Data.SqlClient..::.SqlBulkCopyColumnMappingCollection
列映射集合。默认情况下为空集合。
如果数据源和目标表具有相同的列数,并且数据源中每个源列的序号位置匹配相应目标列的序号位置,则无需 ColumnMappings 集合。但是如果列计数不同,或序号位置不一致,则必须使用 ColumnMappings,以确保将数据复制到正确的列中。
在执行批量复制操作期间,可以访问此集合,但不能进行更改。任何更改尝试都将引发 InvalidOperationException。


SqlDataReader 类
提供一种从 SQL Server 数据库读取行的只进流的方式。无法继承此类。
若要创建 SqlDataReader,必须调用 SqlCommand 对象的 ExecuteReader 方法,而不要直接使用构造函数。
 方法:
 //GetName 获取指定列的名称。 
 //Read    使 SqlDataReader 前进到下一条记录。

应网友要求,再增加一个批量更新的方法,其实跟批量插入差不多,批量删除我就不行了,举一返三!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值