我用ADOQuery同时执行两条SQL语句,第一条正确,第二条有语法错误,但是在执行的时候,Delphi却不报错,一切显示正常。要命!要命!
那位大侠能解决,谢谢!!!!!!!!!

解决方案 »

  1.   

    with adoqQuery do
    begin
      Close;
      Sql.Clear;
      Sql.Add(' update 表一 set 字段一 = 'AA' '); //这句没错
      Sql.Add(' update 表二 set 字段二 = 'BB' '); //假如表二的名称我写错了,
                                                  //即表二根本不存在
      ExecSQL;
    end;
    在执行时Delphi根本不报错。
      

  2.   

    with adoqQuery do
    begin
      Close;
      Sql.Clear;
      Sql.Add(' update 表一 set 字段一 = 'AA' '); 
      ExecSQL;
      close;
      Sql.Add(' update 表二 set 字段二 = 'BB' ');
      ExecSQL;   
    end;
      

  3.   

    with adoqQuery do
    begin
      Close;
      Sql.Clear;
      Sql.Add(' update 表一 set 字段一 = 'AA' '); 
      ExecSQL;
      close;
      Sql.Clear;//加了一句 ~_~
      Sql.Add(' update 表二 set 字段二 = 'BB' ');
      ExecSQL;   
    end;
      

  4.   

    to ysycrazy(风中狂) ,thisisxutao(Probational 1.0) :
    我的问题是这只是个例子,实际并非仅两条语句,而是有多条复杂语句,并且要加事务处理,这时候要是其中一条出问题,就要命了。
    不知道是否可以通过设置adoconnect和adoquery的属性解决。
      

  5.   

    SP是一个办法,你的问题应该是SQL语句的写法不标准造成的,你第二句写对表明也无法执行!你写成:adoquery.sql.text='update 表一 set 字段一 = ''AA'';'
                              +'update 表二 set 字段二 = ''BB''';
    执行看看 两条独立的SQL要一起执行的话,要加‘;’
      

  6.   

    delphi在编译的时候不检查sql语句的语法错误;
    只是在执行到这句代码是才报错;
      

  7.   

    with adoqQuery do
    begin
      Close;
      Sql.Clear;
      Sql.Add(' update 表一 set 字段一 = 'AA' '); 
      ExecSQL;
      close;
      Sql.Clear;//加了一句 ~_~
      Sql.Add(' update 表二 set 字段二 = 'BB' ');
      ExecSQL;   
    end;
      

  8.   

    当然不报错了,你的第二条sql编译器根本看不到,你可以试试男竹的方法
      

  9.   

    try 
       ADOConnection1.BeginTrans;
       with adoqQuery do
         begin
           Close;
           Sql.Clear;
           Sql.Add(' update 表一 set 字段一 = 'AA' '); 
           ExecSQL;
           close;
           Sql.Clear;
           Sql.Add(' update 表二 set 字段二 = 'BB' ');
           ExecSQL;   
         end;
       ADOConnection1.CommitTranss;
      except
        ADOConnection1.RollbackTran;
      end;