请教Insert同时Update 并行处理方法

ziyan4444 2012-08-20 10:38:58
我的问题是:
在.NET GridView表格中录入100条表格数据,需要去数据库中更新这100条的相关数据,也有可能多于100条。

方法一、用.NET程序遍历这100条,每读取一条,就去操作一次数据库,进行INSERT 、UPDATE等。

方法二、写一个SP存储十字路口,在.NET程序中将100条数据打包传送进 SP,在SP中循环遍历,进行INSERT 、UPDATE等。


请教哪一种方法是比较正确、或者是比较常用的呢?
还是大牛们有更正确的处理方式呢?
...全文
534 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
筱筱澄 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 1 楼 的回复:

当然是第二个好了,第一个你要打开 断开100次数据库连接,这个多耗时耗力

不过也可以不需要去循环遍历操作,除非你的业务非常复杂。

你想些描述一下看看

我的业务很简单,就是GridView中录入了产品的ID,和入库数量,将录入的数据保存进来,
一、增加入库记录
二、更新相关产品ID的库存
[/Quote]
用存储过程来搞吧

如果是08的话你可以定义一个表类型

CREATE TYPE LocationTableType AS TABLE
( LocationName VARCHAR(50)
, CostRate INT )
GO

直接传入datatable的数据

然后使用merge语句进行insert 或者update

大大的提高的效率和代码简洁性。
ws_hgo 2012-08-20
  • 打赏
  • 举报
回复
建议使用第二种
将这100条记录生成一个XML传入到SP中
  • 打赏
  • 举报
回复
明显是第二种,尽量减少.NET与数据库操作的次数。把要更新的数据转化为xml类型的参数传给存储,然后通过存储解析xml数据为table,最后根据这个table更新数据库中的表
ziyan4444 2012-08-20
  • 打赏
  • 举报
回复
因为看到有些朋友说,不要用太多存储过程,我怕我用多了变成滥用了。
ziyan4444 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

当然是第二个好了,第一个你要打开 断开100次数据库连接,这个多耗时耗力

不过也可以不需要去循环遍历操作,除非你的业务非常复杂。

你想些描述一下看看
[/Quote]
我的业务很简单,就是GridView中录入了产品的ID,和入库数量,将录入的数据保存进来,
一、增加入库记录
二、更新相关产品ID的库存
zhazhuzhao 2012-08-20
  • 打赏
  • 举报
回复
第二种 方法要好一些,主要是节省了交互的时间;第一种方式如下:第一条执行OK,返回OK,然后执行第二条,再返回OK,以此类推;第二种,第一天执行OK,执行第二条,再执行第三条,全部好了后,返回OK。
筱筱澄 2012-08-20
  • 打赏
  • 举报
回复
当然是第二个好了,第一个你要打开 断开100次数据库连接,这个多耗时耗力

不过也可以不需要去循环遍历操作,除非你的业务非常复杂。

你想些描述一下看看
shoppo0505 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
第一种方法,但是一次性生成含近百个sql的大sql语句,一次性提交
[/Quote]
+1.
建议使用第一种方法,但是每次提交的时候,提交一个sql集合,然后一次性执行。
第二种方法也行,但是存储过程在调用的时候相对会比较麻烦。

提示:
Gridview的Row有一个RowState属性的,分别对应create, update, delete等,建立sql命令的时候,判断一下,避免提交不需要的数据。
haitao 2012-08-20
  • 打赏
  • 举报
回复
第一种方法,但是一次性生成含近百个sql的大sql语句,一次性提交

27,579

社区成员

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

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