问题一
为什么这样做不行?
ADOQuery1.LockType:=ltBatchOptimistic;
 For循环1500次
   Sql.Add('Insert   into   Address   Values')
   ……
ADOQuery1.UpdateBatch;
执行出错,好像是数据集不支持这样操作,难道只有update才能用批量更新吗?
问题二
大约每次插入1500条数据,怎样做速度快效率高

解决方案 »

  1.   


    方案有两个:
    1、你可以把你的SQL语句串起来strSQL := StrSQL + 'Insert  into  Address  Values';2、批量执行。
    批量执行需要Append;
    然手Post;最后执行UpdateBatch(arAll);
      

  2.   

    2、批量执行。 
    批量执行需要Append; 
    然手Post; 最后执行UpdateBatch(arAll); 请问怎么批量执行Append,你举个简单的例子吗?
      

  3.   

    要提高执行效率的话,Sql.Add('Insert  into  Address  Values')移到循环外边,Sql.Add字符串处理还是比较费时间的。
    比如ADOQuery1.Sql.Add('Insert  into 表名 ([字段])  Values(=:变量)');
    for i:=1 to 1500 do
    begin
      ADOQuery1.Parameters.paramByName('变量') := 每次一个新值;
      ADOQuery1.ExecSQL;
      ADOQuery1.Close;
    end;
    另外1楼有第二种方法的实际代码段吗?批量执行需要Append; 
    然手Post; 
    最后执行UpdateBatch(arAll);
      

  4.   


    你的答案我试过了很好,还有一个问题UpdateBatch只用用于批量修改吗?对于Insert不能用?
      

  5.   

    Append后可以批量提交新增.可以肯定的是,没上面的快
      

  6.   

    Append/Post/UpdateBatch(arAll)
    这个我也不太懂,期待高人回答