예제 #1
0
        public string GetUpdateSQL(string tableNm, UpdateObject updatefield, WhereObject where)
        {
            StringBuilder builder = new StringBuilder();
            //string updatefieldformat = string.Empty;
            string whereformat = string.Empty;

            builder.AppendFormat("{0} {1} Set ", ResFactory.ResManager.SQLUpdate, tableNm);
            if (updatefield == null)
            {
                throw new LibExceptionBase("param updatefield is not null");
            }
            if (!string.IsNullOrEmpty(updatefield.UpdateFieldFormat))
            {
                where.AppendWhereFormat(" ", updatefield.UpdateFieldFormat, updatefield.Values);
                updatefield.WhereFormat = where.GetUpdatefieldformat();
                builder.Append(updatefield.UpdateFieldSQL);
            }
            whereformat = where.WhereFormat.Replace(updatefield.UpdateFieldSQL, "");
            if (!string.IsNullOrEmpty(whereformat))
            {
                return(string.Format("EXEC sp_executesql N'{0} where {1}',{2}", builder.ToString(), whereformat, where.ValueTostring));
            }
            else if (!string.IsNullOrEmpty(updatefield.UpdateFieldFormat))
            {
                return(string.Format("EXEC sp_executesql N'{0}',{1}", builder.ToString(), where.ValueTostring));
            }
            return(string.Format("EXEC sp_executesql N'{0}'", builder.ToString()));
        }
예제 #2
0
        private void DoJoinOnCondition(string condition, WhereObject where)
        {
            string[]      array      = condition.ToUpper().Split('=');
            string[]      separator  = { "(", ")", "AND", "OR" };
            string        itemstr    = string.Empty;
            StringBuilder condformat = new StringBuilder();

            object[] valus = { };
            //string pattern = "^[0-9]*$";
            //Regex regex = new Regex(pattern);
            if (array.Length > 0)
            {
                condformat.Append(array[0]);
                int   index = -1;
                int   n     = 0;
                Int32 val   = -1;
                for (int i = 1; i < array.Length; i++)
                {
                    foreach (string sep in separator)
                    {
                        index = array[i].IndexOf(sep);
                        if (index == -1)
                        {
                            continue;
                        }
                        break;
                    }
                    val = -1;
                    if (index != -1)
                    {
                        itemstr = array[i].Substring(0, index).Trim();
                        if (itemstr.Contains("'") || LibSysUtils.IsNumberic(itemstr, out val))
                        {
                            condformat.AppendFormat("={0} ", array[i].Replace(itemstr, "{" + n + "} "));
                            n++;
                            Array.Resize(ref valus, valus.Length + 1);
                            if (val == -1)
                            {
                                valus[valus.Length - 1] = itemstr.Trim();
                            }
                            else
                            {
                                valus[valus.Length - 1] = val;
                            }
                            //valus[valus.Length - 1] =(val == -1 ? itemstr.Trim() : val);
                        }
                        else
                        {
                            condformat.AppendFormat("={0} ", array[i]);
                        }
                    }
                    else
                    {
                        if (array[i].Contains("'") || LibSysUtils.IsNumberic(array[i], out val))
                        {
                            condformat.AppendFormat("={0} ", array[i].Replace(array[i], "{" + n + "} "));
                            n++;
                            Array.Resize(ref valus, valus.Length + 1);
                            if (val == -1)
                            {
                                valus[valus.Length - 1] = val;
                            }
                            else
                            {
                                valus[valus.Length - 1] = array[i].Replace(SysConstManage.SingleQuotes, ' ').Trim();
                            }
                        }
                        else
                        {
                            condformat.AppendFormat("={0}", array[i]);
                        }
                    }
                }
                where.AppendWhereFormat(ResFactory.ResManager.SQLAnd, string.Format("({0})", condformat), valus);
            }
        }