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

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. 20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

    20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号:20172306 姓名:刘辰 结对伙伴博客链接 刘辰同学对编程的积极程度很高,并且在编程能力上很不错,有 ...

  2. AbstractFactory(PeopleSkin)

    使用抽象工厂模式,完成下述产品等级结构: 实现 UML类图 public class BlackFactory implements MWFactory{ public Man produceMan( ...

  3. CMD命令操作符

    cmd                   command的缩写,是windows环境下的虚拟DOS窗口,提供有DOS命令,功能强大 mstsc                 远程 inetmgr  ...

  4. Redis4.0 主从复制(PSYN2.0)

    Redis4.0版本相比原来3.x版本,增加了很多新特性,如模块化.PSYN2.0.非阻塞DEL和FLUSHALL/FLUSHDB.RDB-AOF混合持久化等功能.尤其是模块化功能,作者从七年前的re ...

  5. ssh结合使用

    springxml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=& ...

  6. T4模板_T4基本结构

    T4文本模板由 指令块.文本块.控制块 组成. 一. 指令块(MSDN文本模板指令) 指令块以@开头,基本的指令块包括<#@ template #> .<#@ parameter# ...

  7. 解决win10激活错误代码0xc004c003

    打开命令窗口(管理员). win10电脑图解-2 输入slmgr.vbs /upk,回车 激活错误电脑图解-3 输入:slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX, ...

  8. 查看ROS最大并发连接数量

    命令行下输入以下 ip firewall connection tracking print interval 1 max-entries这个就是最大的并发连接数量 退出按Q 

  9. Oracle与SQLSERVER 批处理执行 DDL 语句

    1. 公司里面的 很多同名的数据库 的一个表都错误的多了一个列 要是每个都用数据库连接工具打开 感觉太废时间了. 比如写个sql命令来执行. 具体方法: Oracle 使用 sqlplus sqlpl ...

  10. 解决Linux关闭SSH,终端后运行程序终止问题(包括后台)

    问题描述: 每次SSH到服务器上,然后运行了一个自己写的服务端程序,比如 ./myserver.sh ,然后关闭ssh或者终端之后,发现服务不能访问. 简要分析下: 根据   这篇博文  的提示,ss ...