比如
strSQL := 'Update emp set ename = ''haha'' where empno = '1235'';
strSQL := 'Update emp set ename = ''hoho'' where empno = '1236'';
strSQL := 'Update emp set ename = ''hehe'' where empno = '1237'';
strSQL := 'Update emp set ename = ''hihi'' where empno = '1238'';
对TQuery什么样的操作可以把这些SQL语句一次更新到数据库呢?
JAVA里面好象是先调用Prepare方法.最后调用Execult方法可以批处理的.
谢谢老大^^

解决方案 »

  1.   

    没有用过批处理,只是一条一条执行sql,完毕就可以
    用事务,不用Tadoquery等组件:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       adoconnection1.begintrans;
       try
          adoconnection1.execute(update 语句);
          如果还有insert 语句则:
          adoconnection1.execute(update 语句);直到所有update语句完成.
          adoconnection1.committrans;
       except
          adoconnection1.rollbacktrans;
       end;  
    end;
      

  2.   

    说的更通俗一点就是
    SQL Server支持一次执行多条SQL语句的,直接放在SQL.Text就可以
    比如:
    with Query1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('Select * From Table1');
      SQL.Add('Update Table2 Set Field1=1');
      Open;
    end;
    两条语句都会被执行
      

  3.   


    strSQL:='update emp set ename=(case empno when  '1235''  then ''haha''
     when '1236''  then ''hoho''
    when  '1237''  then ''hehe''
    when  '1238''  then ''hihi''
     end)'
      

  4.   

    首先谢谢楼上的大大.
    可是我的数据量比较大,数W条语句一条条执行的话可能比较慢.
    用CASE我也想过,但这个语句是不是长的有点........@_@
    我还试过用QUERY1.EDIT.
    也行不通.....还有什么办法吗?
    那个QUERY1.Prepare方法具体是怎么用的呢.谢谢^_^
    比如这样(根据JAVA设想的):
    for x to y do
    begin
       QUERY1.SQL.ADD('UPDATE EMP SET  EMPNO = x where .......');
       QUERY1.Prepare;
    end;
    QUERY1.EXECULTSQL;
      

  5.   


    for x to y do
    begin
      cmd1.sql.add('....');
    end;
    cmd1.execute;
      

  6.   

    adoconnection1.begintrans;
    .
    .
    .
    adoconnection1.rollbacktrans;
      

  7.   

    maming2003(&天天&)
    能说清楚点吗?
    拜托啦^0^
      

  8.   

    不能用.add,,,,要先clear 然后用.add 或者append
    否则如果是循环的话,那就惨了。
      

  9.   

    用事务处理,如果执行时出现异常,可以adoconnection1.rollbacktrans撤销。adoconnection1.begintrans;
    //UPDATE语句1
    //UPDATE语句2
    //UPDATE语句3

    adoconnection1.rollbacktrans;