internal static bool TryGetProviderForTransaction(IDbTransaction trans, out IDatabaseAccessProvider provider) { string databaseName; databaseName = trans.Connection.Database.ToUpperInvariant(); return(TryGetProviderForTransaction(trans, databaseName, out provider)); }
private static void InnerExecuteQuery <T>(GenericRecordList <T> rl, IDbCommand command, string description, bool transformParameters) where T : ITypedRecord <T> { IDbCommand cmd = ADOAdaptersUtils.GetADOCommand(command); IDatabaseAccessProvider provider = DatabaseAccess.GetProviderForTransaction(cmd.Transaction); provider.ExecuteQuery(new ManagedCommand(provider.TransactionManager, cmd), rl, description, transformParameters, false); }
public static IDataReader ExecuteReader(IDbCommand command, string description, bool isApplication, bool transformParameters, bool skipLog) { try { // Save the values before execution because sometimes the drivers clears them from the IDbCommand when an exception occurs IDbCommand cmd = ADOAdaptersUtils.GetADOCommand(command); IDbConnection conn = cmd.Connection; IDbTransaction trans = cmd.Transaction; IDatabaseAccessProvider provider = null; bool hasProvider = trans != null && DatabaseAccess.TryGetProviderForTransaction(trans, out provider); IExecutionService executionService = hasProvider ? provider.DatabaseServices.ExecutionService : GetExecutionForConnection(conn); ITransactionManager manager = provider.TransactionManager; IDataReader reader = null; try { if (transformParameters) { TransformParameters(cmd); } reader = executionService.ExecuteReader(cmd); // NOTE: This reader will be closed automatically by the transaction manager at the end of the request manager.AssociateReader(trans, reader); } catch (DbException e) { executionService.OnExecuteException(e, cmd, reader, conn, trans, manager); throw; } return(reader); } catch (InvalidDatabaseAccessException e) { throw new InvalidDBTransactionManagerAccess(e.Message); } }
public static DataSet CreateAndFillDataSet(IDbCommand command, IDbDataAdapter adapter, string description, bool isApplication) { // Save the values before execution because sometimes the drivers clears them from the IDbCommand when an exception occurs IDbCommand cmd = ADOAdaptersUtils.GetADOCommand(command); IDbConnection conn = cmd.Connection; IDbTransaction trans = cmd.Transaction; IDatabaseAccessProvider provider = null; bool hasProvider = trans != null && DatabaseAccess.TryGetProviderForTransaction(trans, out provider); IExecutionService executionService = hasProvider ? provider.DatabaseServices.ExecutionService : GetExecutionForConnection(conn); ITransactionManager manager = provider.TransactionManager; try { DataSet dataSet; { dataSet = new DataSet(); adapter.SelectCommand = cmd; adapter.Fill(dataSet); } return(dataSet); } catch (DbException e) { executionService.OnExecuteException(e, cmd, null, conn, trans, manager); throw; } }
internal DatabaseProvider(IDatabaseAccessProvider provider) { if (provider == null) { throw new ArgumentNullException("DatabaseProvider cannot be initialized with null."); } this.provider = provider; }
private static byte[] GetBinaryFromDb(string sql, string attributeName, IDatabaseAccessProvider dbAccessProvider) { using (Transaction trans = dbAccessProvider.GetReadOnlyTransaction()) { try { Command cmd = trans.CreateCommand(sql); using (IDataReader reader = cmd.ExecuteReader()) { if ((reader.IsClosed) || (!reader.Read())) { return(null); } return(ReadBytes(reader, attributeName)); } } catch (Exception) { return(null); } } }
public static string EscapeAndQualifySqlIdentifier(IDatabaseAccessProvider <IPlatformDatabaseServices> provider, string objectName) { return(provider.DatabaseServices.DMLService.Identifiers.EscapeAndQualifyIdentifierForLocalDatabase(objectName)); }
/// <summary> /// Tries to get a database access based on the given transaction. /// </summary> /// <param name="trans">The transaction.</param> /// <param name="databaseName">Name of database to connect to.</param> /// <param name="provider">The object to access the database.</param> /// <returns><c>true</c> if the <c>DatabaseAccessProvider</c> could be created, <c>false</c> otherwise.</returns> internal static bool TryGetProviderForTransaction(IDbTransaction trans, string databaseName, out IDatabaseAccessProvider provider) { provider = Current.InnerGetProviderForTransaction(trans, databaseName); if (provider != null) { return(true); } provider = ForSystemDatabase; return(false); }