Пример #1
0
        /// <summary>
        ///   SQLのWHERE条件文を生成する(可変長パラメータ版)
        /// </summary>
        /// <remarks>
        ///   <para>
        ///     'WHERE'キーワード自身は付かない。
        ///   </para>
        /// </remarks>
        public string ToString(object[] paramlist)
        {
            if (paramlist == null)
            {
                throw new ArgumentException("Parameter idnew is null.");
            }
            if (paramlist.Length != NParams)
            {
                throw new ArgumentException(String.Format("Invalid number of parameters. (required={0}, supplied={1})", NParams, paramlist.Length));
            }
            StringBuilder sb  = new StringBuilder();
            int           i   = 0;
            int           ptr = 0;
            int           nptr;
            string        pword;

            while ((i < paramlist.Length) && ((pword = nextParamWord(expr, ptr, out nptr)) != null))
            {
                sb.Append(expr.Substring(ptr, nptr - ptr));
                string x = (paramlist[i] == null)?null:paramlist[i].ToString();
                if (String.IsNullOrEmpty(x))
                {
                    if (pword == NumberParamWord)
                    {
                        x = "0";
                    }
                    else
                    {
                        x = "";
                    }
                }
                sb.Append(DBCon.LikeEscape(x));
                i++;
                ptr = nptr + pword.Length;
            }
            sb.Append(expr.Substring(ptr));
            return(sb.ToString());
        }