日期:2014-05-18  浏览次数:20591 次

如何一次性插入或更新多行数据
程序是基于C/S模型的 里面有个功能需要插入或更新连续60行记录,比如ID100-160,由于数据库在服务器上,如果简单的进行循环插入或更新,会延迟非常厉害,不知道有没办法避免

------解决方案--------------------
拼接插入或更新语句,一次性传到服务器执行.
------解决方案--------------------
还可以从服务器获取一个空的recordset,用recordset.add方法添加记录,然后用 update 方法执行.
------解决方案--------------------
你在程序里将插入或更新的SQL字符串循环拼接后,然后连接数据库直接一次性执行。
------解决方案--------------------
可以些存储过程拼接字符串 然后在程序中调用。
------解决方案--------------------
60行就延迟得厉害了
------解决方案--------------------
先在数据集中修改,比如我做过C#的,在DataSet中先进行操作.然后一次性更新到数据库
------解决方案--------------------
update tableA set tableA.xx=xx,.....
where id between xx and xx
------解决方案--------------------
探讨
语句拼接和用记录集一次性操作 哪一种效率更高

------解决方案--------------------
1、从SqlServer考虑,可以用BCP命令,批量导入数据,但BCP只能在本地执行!
SQL code

EXEC master..xp_cmdshell 'BCP PMS.dbo.table1 in c:\table1.txt -c -t";" -r"\n\r" -S"Fred" ' 

 EXEC master..xp_cmdshell  'bcp "testdb.dbo.test" out "C:\123.txt" -c -q -U"sa" -P"sa"'



EXEC   master..xp_cmdshell   'bcp   testdb.dbo.test in  "c:\test1.txt" -F 2  -c   -t";"  -r"\n" -k  -U"sa" -P"sa" '

EXEC master..xp_cmdshell 'BCP AdventureWorks.sales.currency format nul -f c:\currency_format1.fmt -c -T'

------解决方案--------------------
探讨

语句拼接和用记录集一次性操作 哪一种效率更高