向SQL数据库中插入多条数据(最多插入100条数据):
现在的做法:在程序中用循环插入,但数据多了就不很理想,而且服务器压力也很大.想法:调用一次存储过程插入所有的数据,但不知这个存储过程该怎么写,主要该如何接受参数?谁还有更好的方法吗?
还有一个问题:能不能在插入失败时,数据不丢失!
现在的做法:在程序中用循环插入,但数据多了就不很理想,而且服务器压力也很大.想法:调用一次存储过程插入所有的数据,但不知这个存储过程该怎么写,主要该如何接受参数?谁还有更好的方法吗?
还有一个问题:能不能在插入失败时,数据不丢失!
insert into table (aa,bb) select aa,bb from table2 where ....
SqlParameter[] 批处理
insert into Tb(name) values(@name)
insert into table (aa,bb) select aa,bb from table2
是在程序中处理还是在存储中处理呢?我现在是在程序中用循环添加的,每循环一次都要建立一次数据库连接,感觉不好
如果是存储过程,该如何接受参数?比如:CREATE PROC [dbo].[TbAdd]
(
@id INT
,@name INT
)
AS
WHILE //条件不知怎么写,不知道有多少条
BEGIN
INSERT INTO tb1 values()
ENDexec TbAdd '1,2,3,4,5' 'a,b,c,d,e'不知该这个存储过程该怎么写. 这样写在程序中就只调用一次了.
create table #temp
(
ss varchar(200) not null
)
declare @str varchar(200)
declare @result varchar(1000)
set @str='aaa,bb,c,d,e,ffffff'
set @result =' insert into #temp(ss) select '''+replace(@str,',','''union select''')+''''
exec(@result)
select * from #temp 参考
string SQL="insert into tab(a,b) values("aa","bb");
SQL+="insert into tab(a,b) values("cc","dd");
cmd.ExecuteNoQuery(SQL);
1.把要插入的数据最为字符串一次性传给存储过程
2.在存储过程中实现类型split的功能,再循环插入数据表
TbAdd'1,2,3,4,5''a,b,c,d,e' ----〉如这样有规律的数据,完全可以给存储过程传一个参数,然后再存储过程里循环就可以,事务可以保证数据不丢失啊,要是你的数据从一个表table里来的,那在存储过程处理更简单了