1.   在前台我执行了一条语句
  
  update tanle1 set 小计=12  后来我发现错了这时怎么回滚到原来状态?
 2.    怎么在前台执行多条SQL语句,我原来是这样执行的:   Adoquery1.close;
   Adoquery1.sql.clear;
   Adoquery1.sql.add(第一条SQL)
   Adoquery1.open(后Execsql)   
   Adoquery1.close;
   Adoquery1.sql.clear;
   Adoquery1.sql.add(第二条SQL)
   Adoquery1.open(后Execsql)   ...   有没有简洁的方式?

解决方案 »

  1.   

    我有办法省一行
       Adoquery1.close;
       Adoquery1.sql.Text:='第二条SQL'
       Adoquery1.open(后Execsql)
      

  2.   

    那一行如果重复使用的话,是不可以省略的(adoquery1.sql.clear;)
    如果想回滚的话,使用事务处理是一种比较好的解决办法;
      adoquery1.Connection.BeginTrans //启动事务
      adoquery1.Connection.CommitTrans; //执行事务
      adoquery1.Connection.RollbackTrans; //回滚事务
      

  3.   

    procedure ExecMySQL(mySQL:string);
    begin
       Adoquery1.close;
       Adoquery1.sql.clear;
       Adoquery1.sql.add(mySQL)
       Adoquery1.open(后Execsql)
    end;
    ExecMySQL(第一条SQL);
    ExecMySQL(第二条SQL);
    ExecMySQL(第三条SQL);
      

  4.   

    我一般都用
    adoquery1.sql.text:='...';就不用clear.
      

  5.   

    Adoquery控件的SQL属性可以是多条语句,也可以是一条语句
    例如:
     ADOQuery1.SQL.Clear;
     ADOQuery1.SQL.Add('insert into trym values(1,2)')
     ADOQuery1.SQL.Add('insert into trym values(3,4)')
     ADOQuery1.SQL.Add('insert into trym values(5,6)')
     ADOQuery1.SQL.Add('insert into trym values(7,8)')
     ADOQuery1.ExecSQL
    就可以连续向表trym 中插入四条记录