我是实际项目来拆出来做的案例,场景是比如我们在做电商网站时,在创建订单时的一系列操作,通常在创建订单时我们需要数据表的操作有:订单的表头(主表)、订单的详细、清空购物车、甚至是修改优惠劵的状态(在使用了优惠劵的时候),下面直接把执行事务的主方法直接贴出来:

public static bool CreateUserOrder(UserOrder model, string Ids)
{
List<string> SQLStringList = new List<string>();
List<DbParameter[]> Parameters = new List<DbParameter[]>();
StringBuilder strSql = new StringBuilder(); //添加OrderInfor
SqlParameter[] parameters1 = OrderInforDAL.BuildOrderInforAddParameter(model.UserId, model.OrderCode, Ids, ref strSql);
SQLStringList.Add(strSql.ToString());
Parameters.Add(parameters1); //添加UserOrder
SqlParameter[] parameters2 = BuildUserOrderAddParameter(model, ref strSql);
SQLStringList.Add(strSql.ToString());
Parameters.Add(parameters2); //清空购物车
SqlParameter[] parameters3 = BasketDetailDAL.BuildUpdateParameter(true, Ids, ref strSql);
SQLStringList.Add(strSql.ToString());
Parameters.Add(parameters3); //修改优惠劵状态
if (model.CouponId > )
{
SqlParameter[] parameters4 = CouponDAL.BuildUpdateParameter(model.CouponId, , model.OrderCode, ref strSql);
SQLStringList.Add(strSql.ToString());
Parameters.Add(parameters4);
} return access.ExecuteSqlTran(SQLStringList, Parameters, true);
}

接下来贴出两个个详细的方法作参考:

internal static SqlParameter[] BuildOrderInforAddParameter(int UserId, string OrderCode, string Ids, ref StringBuilder strSql)
{
strSql = new StringBuilder();
strSql.Append("INSERT INTO OrderInfor(");
strSql.Append("UserId,X_ProId,X_ProName,StockNum,BuyNum,UnitPrice,OrderCode,TotalPrice,IsOther)");
strSql.Append(" select UserId,X_ProId,X_ProName,StockNum,BuyNum,UnitPrice,@OrderCode,TotalPrice,IsOther from BasketDetail");
strSql.AppendFormat(" where UserId=@UserId and IsSubmit='false' and IsInquiry=2 and IsExpired=0 and BasketDetailId in ({0})", Ids);
SqlParameter[] parameters = {
new SqlParameter("@OrderCode", SqlDbType.NVarChar,),
new SqlParameter("@UserId", SqlDbType.Int)
};
parameters[].Value = OrderCode;
parameters[].Value = UserId;
return parameters;
}
internal static SqlParameter[] BuildUpdateParameter(int CouponId, int State, string OrderCode, ref StringBuilder strSql)
{
strSql = new StringBuilder();
strSql.Append("update Coupon set");
strSql.Append(" [State]=@State,OrderCode=@OrderCode");
strSql.AppendFormat(" where ID={0}", CouponId);
SqlParameter[] parameters = {
new SqlParameter("@State", SqlDbType.Int),
new SqlParameter("@OrderCode", SqlDbType.NVarChar,)
};
parameters[].Value = State;
parameters[].Value = OrderCode;
return parameters;
}

C#实现执行数据库事务案例的更多相关文章

  1. PHP 操作 MySQL 执行数据库事务

    <?php $mysqli=new mysqli();//实例化mysqli $mysqli->connect('localhost','root','admin','test'); if ...

  2. ACID:数据库事务正确执行的四个基本要素

    ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).一个支持事务(T ...

  3. ACID数据库事务正确执行的四个基本要素的缩写

    ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).一个支持事务(T ...

  4. C#实现执行多条SQl语句,实现数据库事务

    C#实现执行多条SQl语句,实现数据库事务 在数据库中使用事务的好处,相信大家都有听过银行存款的交易作为事务的一个例子.事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的 ...

  5. acid数据库事务正确执行的四个基本要素的缩写编辑本义项

    ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).一个支持事务(T ...

  6. 执行多条SQL语句,实现数据库事务(不可传入Sql参数)

    执行多条SQL语句,实现数据库事务(不可传入Sql参数) http://blog.csdn.net/hanxuemin12345/article/details/9980371

  7. acid(数据库事务正确执行的四个基本要素的缩写)

    ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).一个支持事务(T ...

  8. C# 执行多条SQL更新语句,实现数据库事务

    class Program { class Result<T> { public T data; public string Message; public bool Success; p ...

  9. acid (数据库事务正确执行的四个基本要素的缩写)

    ACID,指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability).一个支持事务(T ...

随机推荐

  1. EF三种编程方式详细图文教程(C#+EF)之Model First

    Model First Model First我们称之为“模型优先”,这里的模型指的是“ADO.NET Entity Framework Data Model”,此时你的应用并没有设计相关数据库,在V ...

  2. HDU 1003 最大连续子段和

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others)M ...

  3. 《软件工程和Python》PYTHON效能分析和Django

    资料汇总网站:http://www.yzhiliao.com/my/course/55 一..作业下面两个题目任选一题: (1)运用jieba库分词(或者你喜欢的其他库),并把代码发到git上去(不发 ...

  4. 浅学JavaScript

    JavaScript是互联网上最流行的脚本语言,可广泛用于服务器.PC.笔记本电脑智能手机等设备: 对事件的反应: <!DOCTYPE html> <html> <hea ...

  5. linux 环境配置要点

    cd root .bash_profile 这个是配置当前用户的环境变量 cd /etcprofile 这个是配置系统的环境变量 which xxx 查看命令的目录 source .bash_prof ...

  6. DRBD 实验

    跨主机的块设备镜像系统,工作在内核中完成 drbd工作原理:客户端发起一个写操作的系统调用给文件系统,写请求再到达内核缓冲区,最到达DRBD模块,此时drbd会复制写入磁盘的数据,且进行两步操作,第一 ...

  7. Linux 下安装mysql 8.0.11(CentOS 7.4 系统)

    CentOS 7 自带MariaDB (前mysql开发工程师开发的,因此与吗,mysql 有很多相似之处) 1.检查卸载自带的MariaDB rpm -qa|grep mariadb //查询出来已 ...

  8. 红帽旗下Linux的版本说明RedHat、CentOS、Fedora、OEL等

    简单总结一下RedHat.CentOS.Fedora Core区别关系: RedHat: 红帽已经被IBM 340亿刀收购了,但是红帽依旧发型自己的RedHat enterprise linux 版本 ...

  9. C++的继承与多态

    ◆ 概念介绍 继承:为了代码的重用,保留基类的原本结构,并新增派生类的部分,同时可能覆盖(overide)基类的某些成员. 多态:一种将不同的特殊行为和单个泛化记号相关联的能力,分为静态多态和动态多态 ...

  10. 2013长沙网赛E题Travel by Bike

    题目链接:http://acm.zju.edu.cn/changsha/showProblem.do?problemId=26 题意:一个人从一个地方到另一个地方,长度为L,每小时速度为speed,周 ...