SqlBulkCopy 的使用问题。

lzc2125 2013-06-18 05:23:34
程序要进行的大数据量的更新或者插入,以前使用的是SqlDataAdapter的update来实现的。
现在为了提高效率,想使用SqlBulkCopy 的WriteToServer来实现。

有以下问题咨询一下大家。
1,WriteToServer相比SqlDataAdapter的update,有什么缺点?或者使用的注意事项?
2,WriteToServer更新时,如果其中一条数据有问题,更新失败,是不是所有的数据都不更新?
3,WriteToServer还能知道更新了多少条数据啊?类似update的返回值。

谢谢回答了,万分感谢
...全文
383 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
张春雷 2013-07-05
  • 打赏
  • 举报
回复
第二条可以用上数据库的事物,要么全做要么全部做,这样就能解决插入一半报错的问题,很好用的,之后再做数据验证,这样可以
Andy__Huang 2013-07-05
  • 打赏
  • 举报
回复
SqlBulkCopy.WriteToServer 方法 将所有行从数据源复制到 SqlBulkCopy 对象的 DestinationTableName 属性指定的目标表中。 参考: http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlbulkcopy.writetoserver.aspx
dengixnyu 2013-07-02
  • 打赏
  • 举报
回复
之前搞错了。最近又看了下 1、new sqlbulkcopy的时候,里面有重载方法,可以使用事物。 SqlBulkCopyOptions.UseInternalTransaction 这是个枚举 2. sqlbulk.SqlRowsCopied +=new SqlRowsCopiedEventHandler(OnRowsCopied) 可以添加事件 private void OnRowsCopied(object sender, SqlRowsCopiedEventArgs args) { args里面就能取到受影响行数 }
lzc2125 2013-07-02
  • 打赏
  • 举报
回复
引用 3 楼 dengixnyu 的回复:
1、效率确实高。一般导入的时候很好用。 2、要跟后台数据源的里面的列名一一匹配就好了。,有一条失败,前面的会插进去的。 3、没有带返回值的方法。。。(要知道插入了多少,通常都在查一次吧。。) 应该是我之前写的 就是为了纯粹导入,很多地方没有判断,处理不够吧
这个方法确实不错,速度快多了! 谢谢回答
dengixnyu 2013-06-20
  • 打赏
  • 举报
回复
1、效率确实高。一般导入的时候很好用。 2、要跟后台数据源的里面的列名一一匹配就好了。,有一条失败,前面的会插进去的。 3、没有带返回值的方法。。。(要知道插入了多少,通常都在查一次吧。。) 应该是我之前写的 就是为了纯粹导入,很多地方没有判断,处理不够吧
KevinLiu 2013-06-20
  • 打赏
  • 举报
回复
没尝试过,顶一下,期待高手
Blessed_Chuan 2013-06-20
  • 打赏
  • 举报
回复
帮顶一下 没用过WriteToServer

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