/// <summary> /// Executes the command described by <see cref="query"/> on the server and /// runs the method <paramref name="mapper"/> to map the result set to /// the type <typeparamref name="T"/>. /// </summary> /// <typeparam name="T"> /// The type of the object that should be returned. /// </typeparam> /// <param name="query"> /// The query to be executed on the server. /// </param> /// <param name="command_type"> /// The type of the command that is described by the /// <paramref name="query"/> parameter. /// </param> /// <param name="mapper"> /// A <see cref="Func{TResult}"/> that builds a /// <see cref="IDataReaderMapper{T}"/> that can be used to map /// result of the given <paramref name="query"/> to a /// object of the type <typeparamref name="T"/>. /// </param> /// <param name="set_parameters"> /// A <see cref="Action{T}"/> that allows the caller to set the values /// of the parameters defined on the given query. /// </param> /// <returns> /// The object produced by the execution of the method /// <paramref name="mapper"/>. /// </returns> /// <remarks> /// The mapper returned from the <see cref="Func{TResult}"/> is cached /// internally and associated with the given <paramref name="query"/>. The /// cache is never flushed. If you are generating SQL strings on the fly /// without using parameters it is possible you hit memory issues. /// </remarks> public IQueryMapper <T> ExecuteQuery <T>(string query, Func <IDataReaderMapper <T> > mapper, Action <CommandBuilder> set_parameters, CommandType command_type) { MySqlConnection conn = mysql_connection_provider_.CreateConnection(); var builder = new CommandBuilder(conn); IDbCommand cmd = builder .SetText(query) .SetType(command_type) .Set(set_parameters) .Build(); try { conn.Open(); IDataReader reader = cmd.ExecuteReader(); var m = (IDataReaderMapper <T>)cache_.GetOrAdd(query, s => mapper()); return(new QueryMapper <T>(m, reader, new IDisposable[] { builder, conn })); } catch (MySqlException e) { logger_.Error( StringResources .Log_MethodThrowsException .Fmt("ExecuteQuery", kClassName), e); builder.Dispose(); conn.Dispose(); throw e.AsProviderException(); } catch { builder.Dispose(); conn.Dispose(); throw; } }
/// <exception cref="ProviderException"> /// An exception has occured while executing the query. /// </exception> public bool Execute(string name, out string state) { using (SqlConnection conn = sql_connection_provider_.CreateConnection()) using (var builder = new CommandBuilder(conn)) { IDbCommand cmd = builder .SetText(sql_connection_provider_.Schema + kExecute) .SetType(CommandType.StoredProcedure) .AddParameter(kNameParameter, name) .Build(); try { conn.Open(); object obj = cmd.ExecuteScalar(); if (obj != null) { state = (string)obj; return(true); } } catch (SqlException e) { logger_.Error(string.Format( R.Log_MethodThrowsException, "Execute", kClassName), e); throw new ProviderException(e); } state = null; return(false); } }
public int Execute(string state_name, string table_name, bool likely = false) { using (var scope = new TransactionScope(SupressTransactions ? TransactionScopeOption.Suppress : TransactionScopeOption.Required)) { using (SqlConnection conn = sql_connection_provider_.CreateConnection()) using (var builder = new CommandBuilder(conn)) { IDbCommand cmd = builder .SetText("delete from " + table_name + " where state_name " + (likely ? " like " : "=") + "@name") .SetType(CommandType.Text) .AddParameter("@name", state_name) .Build(); try { conn.Open(); int affected = cmd.ExecuteNonQuery(); scope.Complete(); return(affected); } catch (SqlException e) { logger_.Error( StringResources.Log_MethodThrowsException.Fmt("Execute", kClassName), e); throw e.AsProviderException(); } } } }
public bool Execute <T>(string state_name, string table_name, out T state) { using ( new TransactionScope(SupressTransactions ? TransactionScopeOption.Suppress : TransactionScopeOption.Required)) { using ( SqlCeConnection conn = sql_connection_provider_.CreateConnection()) using (var builder = new CommandBuilder(conn)) { IDbCommand cmd = builder .SetText("select state from " + table_name + " where name=@name") .SetType(CommandType.Text) .AddParameter("@name", state_name) .Build(); try { conn.Open(); object obj = cmd.ExecuteScalar(); if (obj == null) { state = default(T); return(false); } state = (T)obj; return(true); } catch (SqlCeException e) { logger_.Error( StringResources.Log_MethodThrowsException.Fmt("Execute", kClassName), e); throw e.AsProviderException(); } } } }
public T ExecuteQuery <T>(string query, Func <IDataReader, T> mapper, Action <CommandBuilder> set_parameters, CommandType command_type) { using (SqlConnection conn = sql_connection_provider_.CreateConnection()) using (var builder = new CommandBuilder(conn)) { IDbCommand cmd = builder .SetText(query) .SetType(command_type) .Set(set_parameters) .Build(); try { conn.Open(); using (IDataReader reader = cmd.ExecuteReader()) { return(mapper(reader)); } } catch (SqlException e) { logger_.Error( StringResources .Log_MethodThrowsException .Fmt("ExecuteQuery", kClassName), e); throw e.AsProviderException(); } } }
/// <inheritdoc/> public void Execute(string name, string state) { using (SqlConnection conn = sql_connection_provider_.CreateConnection()) using (var builder = new CommandBuilder(conn)) { IDbCommand cmd = builder .SetText(sql_connection_provider_.Schema + kExecute) .SetType(CommandType.StoredProcedure) .AddParameter(kNameParameter, name) .AddParameter(kStateParameter, state) .Build(); try { conn.Open(); cmd.ExecuteNonQuery(); } catch (SqlException e) { logger_.Error( string.Format(R.Log_MethodThrowsException, "Execute", kClassName), e); throw new ProviderException(e); } } }
public IHiLoRange Execute(string key) { using (SqlConnection conn = sql_connection_provider_.CreateConnection()) using (var builder = new CommandBuilder(conn)) { IDbCommand cmd = builder .SetText(sql_connection_provider_.Schema + kExecute) .SetType(CommandType.StoredProcedure) .AddParameter(kKeyParameter, key) .Build(); try { conn.Open(); using (IDataReader reader = cmd.ExecuteReader()) { return(mapper_.Map(reader)); } } catch (SqlException e) { logger_.Error(string.Format( StringResources.Log_MethodThrowsException, "Execute", kClassName), e); throw new ProviderException(e); } } }
void LogError(Exception e, string method) { logger_.Error(string.Format(StringResources.Log_MethodThrowsException, method, kClassName), e); }