数据库是access我的表名是test
有三个字段:ID, PASS,TMP数据源是一个函数叫 zhuanhuan(pass,16)
 
这个函数将参数pass传进zhuanhuan然后经过内部的算法返回一个值 也就是
tmp:=zhuanhuan(pass,16)
tmp和pass每次都次变的 不重复我想批量插入pass和tmp,但是一条一条的插入效率太慢了我想在每次调用zhuanhuan后 把每次传进去的pass 和生成的tmp 保存下来  积累到一定数量 然后一次性提交
我用的是adoquery     当然adoconnection的代码也可以 先谢谢各位  教我下代码

解决方案 »

  1.   

    我说的也是一条一条插入,不用adoquery,改用adocommandMyCommand.CommandText := DDLString;
    MyCommand.Prepared := True;
    MyCommand.Execute;
      

  2.   

    实质上就是将数据转换为后台SQL语句,再由后台执行而已
    1.首先,你要了解后台SQL批量INSERT的语句
    例如:MySQL就是
    insert into (id,pass,tmp)
    (1,1,1),(2,2,2),(3,3,3)...(n,n,n)
    2.第二,将你的数据按指定格式写入一个Tstringlist
    //实际就是拼接字符串而已
    3.将Tstringlist赋值到TAdoQuery.SQL.Text,执行就可以。
    4.如果数据量很大,可以将第2,3点分批操作。
    例如:插入100000条数据,每次插入1000条(重复第2,3点),循环(100000/1000)次逐条插入和批量插入的效率有很大差别,测试过MySQL,1.5W条批量插入35秒左右,逐条插入要15分钟左右
      

  3.   

    adoquery、adoconnection都可以一次性执行一个较大的sql(包含很多个insert语句)
    当然,access是否支持就不知道了
      

  4.   

     不了解ACCESS, ORACLE 是可以做到的
      

  5.   


    多谢这位仁兄
    但是我有个疑问
    就是  pass和tmp都不固定的值  而不是像你那样有规律的写出来
    我就这个地方不好搞