DbHelperSQL 增加事务处理方法(2种)
方法一:
1 public static bool ExecuteSqlByTrans(List<SqlAndPrams> list)
{
bool success = true;
Open();
SqlCommand cmd = new SqlCommand();
SqlTransaction trans = Connection.BeginTransaction();
cmd.Connection = Connection;
cmd.Transaction = trans;
try
{
foreach (SqlAndPrams item in list)
{
if (item.cmdParms == null)
{
cmd.CommandText = item.sql;
cmd.ExecuteNonQuery();
}
else
{
cmd.CommandText = item.sql;
cmd.CommandType = CommandType.Text;//cmdType;
cmd.Parameters.Clear();
foreach (SqlParameter parameter in item.cmdParms)
{
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
cmd.ExecuteNonQuery();
} }
trans.Commit();
}
catch (Exception e)
{
success = false;
trans.Rollback();
}
finally
{
Close();
}
return success;
} 方法一对应的实体类:
public class SqlAndPrams
{
public string sql { get; set; } public SqlParameter[] cmdParms { get; set; }
}
DAL层代码:
/// <summary>
/// 增加一条数据
/// </summary>
public SqlAndPrams AddAccount(Entity.Account_T model)
{
SqlAndPrams result = new SqlAndPrams();
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into Account_T(");
strSql.Append("AccountNo,Type,Count,LoginName,Remark,CreateTime)");
strSql.Append(" values (");
strSql.Append("@AccountNo,@Type,@Count,@LoginName,@Remark,@CreateTime)");
strSql.Append(";select @@IDENTITY");
SqlParameter[] parameters = {
new SqlParameter("@AccountNo", SqlDbType.NVarChar,),
new SqlParameter("@Type", SqlDbType.NVarChar,),
new SqlParameter("@Count", SqlDbType.Int,),
new SqlParameter("@LoginName", SqlDbType.NVarChar,),
new SqlParameter("@Remark", SqlDbType.NVarChar,),
new SqlParameter("@CreateTime", SqlDbType.DateTime)};
parameters[].Value = model.AccountNo;
parameters[].Value = model.Type;
parameters[].Value = model.Count;
parameters[].Value = model.LoginName;
parameters[].Value = model.Remark;
parameters[].Value = model.CreateTime; result.sql = strSql.ToString();
result.cmdParms = parameters;
return result;
}
调用层:
List<SqlAndPrams> updateList = new List<SqlAndPrams>();
Entity.Account_T model_account = new Entity.Account_T();
model_account.CreateTime = DateTime.Now;
model_account.LoginName = userName;
model_account.Type = "消费";
model_account.Count = -num; updateList.Add(dal_tran.AddAccount(model_account)); //添加进事务
DbHelperSQL.ExecuteSqlByTrans(updateList) //调用执行
方法二:暂时没有用,没有调用例子
public static bool ExecuteSQL2(string[] SqlStrings)
{
bool success = true;
Open();
SqlCommand cmd = new SqlCommand();
SqlTransaction trans = Connection.BeginTransaction();
cmd.Connection = Connection;
cmd.Transaction = trans;
try
{
foreach (string str in SqlStrings)
{
cmd.CommandText = str;
cmd.ExecuteNonQuery();
}
trans.Commit();
}
catch
{
success = false;
trans.Rollback();
}
finally
{
Close();
}
return success;
}
DbHelperSQL 增加事务处理方法(2种)的更多相关文章
- .net 事务处理的三种方法
方法1:直接写入到sql 中 在存储过程中使用 BEGIN TRANS, COMMIT TRANS, ROLLBACK TRANS 实现 begin trans declare@orderDetail ...
- QueryRunner及其增强,以及JdbcUtils增加事务处理及多线程并发安全
一.QueryRunner使用 QueryRunner是dbutils包下一个为了增强JDBC的类,使用之前需要先导jar包,jar包下载地址为:http://commons.apache.org/p ...
- TransactionScope事务处理方法介绍及.NET Core中的注意事项 SQL Server数据库漏洞评估了解一下 预热ASP.NET MVC 的VIEW [AUTOMAPPER]反射自动注册AUTOMAPPER PROFILE
TransactionScope事务处理方法介绍及.NET Core中的注意事项 作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/10170712.ht ...
- 增加收入的 6 种方式(很多公司的模型是:一份时间卖多次。比如网易、腾讯。个人赚取收入的本质是:出售时间)good
个人赚取收入的本质是:出售时间.从这个角度出发,下面的公式可以描述个人收入: 个人收入 = 每天可售时间数量 * 单位时间价格 * 单位时间出售次数 在这个公式里,有三个要素: 每天可出售的时间数量 ...
- js中点击事件方法三种方式的区别
在javascript中,可以为某个元素指定事件,指定的方式有以下三种: 1.在html中,使用onclick属性 2.在javascript中,使用onclick属性 (1)注意函数名没有双引号. ...
- MongoDB:利用官方驱动改装为EF代码风格的MongoDB.Repository框架 五 --- 为List<MongoDBRef>增加扩展方法
本次改动主要内容:为List<MongoDBRef>增加扩展方法 在MongoDB.Repository的使用过程中,发现在一个类中只定义一个List<MongoDBRef>是 ...
- java8在Collection中新增加的方法removeIf
记得我在以前找工作的经历中,遇到过一个面试官问过我一个很基础的问题.问题是:有一个List中有10个元素,我现在想从中删除3个元素,请问怎么做?我当时也没想,就直接说,List的有自带的remove方 ...
- Django后端向前端直接传html语言防止转义的方法(2种)
Django后端向前端直接传html语言防止转义的方法(2种) 目的,为了让前端对后端传输的这种方式不转义 1.使用mark_safe() from django.utils.safestring i ...
- 调用init方法 两种方式 一个是浏览器方法 一个是 xml中手工配置(load-on-startup)
调用init方法 两种方式 一个是浏览器方法 一个是 xml中手工配置(load-on-startup)
随机推荐
- git合并常见冲突
如果一个文件在服务器上已经做了修改,然后在本地开发中又做了一些修改的时候,再发布这个文件时很容易造成代码冲突,错误如下, error: Your local changes to the follow ...
- 核心类生成-Mybatis Generator的使用
总结一下Generator的使用,首先要设计好数据表,然后修改generator.xml中的配制,接着直接运行命令就可以了. 第一步:数据库设计: 生成数据表代码: /* Navicat MySQL ...
- GIT-windows系统下Gitblit的使用方式
GIT-windows系统下Gitblit的正确打开方式 1. 打开页面. 在配置好Gitblit后,打开可视化界面. 2. 创建用户 点击右上角添加用户,进入明细页面,填写常规信息. 创建用户(账号 ...
- 关于snmp octet string和普通string问题
我是获取的Octet String用String输出,输出的是一连串的2个16进制数 空格.:然后想对输出结果操作,得到我想要的值. 解决方案:private static string exchan ...
- Nginx 完全配置
入门教程 初识Nginx 你真的了解如何将 Nginx 配置为Web服务器吗 设置静态网页编码 --> 针对非类Unix系统 针对服务器 http { ... charset UTF-8; .. ...
- MyEclipse打不开 报xxxxxx. log。
1.找到MyEcliPse安装目录下configuration文件夹 打开 2.删除org.eclipse.update这个文件夹 3.再打开org.eclipse.osgi/.manager 4.删 ...
- redis集群配置与管理
Redis在3.0版本以后开始支持集群,经过中间几个版本的不断更新优化,最新的版本集群功能已经非常完善.本文简单介绍一下Redis集群搭建的过程和配置方法,redis版本是5.0.4,操作系统是中标麒 ...
- LeetCode 解题总结
1. 最长合法括号串 给定只包含'('和')'的字符串,找出最长合法括号串的长度. Example 1: Input: "(()" Output: 2 Explanatio ...
- 秋名山老司机(BS4与正则的比拼)
因为嘉伟思杯里的一个脚本题目,16进制计算,python3正则还没学,所以没写出来.大佬跟我说也可以用BS4,从DOM上下手,直接爬下来直接一个eval就搞定了,eval可以像这样计算16进制,eva ...
- 【转载的】这张图能容易理解sql joins,收藏下!