コード例 #1
0
        /// <summary>
        /// 输出SQL语句
        /// 1.各sql参数对应实例化后拼起来就构成SqlString
        /// </summary>
        /// <param name="paramValues">第一个参数值必须是入口参数类对象,如果入口参数类为null,第一个参数填null.标准参数编号从1开始到9</param>
        /// <returns></returns>
        public string ToString(ISql isql, params object[] paramValues)
        {
            StringBuilder sql        = new StringBuilder();
            object        paramValue = null;

            // 1.标准参数(mSqlParams[i].ParamSeq > 0),参数值按顺序
            // 2.属性参数(mSqlParams[i].ParamSeq == 0),参数值按属性名称
            // 3.末尾参数(mSqlParams[i].ParamSeq == -1),无参数
            // 4.条件参数处理
            //   如果不是空参数值,需要将参数值替换参数sql字段的参数占位符{0}
            //   如果是空参数,则不作处理
            for (int i = 0; i < mSqlParams.Count; i++)
            {
                if (mSqlParams[i].ParamSeq != -1)
                {
                    if (mSqlParams[i].ParamSeq == 0)
                    {
                        paramValue = ReflectUtil.GetPropertyValue(paramValues[0], mSqlParams[i].ParamName);
                    }
                    else //if (mSqlParams[i].ParamSeq > 0)
                    {
                        paramValue = paramValues[mSqlParams[i].ParamSeq];
                    }


                    if (mSqlParams[i].IsConditionParam == true)
                    {
                        if (DbUtil.isnull(paramValue) == false)
                        {
                            sql.AppendFormat(mSqlParams[i].ParamSql, isql.ToString(paramValue));
                        }
                    }
                    else
                    {
                        sql.Append(mSqlParams[i].ParamSql).Append(isql.ToString(paramValue));
                    }
                }
                else
                {
                    sql.Append(mSqlParams[i].ParamSql);
                }
            }
            // 排序
            sql.Append(mOrderBy);

            return(sql.ToString());
        }