database1.StartTransaction;//开始一个事务
try
with query1 do //插入数据
begin
close;
sql.Clear;
sql.Add('insert TT values(:a,:b,:c,:d)');
parambyname('a').AsString:=trim(edit1.Text);
parambyname('b').AsString:=trim(edit2.Text);
parambyname('c').AsInteger:=strtoint(edit3.Text);
parambyname('d').AsString:=trim(edit4.Text);
open;
Execsql;
end;
database1.Commit;//提交事务
showmessage('提交事务成功');
clear;
except
end;
database1.Rollback;//事务回流
showmessage('系统出错');
end;就是通不过,显示系统出错?请各位高手指点一下?

解决方案 »

  1.   

    database1.StartTransaction;//开始一个事务
    try
    with query1 do //插入数据
    begin
    close;
    sql.Clear;
    sql.Add('insert TT values(:a,:b,:c,:d)');
    parambyname('a').AsString:=trim(edit1.Text);
    parambyname('b').AsString:=trim(edit2.Text);
    parambyname('c').AsInteger:=strtoint(edit3.Text);
    parambyname('d').AsString:=trim(edit4.Text);
    open;
    Execsql;
    end;
    database1.Commit;//提交事务
    showmessage('提交事务成功');
    clear;
    except
    showmessage('系统出错');
    database1.Rollback;//事务回流
    end;
    end;
      

  2.   

    database1.StartTransaction;//开始一个事务
    try
      with query1 do //插入数据
      begin
        close;
        sql.Clear;
        sql.Add('insert TT values(:a,:b,:c,:d)');
        Parameters.parambyname('a'.values := trim(edit1.Text);
        Parameters.parambyname('b').values := trim(edit2.Text);
        Parameters.parambyname('c').values := trim(edit3.Text);
        Parameters.parambyname('d').values := trim(edit4.Text);
        open;          //   这里应该去掉,insert语句不能使用OPEN命令返回数据集
        Execsql;
      end;
      database1.Commit;//提交事务
      showmessage('提交事务成功');
      clear;
      except          // 事务回流写在except之后
        database1.Rollback;//事务回流
        showmessage('系统出错');
      end;
    end;