C#使用事务批量操作实例 - C#基础语法系列

C#基础语法系列- C#事务

业务描述: 写一个 批量插入方法,InsertList, 事务中执行insert方法(单个插入)。


/// <summary>
/// 批量插入操作
/// </summary>
/// <param name="userList">列表</param>
/// <returns></returns>
public  bool Insert(List<User> userList)
{
    bool isSuccess = true;

    using (SqlConnection conn = new SqlConnection(Config.DBConn))
    {
        conn.Open();
        SqlTransaction tran = conn.BeginTransaction();
        try
        {
            foreach (var item in userList)
            {
             //*执行单个插入方法
                int result = Insert(item, tran);
            }
            tran.Commit();
        }
        catch (Exception ex)
        {
         //rollback
            tran.Rollback();
            isSuccess = false;
        }
    }

    return isSuccess;
}


/// <summary>
/// 单行插入
/// </summary>
/// <param name="user">单行</param>
/// <returns></returns>
public bool Insert(User user, SqlTransaction transaction)
{
    string sql = @"insert into Table(Attribute)values(@Attribute)";
    List<SqlParameter> param = new List<SqlParameter>();
    param.Add(new SqlParameter() { ParameterName = "@Attribute", DbType = DbType.String, SqlValue = value });

    formalSql = string.Format(sql, valueStr, paramStr);

    /*此处执行插入方法*/
    int result = DBOptExtend.ExecuteNonQuery(formalSql, transaction, param.ToArray());
    return result > 0;
}


/// <summary>
/// 数据库操作方法扩展
/// </summary>
public class DBOptExtend
{
    /// <summary>
    ///执行查询
    /// </summary>
    /// <param name="sentence">sql语句</param>
    /// <param name="transaction">事务</param>
    /// <param name="parameters">参数</param>
    /// <returns></returns>
    public  static int ExecuteNonQuery(string sentence, SqlTransaction transaction, DbParameter[] parameters = null)
    {
        using (SqlCommand cmd = new SqlCommand(sentence))//modify by wsy
        {
            cmd.Transaction = transaction;
            cmd.Connection = transaction.Connection;
            if (parameters != null)
            {
                cmd.Parameters.AddRange(parameters.ToArray());
            }
            int result = Convert.ToInt32(cmd.ExecuteNonQuery());
            return result;
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值