向SQL数据库中插入多条数据(最多插入100条数据):
现在的做法:在程序中用循环插入,但数据多了就不很理想,而且服务器压力也很大.想法:调用一次存储过程插入所有的数据,但不知这个存储过程该怎么写,主要该如何接受参数?谁还有更好的方法吗?
还有一个问题:能不能在插入失败时,数据不丢失!

解决方案 »

  1.   

    插入多条可以 
    insert into table (aa,bb) select aa,bb from table2 where ....
      

  2.   

    传递参数
    SqlParameter[] 批处理
    insert into Tb(name) values(@name)
      

  3.   


    insert into table (aa,bb) select aa,bb from table2
      

  4.   

    数据库:SQL SERVER 2005
    是在程序中处理还是在存储中处理呢?我现在是在程序中用循环添加的,每循环一次都要建立一次数据库连接,感觉不好
    如果是存储过程,该如何接受参数?比如: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'不知该这个存储过程该怎么写. 这样写在程序中就只调用一次了.
      

  5.   


    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 参考
      

  6.   

    可以把一百条要执行的语句放进数组,在一个trans里循环执行后commit。也可以建立存储过程,在一个connection里重复执行。
      

  7.   

    可否把这一百多条的插入语句形成一个SQL字符串,一次性执行,而且也方便进行事务管理。
     
        string SQL="insert into tab(a,b) values("aa","bb");
        SQL+="insert into tab(a,b) values("cc","dd");
        cmd.ExecuteNoQuery(SQL);
      

  8.   

    或者把连接好的字符串直接通过存储过程进行动态SQL执行即可
      

  9.   

    思路
    1.把要插入的数据最为字符串一次性传给存储过程
    2.在存储过程中实现类型split的功能,再循环插入数据表
      

  10.   


    TbAdd'1,2,3,4,5''a,b,c,d,e' ----〉如这样有规律的数据,完全可以给存储过程传一个参数,然后再存储过程里循环就可以,事务可以保证数据不丢失啊,要是你的数据从一个表table里来的,那在存储过程处理更简单了
      

  11.   

    我想在Oracle中用PL/SQL一次插入5000条的sql语句呢,怎么写哇~~~