{
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 testerAS
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为该存储过程的参数,如果有多个参数,使用“,”分开就可以了,这也是存储过程调用另一个存储过程的一种方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)