c# winform 如何批量更新数据库数据

c# winform 如何批量更新数据库数据,第1张

在处理百万级的数据方面,也不一定需要存储过程,用C#一样可以;ADO.NET提供了常用对象即可解决,就是数据适配器,在处理海量数据的时候,表现还是可圈可点的。先指定参数,接着一个循环,例:for (int i = 0i <100i++)

{

dataset.Tables[0].Rows[i].BeginEdit()

dataset.Tables[0].Rows[i]["time"] = "2222-22-22 22:22:22"

dataset.Tables[0].Rows[i]["value"] = 100

dataset.Tables[0].Rows[i]["id"] = "ID"+(i+10000)

dataset.Tables[0].Rows[i].EndEdit()

}接着一次提交更新就OK了数据适配器.Update(dataset.Tables[0])然后释放资源,把数据集合适配器的资源都释放掉,连接也返回池中。dataset.Tables[0].Clear()

适配器.Dispose

dataset.Dispose要注意的是,你在取记录填充到数据集里面的时候,不要一次去提取100万条,那样你的数据库引擎会不堪重负的。要根据你的硬件配置,每次提取适量的数据,如果配置不是很高,一次提取个500-600就行了,这样很快就能把数据在循环中处理完毕而不是卡到CPU暴涨直到死机。

1、首先,使用Navicat for MySQL连接数据库并创建一个数据库。

2、接着点击查询,这里有两个查询,随便点击一个都可以。

3、既然是要执行SQL语句,所以我们要先新建一个查询窗体才得。

4、写一句SQL语句来演示啦。

5、写完练习的SQL语句,再点击运行按钮,左上方的绿色图标就是。

6、然后记得刷新一下表,在表上面单击右键即可刷新。

CREAT PROCEDURE tester

AS

BEGIN

SET NOCOUNT ON

DECLARE @userId varchar(50)

DECLARE @count int

SET @count = 0

SELECT @count = count(*) FROM UserService_User WHERE Account like '%111%'

WHILE @count >0

BEGIN

SELECT @userId = Id FROM UserService_User WHERE Account like '%111%'

exec UserService_RemoveUserByUserId @userId

SET @count = @count -1

END

END

说明:

1、此存储过程在SQL SERVER 2005上测试通过,值得注意的是,循环体中,语句是使用BEGIN……END包括的,而不是网络上常说的WHILE ……END WHILE结构,其他的循环语句,如LOOP ……UNTIL……END LOOP也不能通过编译,也许是版本的问题,但在SQL SERVER2005中,循环体使用BEGIN……END就可以,而不能使用网络上常说的WHILE ……END WHILE结构。

2、循环体中 UserService_RemoveUserByUserId 是一个存储过程的名称,@userId为该存储过程的参数,如果有多个参数,使用“,”分开就可以了,这也是存储过程调用另一个存储过程的一种方法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6848494.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-29
下一篇 2023-03-29

发表评论

登录后才能评论

评论列表(0条)

保存