DbHelperSQL 增加事务处理方法(2种)

方法一: 1 public static bool ExecuteSqlByTrans(List<SqlAndPrams> list)
 2         {
 3             bool success = true;
 4             Open();
 5             SqlCommand cmd = new SqlCommand();
 6             SqlTransaction trans = Connection.BeginTransaction();
 7             cmd.Connection = Connection;
 8             cmd.Transaction = trans;
 9             try
10             {
11                 foreach (SqlAndPrams item in list)
12                 {
13                     if (item.cmdParms == null)
14                     {
15                         cmd.CommandText = item.sql;
16                         cmd.ExecuteNonQuery();
17                     }
18                     else
19                     {
20                         cmd.CommandText = item.sql;
21                         cmd.CommandType = CommandType.Text;//cmdType;
22                         cmd.Parameters.Clear();
23                         foreach (SqlParameter parameter in item.cmdParms)
24                         {
25                             if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null))
26                             {
27                                 parameter.Value = DBNull.Value;
28                             }
29                             cmd.Parameters.Add(parameter);
30                         }
31                         cmd.ExecuteNonQuery();
32                     }
33
34                 }
35                 trans.Commit();
36             }
37             catch (Exception e)
38             {
39                 success = false;
40                 trans.Rollback();
41             }
42             finally
43             {
44                 Close();
45             }
46             return success;
47         }

方法一对应的实体类:
1 public class SqlAndPrams
2     {
3         public string sql { get; set; }
4
5         public SqlParameter[] cmdParms { get; set; }
6     }

DAL层代码:

 1 /// <summary>
 2         /// 增加一条数据
 3         /// </summary>
 4         public SqlAndPrams AddAccount(Entity.Account_T model)
 5         {
 6             SqlAndPrams result = new SqlAndPrams();
 7             StringBuilder strSql = new StringBuilder();
 8             strSql.Append("insert into Account_T(");
 9             strSql.Append("AccountNo,Type,Count,LoginName,Remark,CreateTime)");
10             strSql.Append(" values (");
11             strSql.Append("@AccountNo,@Type,@Count,@LoginName,@Remark,@CreateTime)");
12             strSql.Append(";select @@IDENTITY");
13             SqlParameter[] parameters = {
14                     new SqlParameter("@AccountNo", SqlDbType.NVarChar,20),
15                     new SqlParameter("@Type", SqlDbType.NVarChar,10),
16                     new SqlParameter("@Count", SqlDbType.Int,4),
17                     new SqlParameter("@LoginName", SqlDbType.NVarChar,30),
18                     new SqlParameter("@Remark", SqlDbType.NVarChar,50),
19                     new SqlParameter("@CreateTime", SqlDbType.DateTime)};
20             parameters[0].Value = model.AccountNo;
21             parameters[1].Value = model.Type;
22             parameters[2].Value = model.Count;
23             parameters[3].Value = model.LoginName;
24             parameters[4].Value = model.Remark;
25             parameters[5].Value = model.CreateTime;
26
27             result.sql = strSql.ToString();
28             result.cmdParms = parameters;
29             return result;
30         }

调用层:

1 List<SqlAndPrams> updateList = new List<SqlAndPrams>();
2 Entity.Account_T model_account = new Entity.Account_T();
3 model_account.CreateTime = DateTime.Now;
4 model_account.LoginName = userName;
5 model_account.Type = "消费";
6 model_account.Count = -num;                        updateList.Add(dal_tran.AddAccount(model_account)); //添加进事务
7 DbHelperSQL.ExecuteSqlByTrans(updateList)   //调用执行

方法二:暂时没有用,没有调用例子
 1 public static bool ExecuteSQL2(string[] SqlStrings)
 2         {
 3             bool success = true;
 4             Open();
 5             SqlCommand cmd = new SqlCommand();
 6             SqlTransaction trans = Connection.BeginTransaction();
 7             cmd.Connection = Connection;
 8             cmd.Transaction = trans;
 9             try
10             {
11                 foreach (string str in SqlStrings)
12                 {
13                     cmd.CommandText = str;
14                     cmd.ExecuteNonQuery();
15                 }
16                 trans.Commit();
17             }
18             catch
19             {
20                 success = false;
21                 trans.Rollback();
22             }
23             finally
24             {
25                 Close();
26             }
27             return success;
28         }

