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)
随机推荐
- JavaEE三大框架整合
搭建项目: 搭建一个实际的项目,为了避免影响到你之前已经搭建过的项目,可以先新建一个工作空间,指定一个新的空间来做这一次的项目,不会和其他的项目冲突,尤其是在编码这一部分. 指定新工作空间的目录: 一 ...
- airflow 笔记
首先是一个比较好的英文网站,可能要fq:http://site.clairvoyantsoft.com/installing-and-configuring-apache-airflow/ ===== ...
- HBase读写的几种方式(二)spark篇
1. HBase读写的方式概况 主要分为: 纯Java API读写HBase的方式: Spark读写HBase的方式: Flink读写HBase的方式: HBase通过Phoenix读写的方式: 第一 ...
- Redis实战(十)Redis常见问题及解决方案
序言
- 在Ubuntu下进行XMR Monero(门罗币)挖矿的超详细图文教程
大家都知道,最近挖矿什么的非常流行,于是我也在网上看了一些大神写的教程,以及跟一些大神请教过如何挖矿,但是网上的教程都感觉写得不够详细,于是今天我这里整理一个教程,希望能够帮到想要挖矿的朋友. 首先, ...
- 毕业设计——Django邮件发送功能实现及问题记录
django发送邮件:send_mail()&send_mass_mail() 自强学堂 刘江的博客 HTTPS,TLS和SSL django发送邮件及其相关问题 步骤 : 0. 登录作为发送 ...
- Linux命令--tree
目录 tree 最常用 带颜色显示2级目录 排除显示某个目录 tree tree -C :颜色显示 tree -f : 显示文件全路径 tree -L 2 :只显示2层 tree -P *.pl :只 ...
- vue组件通讯方法汇总(在不使用vuex的情况下)
前三种是父子组件通讯,最后一种是平级组件.
- PC设置局域网打印机
打印机采用局域网网络连接方式,下面以Windows系统为例说明如何添加此打印机. 将电脑接入局域网 在“控制面板”中打开“设备与打印机”,点击“添加打印机” 在弹出列表中,会自动出现打印机型号,选中它 ...
- Centos安装Git、DotNet、Docker
1.安装Git yum install git 可通过下面的命令查看Git版本 git --version 2.安装Dotnet sudo yum install libunwind libicu 导 ...