public virtual object ExecuteScalar(string sql, IDataSource dataSource, IList parameters) { this.Context.LogManager.Info(this, "Executing scalar sql query", "Sql: " + sql); // do not localize IDbConnection connection; IDbCommand cmd; object result; ITransaction transaction; SqlExecutorCancelEventArgs e = new SqlExecutorCancelEventArgs(sql, dataSource, parameters); this.Context.EventManager.OnExecutingSql(this, e); if (e.Cancel) { this.Context.LogManager.Warn(this, "Executing scalar sql query canceled by observer!", "Sql: " + sql); // do not localize return 0; } sql = e.Sql; dataSource = e.DataSource; parameters = e.Parameters; connection = dataSource.GetConnection(); cmd = connection.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = sql; AddParametersToCommand(cmd, parameters); transaction = this.Context.GetTransaction(connection); if (transaction != null) { cmd.Transaction = transaction.DbTransaction; } result = cmd.ExecuteScalar(); dataSource.ReturnConnection(); SqlExecutorEventArgs e2 = new SqlExecutorEventArgs(sql, dataSource, parameters); this.Context.EventManager.OnExecutedSql(this, e2); return result; }
public DataTable ExecuteDataTable(string sql, IDataSource dataSource, IList parameters) { this.Context.LogManager.Info(this, "Executing sql query and returning data table", "Sql: " + sql); // do not localize IDbConnection connection; IDbCommand cmd; IDataReader dr; DataTable result = null; ITransaction transaction; SqlExecutorCancelEventArgs e = new SqlExecutorCancelEventArgs(sql, dataSource, parameters); this.Context.EventManager.OnExecutingSql(this, e); if (e.Cancel) { this.Context.LogManager.Warn(this, "Executing sql query and returning data table canceled by observer!", "Sql: " + sql); // do not localize return null; } sql = e.Sql; parameters = e.Parameters; if (!(m_ExecutionMode == ExecutionMode.NoExecution)) { ExecuteBatchedStatements(dataSource); connection = dataSource.GetConnection(); cmd = connection.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = sql; AddParametersToCommand(cmd, parameters); transaction = this.Context.GetTransaction(connection); if (transaction != null) { cmd.Transaction = transaction.DbTransaction; } dr = cmd.ExecuteReader(); result = ReaderToDataTable(dr); dr.Close(); dataSource.ReturnConnection(); } SqlExecutorEventArgs e2 = new SqlExecutorEventArgs(sql, dataSource, parameters); this.Context.EventManager.OnExecutedSql(this, e2); return result; }
public virtual void ExecuteBatchedStatements(IDataSource dataSource) { if (!(m_BatchStatements.ContainsKey(dataSource))) { return; } IDbConnection connection; IDbCommand cmd; int result; string sqlBatch = ""; long matchResult = 0; IList parameters = new ArrayList() ; foreach (BatchedSqlStatement sql in ((ArrayList) (m_BatchStatements[dataSource]))) { sqlBatch += sql.Sql + ";"; matchResult += 1; foreach (QueryParameter parameter in sql.Parameters) parameters.Add(parameter); } SqlExecutorCancelEventArgs e = new SqlExecutorCancelEventArgs(sqlBatch, dataSource, parameters); this.Context.EventManager.OnExecutingSql(this, e); if (e.Cancel) { this.Context.LogManager.Warn(this, "Executing batched statements canceled by observer!", "Sql: " + e.Sql); // do not localize } sqlBatch = e.Sql; dataSource = e.DataSource; parameters = e.Parameters; connection = dataSource.GetConnection(); cmd = connection.CreateCommand(); cmd.CommandText = sqlBatch; AddParametersToCommand(cmd, parameters); result = cmd.ExecuteNonQuery(); cmd.Dispose(); dataSource.ReturnConnection(); SqlExecutorEventArgs e2 = new SqlExecutorEventArgs(sqlBatch, dataSource, parameters); this.Context.EventManager.OnExecutedSql(this, e2); if (!(result == matchResult)) { throw new OptimisticConcurrencyException("An optimistic concurrency exception occurred when executing a batch statement!", null); // do not localize } }
//public virtual IDataReader ExecuteReader(string sql, IDataSource dataSource, IDbConnection connection, IList parameters) public virtual IDataReader ExecuteReader(string sql, IDataSource dataSource, IList parameters) { this.Context.LogManager.Info(this, "Executing sql query and returning data reader", "Sql: " + sql); // do not localize IDbConnection connection; IDbCommand cmd; IDataReader dr; ITransaction transaction; SqlExecutorCancelEventArgs e = new SqlExecutorCancelEventArgs(sql, dataSource, parameters); this.Context.EventManager.OnExecutingSql(this, e); if (e.Cancel) { this.Context.LogManager.Warn(this, "Executing sql query and returning data reader canceled by observer!", "Sql: " + sql); // do not localize return null; } sql = e.Sql; dataSource = e.DataSource; parameters = e.Parameters; if (m_ExecutionMode == ExecutionMode.NoExecution) { return null; } ExecuteBatchedStatements(dataSource); connection = dataSource.GetConnection(); cmd = connection.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = sql; AddParametersToCommand(cmd, parameters); transaction = this.Context.GetTransaction(connection); if (transaction != null) { cmd.Transaction = transaction.DbTransaction; } dr = cmd.ExecuteReader(); SqlExecutorEventArgs e2 = new SqlExecutorEventArgs(sql, dataSource, parameters); this.Context.EventManager.OnExecutedSql(this, e2); //clone data and return the offline data to the rest of NP return new OfflineDataReader(dr); }
public virtual int ExecuteNonQuery(string sql, IDataSource dataSource, IList parameters) { if (dataSource == null) throw new ArgumentNullException("dataSource"); this.Context.LogManager.Info(this, "Executing non query", "Sql: " + sql); // do not localize IDbConnection connection; IDbCommand cmd; int result = 0; ITransaction transaction; bool postPoned = false; if (m_ExecutionMode == ExecutionMode.BatchExecution) postPoned = true; SqlExecutorCancelEventArgs e = new SqlExecutorCancelEventArgs(sql, dataSource, parameters, postPoned); this.Context.EventManager.OnExecutingSql(this, e); if (e.Cancel) { this.Context.LogManager.Warn(this, "Executing non query canceled by observer!", "Sql: " + sql); // do not localize return 0; } sql = e.Sql; dataSource = e.DataSource; parameters = e.Parameters; if (m_ExecutionMode == ExecutionMode.NoExecution || m_ExecutionMode == ExecutionMode.NoWriteExecution) { result = 1; } else if (m_ExecutionMode == ExecutionMode.BatchExecution) { result = 1; BatchStatement(sql, dataSource, parameters); } else if (m_ExecutionMode == ExecutionMode.DirectExecution) { connection = dataSource.GetConnection(); cmd = connection.CreateCommand(); cmd.CommandType = CommandType.Text; AddParametersToCommand(cmd, parameters); cmd.CommandText = sql; transaction = this.Context.GetTransaction(connection); if (transaction != null) { cmd.Transaction = transaction.DbTransaction; } result = cmd.ExecuteNonQuery(); dataSource.ReturnConnection(); } SqlExecutorEventArgs e2 = new SqlExecutorEventArgs(sql, dataSource, parameters, postPoned); this.Context.EventManager.OnExecutedSql(this, e2); return result; }
public virtual void OnExecutedSql(object sender, SqlExecutorEventArgs e) { }
public virtual void OnExecutedSql(object sender, SqlExecutorEventArgs e) { if (!(m_RaiseEvents)) { return; } if (!(m_RaiseAfterEvents)) { return; } if (!(m_RaiseSqlExecutorEvents)) { return; } foreach (IObserver observer in m_Observers) { observer.OnExecutedSql(sender, e); } foreach (IObserver observer in m_ContextObservers) { observer.OnExecutedSql(sender, e); } this.Observer.OnExecutedSql(sender, e); }
public virtual object ExecuteArray(string sql, IDataSource dataSource, IList parameters) { LogMessage message = new LogMessage("Executing sql query and returning array"); LogMessage verbose = new LogMessage("Sql: {0}", sql); this.Context.LogManager.Info(this, message, verbose); // do not localize IDbConnection connection; IDbCommand cmd; IDataReader dr; object result = null; ITransaction transaction; SqlExecutorCancelEventArgs e = new SqlExecutorCancelEventArgs(sql, dataSource, parameters); this.Context.EventManager.OnExecutingSql(this, e); if (e.Cancel) { message = new LogMessage("Executing sql query and returning array canceled by observer!"); verbose = new LogMessage("Sql: {0}", sql); this.Context.LogManager.Info(this, message, verbose); // do not localize return null; } sql = e.Sql; parameters = e.Parameters; if (!(m_ExecutionMode == ExecutionMode.NoExecution)) { ExecuteBatchedStatements(dataSource); connection = dataSource.GetConnection(); cmd = connection.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = sql; AddParametersToCommand(cmd, parameters); transaction = this.Context.GetTransaction(connection); if (transaction != null) { cmd.Transaction = transaction.DbTransaction; } dr = cmd.ExecuteReader(); result = ReaderToArray(dr); dr.Close(); dataSource.ReturnConnection(); } SqlExecutorEventArgs e2 = new SqlExecutorEventArgs(sql, dataSource, parameters); this.Context.EventManager.OnExecutedSql(this, e2); return result; }