• C# 启用事务提交多条带参数的SQL语句


    
    
           /// <summary>
            /// 启用事务提交多条带参数的SQL语句
            /// </summary>
            /// <param name="mainSql">主表SQL</param>
            /// <param name="mainParam">主表对应的参数</param>
            /// <param name="detailSql">明细表SQL语句</param>
            /// <param name="detailParam">明细表对应的参数</param>
            /// <returns>返回事务是否成功</returns>
            public static bool UpdateByTran(string mainSql, SqlParameter[] mainParam, string detailSql, List<SqlParameter[]> detailParam)
            {
                SqlConnection conn = new SqlConnection(connString);
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;
                try
                {
                    conn.Open();
                    cmd.Transaction = conn.BeginTransaction();//开启事务
                    if (mainSql != null && mainSql.Length != 0)
                    {
                        cmd.CommandText = mainSql;
                        cmd.Parameters.AddRange(mainParam);
                        cmd.ExecuteNonQuery();
                    }
                    foreach (SqlParameter[] param in detailParam)
                    {
                        cmd.CommandText = detailSql;
                        cmd.Parameters.Clear();
                        cmd.Parameters.AddRange(param);
                        cmd.ExecuteNonQuery();
                    }
                    cmd.Transaction.Commit();//提交事务
                    return true;
                }
                catch (Exception ex)
                {
                    if (cmd.Transaction != null)
                    {
                        cmd.Transaction.Rollback();//回滚事务
                    }
    
                    //将异常信息写入日志 
                    string errorInfo = "调用UpdateByTran(string mainSql,  SqlParameter[] mainParam,string detailSql ,List <SqlParameter []>detailParam)方法时
    发生错误,具体信息:" + ex.Message; WriteLog(errorInfo); throw ex; } finally { if (cmd.Transaction != null) { cmd.Transaction = null;//清空事务 } conn.Close(); } }

    转载自CSDN

  • 相关阅读:
    java面向对象高级分层实例_实体类
    But what exactly do we mean by "gets closer to"?
    information entropy as a measure of the uncertainty in a message while essentially inventing the field of information theory
    SVM vs. Softmax
    every row of W is a classifier for one of the classes
    Hinge Loss
    polynomial time
    Conditional random fields
    Frobenius Norm
    L2 范数 L1 范数 出租车范数
  • 原文地址:https://www.cnblogs.com/ZeedLee/p/8482185.html
Copyright © 2020-2023  润新知