Example #1
0
        private DbCommand CreateCommand(SQLQuery query, DbConnection connection, DbTransaction transaction = null)
        {
            var command = DbFactory.CreateCommand();

            command.Connection = connection;
            AddParameters(command, query);
            command.CommandText = query.ModifiedSQL;
            command.CommandType = query.CommandType;
            if (transaction != null)
            {
                command.Transaction = transaction;
            }
            return(command);
        }
Example #2
0
        private void DumpSqlAndParamsToLog(SQLQuery query)
        {
            if (LogMessage == null || !DebugLoggingEnabled)
            {
                return;
            }

            var sb = new System.Text.StringBuilder();

            sb.AppendFormat("About to execute \"{0}\" ", query.ModifiedSQL);
            if (query.Parameters.Count > 0)
            {
                sb.Append(" with parameters:\r\n");
                foreach (string key in query.Parameters.Keys)
                {
                    sb.AppendFormat("{0}={1} with type {2}.\r\n", key, query.Parameters[key], query.Parameters[key].GetType());
                }
            }
            else
            {
                sb.Append(" with no parameters.");
            }
            LogDebug(sb.ToString());
        }
Example #3
0
 private void AddParameters(DbCommand command, SQLQuery query)
 {
     foreach (string paramName in query.InParameters.Keys)
     {
         if (query.InParameters[paramName] != null && query.InParameters[paramName].Any() && query.ModifiedSQL.Contains("@" + paramName))
         {
             var parameterDictionary = new Dictionary <string, object>();
             foreach (var value in query.InParameters[paramName])
             {
                 parameterDictionary.Add(string.Format("{0}{1}", paramName, parameterDictionary.Count), value);
             }
             //TODO: this needs to be a regex otherwise it could be prone to replacing paramName that starts with the same name eg. @myvar & @myvar2.
             query.ModifiedSQL = query.ModifiedSQL.Replace("@" + paramName, string.Join(",", parameterDictionary.Select(pd => "@" + pd.Key)));
             foreach (var parameter in parameterDictionary.Keys)
             {
                 query.Parameters.Add(parameter, parameterDictionary[parameter]);
             }
         }
     }
     foreach (string paramName in query.Parameters.Keys)
     {
         command.Parameters.Add(CreateParameter(paramName, query.Parameters[paramName]));
     }
 }
Example #4
0
 public void RunQuery(SQLQuery query)
 {
     RunQuery(new[] { query }, TransactionOpen);
 }
Example #5
0
 public async Task RunQueryAsync(SQLQuery query)
 {
     await RunQueryAsync(new[] { query }, TransactionOpen);
 }