首页 > 数据库技术 > 详细

mysql + unidac 使用事务例子

时间:2015-09-05 14:56:52      阅读:290      评论:0      收藏:0      [点我收藏+]
//备注: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;

mysql + unidac 使用事务例子

mysql + unidac 使用事务例子

原文:http://www.cnblogs.com/chenmfly/p/4783145.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!