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

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. Scrum Meeting 10.25

    成员 已完成任务 下一阶段任务 用时 徐越 阅读前端代码中和通信相关的部分 学习服务器配置 4h 赵庶宏 阅读前端代码中和通信相关的部分 学习服务器配置 4h 薄霖 继续做UI开发 界面优化 4h 武 ...

  2. 2-Sixth Scrum Meeting20151206

    任务分配 闫昊: 今日完成:请假.(最近代码写得多……很累……) 明日任务:完成数据库设计. 唐彬: 今日完成:ios客户端代码的深度学习. 明日任务:读IOS讨论区后台接口. 史烨轩: 今日完成:请 ...

  3. Scanner的例子

    package com.firstDay.one; import java.util.Scanner; public class Information { /** * @param args */ ...

  4. ns-3 可视化模拟 (一) PyViz

    PyViz 个人觉得这个的使用简单. (1)首先安装 这是ubuntu下的 sudo apt-get install python-dev python-pygraphviz python-kiwi ...

  5. js 刷新当前页面会弹出提示框怎样将这个提示框去掉

    //禁止刷新提示window.onbeforeunload = function() { var n = window.event.screenX - window.screenLeft; var b ...

  6. /etc/tolmcat/Server.xml 实例说明

      # 这是service类 <Service name="Catalina">   # 这是http连接器,响应用户请求 <Connector port=&qu ...

  7. 蜗牛慢慢爬 LeetCode 20. Valid Parentheses [Difficulty: Easy]

    题目 Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the i ...

  8. PHP ini_set

    PHP ini_set用来设置php.ini的值,在函数执行的时候生效,对于虚拟空间来说,很方便,下面为大家介绍下此方法的使用   PHP ini_set用来设置php.ini的值,在函数执行的时候生 ...

  9. xshell 常用快捷键

    1.连接mysql数据库mysql -uroot -p -h127.0.0.1 -P3306 2.列出所有sessionshow full processlist; 3.查看20条执行时间最长的SQL ...

  10. [微软官网]SQLSERVER的版本信息

    来源:https://docs.microsoft.com/zh-cn/sql/sql-server/editions-and-components-of-sql-server-2017?view=s ...