mysql + unidac 使用事务例子

//备注:mysql必须是使用innoDB引擎才支持事务功能,否则以下事务相关代码将失效。//SQL SERVER和Oracle还没试,明天回公司试了再发代码。procedure TForm1.btn1Click(Sender: TObject);
var
  i, j: Integer;
begin
  UniConnection1.Connect;
  try
    try
      UniTransaction1.Connections[0].StartTransaction;
      UniQuery1.Params.Clear;
      UniQuery1.SQL.Text := 'insert into user (username,password)values(:username, :password)';
      UniQuery1.Params.ParamByName('username').Value := 'eboy';
      UniQuery1.Params.ParamByName('password').Value := '1111';
      UniQuery1.ExecSQL; //如果不使用事务,这条将插入进去


      UniQuery1.Params.Clear;
      UniQuery1.SQL.Text := 'insert into user (username,password)values(:username, :password)';
      UniQuery1.Params.ParamByName('username').Value := 'frr';
      UniQuery1.Params.ParamByName('password').Value := '123';
      UniQuery1.ExecSQL; //如果不使用事务,这条将插入进去


      UniQuery1.Params.Clear;
      UniQuery1.SQL.Text := 'insert into user (username,password)values(:username, :password)';
      UniQuery1.Params.ParamByName('username').Value := 'lj';
      UniQuery1.Params.ParamByName('password').Value := '880414';
      UniQuery1.ExecSQL; //如果不使用事务,这条将插入进去


      UniQuery1.Params.Clear;
      UniQuery1.SQL.Text := 'insert into user (username,password)values(:username, :password)';
      UniQuery1.Params.ParamByName('username').Value := 'lj';
      UniQuery1.Params.ParamByName('password').IsNull; //字段设为not null,所以这里会出错
      UniQuery1.ExecSQL; //开启事务后,上面的三条都将回滚
      
      UniTransaction1.Connections[0].Commit;


    except on e: Exception do
      begin
        UniTransaction1.Connections[0].Rollback;
        ShowMessage(e.Message);
      end;
    end;  
  finally
    UniConnection1.Disconnect;
  end;
end;


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值