/// <summary> /// 执行数据库事物操作 /// </summary> /// <param name="lsSqlCommandQuery">需要执行的SqlQuery集合</param> /// <returns>事务执行成功与否</returns> internal IDbTransaction GetBeginTransaction(List <BaseQuery> lisqQueries, List <DataTable> dtList = null, string targetdb = null) { if ((lisqQueries == null || lisqQueries.Count == 0) && (dtList == null || dtList.Count == 0)) { IsScopeSucessed = true;//如果是零条,也是成功 return(null); } var dbp = dc.conn(targetdb); da = DataAccessFactory.CreateSqlDataAccessWriter(dbp); //记录事务 bool bl = true; int index = 0; //打开事务 da.Open(); idbTransaction = da.BeginTransaction(); { try { if (_list != null && _list.Count > 0) { foreach (BaseQuery q in _list) { if (da.ExecuteNonQuery(q) < 0) { bl = false; break; } else { continue; } } } //处理BULKCOPY bl = DbProvider.GetVdb(dbp.Writer.DatabaseType).TransationBulkCopy(da, idbTransaction.Connection, idbTransaction, dtList, bl); InsideSucessed = bl; } catch (Exception ex) { DistributedEx = ex; LogService.Default.Fatal("数据库事务执行失败:失败原因" + ex.Message, ex); InsideSucessed = false; } } return(idbTransaction); }
private static bool GetExecuteBacheNonQueryDo(List <BaseQuery> lsSqlCommandQuery, out Exception Ex, List <DataTable> dtList, string targetdb) { DataAccess da = DataAccessFactory.CreateSqlDataAccessWriter(dc.conn(targetdb)); Ex = null; //定义事物执行成功与否 bool isSuccess = true; //记录事务 bool bl = true; //提交事务记录 bool commit = false; //打开事务 da.Open(); using (IDbTransaction t = da.BeginTransaction()) { try { if (lsSqlCommandQuery != null && lsSqlCommandQuery.Count > 0) { foreach (BaseQuery q in lsSqlCommandQuery) { if (da.ExecuteNonQuery(q) < 0) { bl = false; break; } else { continue; } } } if (dtList != null && dtList.Count > 0 && bl) { IVdb dbculkcopy = DbProvider.GetVdb(dc.conn(targetdb).Writer.DatabaseType); dbculkcopy.TransationBulkCopy(da, da.Connection, t, dtList, bl); } if (bl) { commit = true; } else { commit = false; } if (commit == true) { isSuccess = true; t.Commit(); } else { isSuccess = false; t.Rollback(); } } catch (Exception ex) { t.Rollback(); Ex = ex; LogService.Default.Fatal("数据库事务执行失败:失败原因" + ex.Message, ex); isSuccess = false; } } da.Close(); return(isSuccess); }