/// <summary> /// 执行多条SQL语句,实现数据库事务。 /// </summary> /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param> /// <returns>事务是否成功</returns> public static bool Tran(this TranCollection ltTran) { using (DBDalOperate dal = new DBDalOperate()) { return(dal.ExecSqlTran(ltTran)); } }
/// <summary> /// 执行多条SQL语句,实现数据库事务。 /// </summary> /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param> /// <returns>事务是否成功</returns> public bool ExecSqlTran(TranCollection ltTran) { bool flag = true; base.ConnectionOpen(); base.myCommand = new SqlCommand(); myCommand.Connection = base.myConnection; string CurrentSql = ""; var curList = ltTran.OrderBy(ss => ss.Order).ToList(); using (SqlTransaction trans = base.myConnection.BeginTransaction()) { try { //循环 foreach (var tran in curList) { CurrentSql = tran.Sql.ToString(); SqlParameter[] cmdParms = tran.Pars != null?tran.Pars.ToArray() : null; PrepareCommand(base.myCommand, base.myConnection, trans, CurrentSql, cmdParms); int val = myCommand.ExecuteNonQuery(); myCommand.Parameters.Clear(); } trans.Commit(); return(flag); } catch (Exception ex) { trans.Rollback(); using (LogMethod lM = new LogMethod()) { lM.WriteLog(ex.Message + "SQL:" + CurrentSql, ex); } throw ex; } finally { base.CommandClose(); base.ConnectionClose(); } } }