数据库是access我的表名是test
有三个字段:ID, PASS,TMP数据源是一个函数叫 zhuanhuan(pass,16)
这个函数将参数pass传进zhuanhuan然后经过内部的算法返回一个值 也就是
tmp:=zhuanhuan(pass,16)
tmp和pass每次都次变的 不重复我想批量插入pass和tmp,但是一条一条的插入效率太慢了我想在每次调用zhuanhuan后 把每次传进去的pass 和生成的tmp 保存下来 积累到一定数量 然后一次性提交
我用的是adoquery 当然adoconnection的代码也可以 先谢谢各位 教我下代码
有三个字段:ID, PASS,TMP数据源是一个函数叫 zhuanhuan(pass,16)
这个函数将参数pass传进zhuanhuan然后经过内部的算法返回一个值 也就是
tmp:=zhuanhuan(pass,16)
tmp和pass每次都次变的 不重复我想批量插入pass和tmp,但是一条一条的插入效率太慢了我想在每次调用zhuanhuan后 把每次传进去的pass 和生成的tmp 保存下来 积累到一定数量 然后一次性提交
我用的是adoquery 当然adoconnection的代码也可以 先谢谢各位 教我下代码
MyCommand.Prepared := True;
MyCommand.Execute;
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分钟左右
当然,access是否支持就不知道了
多谢这位仁兄
但是我有个疑问
就是 pass和tmp都不固定的值 而不是像你那样有规律的写出来
我就这个地方不好搞