比如我要創建一個表,再向表里插入數據,我的語句是
ADOQuery1.Connection.BeginTrans;
ADOQuery1.close;
ADOQuery1.sql.clear;
ADOQuery1.sql.add('Create table ...');
ADOQuery1.ExecSQL;
ADOQuery1.close;
ADOQuery1.sql.clear;
ADOQuery1.sql.add('Insert into table ...');
ADOQuery1.ExecSQL;
ADOQuery1.Connection.CommitTrans ;
執行時出錯

解决方案 »

  1.   


    try
    with ADOQuery1 do
    begin
      Connection.BeginTrans;
      Close;
      SQL.Clear;
      SQL.Add('Create Table ...')'
      ExecSQL;
      Close;
      SQL.Clear;
      SQl.Text  := 'Insert into...';
      ExecSQl;
      Connection.CommitTrans;
    end;
    except
      ADOQuery1.Connection.RollBackTrans;
    end;
      

  2.   

    1.哪来的多个事务??明显只有一个事务
    2.出错的信息呢?单看语句没错
    3.是不是漏了个Drop Table??在第二次执行的时候就会报表已存在??
      

  3.   

    錯誤為:
    Project IQCTest.exe raised exception class EAccessViolation with message 'Access violation at address 0047EBF5 in module 'IQCTest.exe'.Read of address 0000006C'.
      

  4.   


    语句测试过,没问题,测试环境:Delphi7, mysql5.1.30
      

  5.   

    try
    with ADOQuery1 do
    begin
      Connection.BeginTrans;
      Close;
      SQL.Clear;
      SQL.Add('Create Table ...')'
      ExecSQL;
      Close;
      SQL.Clear;
      SQl.Text  := 'Insert into...';
      ExecSQl;
      Connection.CommitTrans;
    end;
    except
      ADOQuery1.Connection.RollBackTrans;
    end;
      

  6.   

    请楼主把Create Table和Insert的语句也写出来,估计SQL语句有问题