.NET事务
程序员文章站
2022-07-05 18:04:36
...
DBHelper
public int ExecSqlTranByParams(List<Tuple<string, SqlParameter[]>> list)
{
SqlTransaction transaction = null; // 创建事务对象
try
{
int count = 0;
// 建立数据库连接对象
using (SqlConnection conn = new SqlConnection(_ConnString))
{
OpenConnection(conn);
//开始事务操作
using (transaction = conn.BeginTransaction())
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = conn;
cmd.Transaction = transaction;
foreach (var tuple in list)
{
cmd.CommandText = tuple.Item1.Trim(); //sql语句
//sql参数化
if (tuple.Item2 is SqlParameter[] parameters && parameters.Length > 0)
{
foreach (SqlParameter parameter in parameters)
{
//参数格式化,防止sql注入
//var name = parameter.ParameterName;
//var val = parameter.Value;
//cmd.Parameters.Add(new SqlParameter(name, val));
//判断参数是否为null,是则转为数据库接受的DBnull
if (parameter.Value == null)
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter); //等效代码
}
}
count += cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
transaction.Commit(); //事务提交
CloseConnection(conn);
return count;
}
}
}
}
catch (Exception ex)
{
transaction.Rollback(); //事务回滚
throw new Exception(ex.Message, ex);
}
}
Interface
int ExecSqlTranByParams(List<Tuple<string, SqlParameter[]>> list);
上一篇: 事务的传播特性及隔离级别
下一篇: 纯牛奶怎么做奶油,简单便利让你爱上奶油