原文地址:https://www.cnblogs.com/xujunbao/p/9726913.html

时间: 2024-10-12 16:26:37

DbHelperSQL 增加事务处理方法(2种)的相关文章

增加收入的 6 种方式(个人赚取收入的本质是:出售时间)good

个人赚取收入的本质是:出售时间.从这个角度出发,下面的公式可以描述个人收入: 个人收入 = 每天可售时间数量 * 单位时间价格 * 单位时间出售次数 在这个公式里,有三个要素: 每天可出售的时间数量 单位时间价格 同一份时间的出售次数 从这三个要素,可以衍生出 6 种提升个人收入的方法: 让每天可出售的时间数量变得更多 从执行层面提升单位时间价格 从管理层面,提升单位时间价格 一份时间卖多次 购买别人的时间再销售出去 被动收入 接下来我们解释一下这 6 种方式,看看哪种适合你. 增加可出售时间数

增加swap方法

java环境内存不够用 swap在工作中,特别是java环境,程序写的有问题,会发生内存泄漏,可能会占用swap. 协调让开发改程序,运维可以临时增大swap.增加swap方法 创建一个块文件 dd  if=/dev/zero of=/tmp/100m  bs=1M   count=100 [[email protected] ~]# dd  if=/dev/zero of=/tmp/100m  bs=1M count=100 100+0 records in 100+0 records out

C# Dictionary增加的方法

1.简单的函数,实现Dictionary如果有就替换,没有就增加的功能. /// <summary>        /// Dictionary增加的方法        /// </summary>        /// <typeparam name="TKey"></typeparam>        /// <typeparam name="TValue"></typeparam>    

UISegmentedControl: 增加代理方法

UISegmentedControl 没有代理方法可以设置,不能在选择之前做预处理.为此,重写了 UISegmentedControl 创建文件 RFSegmentedControl,继承自 UISegmentedControl,并添加代理方法 RFSegmentedControlDelegate 两个代理方法,分别为 shouldSelected 和 didSelected,如名字,表示是否可以选择和已经选择的意思. 增加 delegate 的变量 #import <UIKit/UIKit.h

【转】 lr中错误解决方法19种

转自:http://blog.csdn.net/fanglige/article/details/7924347 一.Error -27727: Step download timeout (120 seconds)has expired when downloading resource(s). Set the“Resource Page Timeout is a Warning” Run-Time Setting to Yes/No to have this message as a war

【转】TransactionScope事务处理方法介绍及.NET Core中的注意事项

什么是TransactionScope呢? TransactionScope作为System.Transactions的一部分被引入到.NET 2.0.同时SqlClient for .NET Core 从 2.1 及以上版本开始提供对System.Transactions的支持 . 它是一个类,它提供了一种简单的方法,可以将一组操作作为事务的一部分来进行处理,而不必担心场景背后的复杂性.如果某个操作在执行的过程中失败的话,则整个事务将失败并执行回滚操作,从而撤消已完成的所有操作.所有这些都将由

SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-010-Introduction为类增加新方法

一. 1.Introduction的作用是给类动态的增加方法 When Spring discovers a bean annotated with @Aspect , it will automatically create a proxy that delegates calls to either the proxied bean or to the introduction implementation, depending on whether the method called be

创建用户的方法 3种mysql创建方法

mysql创建用户的方法分成三种:INSERT USER表的方法.CREATE USER的方法.GRANT的方法.   一.账号名称的构成方式   账号的组成方式:用户名+主机(所以可以出现重复的用户名,跟其他的数据库不一样)   用户名:16字符以内.   主机名:可以用主机名和IP地址,也可以用通配符   通配符说明:172.18.10.%(IP地址为172.18.10段的所有IP地址都可以访问)   二.通过CREATE USER命令进行创建用户   脚本:CREATE USER 'use

[转载]OpenWrt增加软件包方法

http://blog.chinaunix.net/uid-10429687-id-3374873.html OpenWrt是一个比较完善的嵌入式Linux开发平台,在无线路由器应用上已有100多个软件包.人们可以在其基础上增加软件包,以扩大其应用范围.OpenWrt在增加软件方面使用极其方便,按照OpenWrt的约定就可以很简单完成. 加入的软件包可以是网上可下载的开源软件或自行开发的软件.為加入软件包需要在package目錄下创建一个目录,以包含软件包的各种信息和与OpenWrt建立联系的文