internal static IDataCommand ApplyParameters(
            this IDataCommand cmd,
            ISqlBuilder query,
            IDictionary parameters,
            char parameterPrefix = '@')
        {
            if (cmd is null)
            {
                throw new ArgumentNullException(nameof(cmd));
            }

            if (query is null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            cmd.Type = System.Data.CommandType.Text;

            if (parameters != null && parameters.Count > 0)
            {
                bool replace    = parameterPrefix != DefaultPrefix;
                var  enumerator = parameters.GetEnumerator();
                enumerator.MoveNext();
                var hasPrefix = enumerator.Key.ToString()[0] == DefaultPrefix;

                foreach (string key in parameters.Keys)
                {
                    var parameterName = parameterPrefix + key;
                    var value         = parameters[key];

                    if (!replace)
                    {
                        cmd.AddParameter(parameterName, value);
                        continue;
                    }

                    if (hasPrefix)
                    {
                        parameterName = parameterPrefix + key.Substring(1);
                        query.ToStringBuilder().Replace(key, parameterName);
                        cmd.AddParameter(parameterName, value);
                        continue;
                    }

                    query.ToStringBuilder().Replace(DefaultPrefix + key, parameterName);
                    cmd.AddParameter(parameterName, value);
                }
            }

            cmd.Text = query.ToString(true);
            return(cmd);
        }
        internal static IDataCommand ApplyParameters(
            this IDataCommand cmd,
            ISqlBuilder query,
            IEnumerable <KeyValuePair <string, object> > parameters,
            char parameterPrefix = '@')
        {
            if (cmd is null)
            {
                throw new ArgumentNullException(nameof(cmd));
            }

            if (query is null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            cmd.Type = System.Data.CommandType.Text;

            if (parameters != null)
            {
                bool replace   = parameterPrefix != DefaultPrefix;
                bool hasPrefix = parameters.First().Key[0] == DefaultPrefix;

                foreach (var set in parameters)
                {
                    var key           = set.Key;
                    var parameterName = parameterPrefix + key;
                    var value         = set.Value;

                    if (!replace)
                    {
                        cmd.AddParameter(key, value);
                        continue;
                    }

                    if (hasPrefix)
                    {
                        parameterName = parameterPrefix + key.Substring(1);
                        query.ToStringBuilder().Replace(key, parameterName);
                        cmd.AddParameter(parameterName, value);
                        continue;
                    }

                    query.ToStringBuilder().Replace(DefaultPrefix + key, parameterName);
                    cmd.AddParameter(parameterName, value);
                }
            }

            cmd.Text = query.ToString(true);
            return(cmd);
        }
Example #3
0
        private string AddParameter(IDataCommand cmd, object value)
        {
            var paramName = string.Format("@p{0}", _parameterCount);
            _parameterCount++;

            cmd.AddParameter(paramName, value);

            return paramName;
        }
        internal static IDataCommand ApplyParameters(
            this IDataCommand cmd,
            ISqlBuilder query,
            IList <object> parameters,
            char parameterPrefix = '@',
            string placeholder   = "[?]")
        {
            if (cmd is null)
            {
                throw new ArgumentNullException(nameof(cmd));
            }

            if (query is null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            if (parameterPrefix == char.MinValue)
            {
                parameterPrefix = '@';
            }

            var sql = query.ToString(true);

            if (parameters != null && parameters.Count > 0)
            {
                int index = 0;

                // TODO: write a parser
                sql = Regex.Replace(sql, placeholder, (m) =>
                {
                    var name = parameterPrefix + index.ToString(CultureInfo.InvariantCulture);
                    cmd.AddParameter(name, parameters[index]);
                    index++;

                    return(name);
                });
            }

            cmd.Text = sql;
            cmd.Type = CommandType.Text;
            return(cmd);
        }
 /// <summary>
 /// 赋sql语句参数值
 /// </summary>
 /// <param name="cmd"></param>
 /// <param name="paras"></param>
 public static void PrepareCommand(IDataCommand cmd, Hashtable paras)
 {
     IDbDataParameter para = null;
     if (paras != null)
     {
         foreach (DictionaryEntry de in paras)
         {
             para = cmd.CreateParameter();
             para.ParameterName = de.Key.ToString();
             para.Value = de.Value.ToString();
             cmd.AddParameter(para);
         }
     }
 }
Example #6
0
        private void GenerateUpdateValues(StringBuilder builder, QueryTemplate template, IDataCommand cmd)
        {
            bool first = true;
            foreach (var valueItem in template.UpdateValues)
            {
                if (!first) builder.Append(",");

                var paramName = "@" + valueItem.ColumnName;
                builder.AppendFormat("{0} = {1}", valueItem.ColumnName, paramName);
                cmd.AddParameter(paramName, valueItem.Value);

                first = false;
            }
            builder.Append(" ");
        }
Example #7
0
        private void GenerateInsertValues(StringBuilder builder, QueryTemplate template, IDataCommand cmd)
        {
            builder.Append("VALUES (");

            bool first = true;
            foreach (var valueItem in template.InsertValues)
            {
                if (!first) builder.Append(",");

                var paramName = "@" + valueItem.ColumnName;
                builder.Append(paramName);
                cmd.AddParameter(paramName, valueItem.Value);

                first = false;
            }

            builder.Append(") ");
        }