SQL 문자열을 빌드하는 헬퍼 클래스입니다.
예제 #1
0
        public SqlBuilder Append(SqlBuilder sql) {
            sql.ShouldNotBeNull("sql");

            if(_rhs != null)
                _rhs.Append(sql);
            else
                _rhs = sql;

            return this;
        }
예제 #2
0
        /// <summary>
        /// <paramref name="sqlBuilder"/> 의  내부 Sql 문장에 <paramref name="sqlType"/>의 예약어로 시작하는지 검사합니다.
        /// </summary>
        /// <param name="sqlBuilder"></param>
        /// <param name="sqlType"></param>
        /// <returns></returns>
        private static bool Is(SqlBuilder sqlBuilder, string sqlType) {
            if(sqlBuilder == null)
                return false;

            return sqlBuilder._sql.IsNotWhiteSpace() &&
                   sqlBuilder._sql.StartsWith(sqlType, StringComparison.InvariantCultureIgnoreCase);
        }
예제 #3
0
 public SqlJoinClause(SqlBuilder sqlBuilder) {
     sqlBuilder.ShouldNotBeNull("sqlBuilder");
     _sqlBuilder = sqlBuilder;
 }
예제 #4
0
        /// <summary>
        /// SQL 문장과 파라미터 정보를 이용하여 SQL 문장을 완성합니다.
        /// </summary>
        /// <param name="sb"></param>
        /// <param name="args"></param>
        /// <param name="lhs"></param>
        private void Build(StringBuilder sb, IList<object> args, SqlBuilder lhs = null) {
            if(_sql.IsNotWhiteSpace()) {
                if(sb.Length > 0)
                    sb.AppendLine();

                string sql = AdoProviderTool.ProcessParams(_sql, _args, args);

                if(Is(lhs, SqlSR.WHERE) && Is(this, SqlSR.WHERE))
                    sql = SqlSR.AND + sql.Substring(SqlSR.WHERE.Length);

                if(Is(lhs, SqlSR.ORDER_BY) && Is(this, SqlSR.ORDER_BY))
                    sql = ", " + sql.Substring(SqlSR.ORDER_BY.Length);

                sb.Append(sql);
            }

            //  do for rhs
            if(_rhs != null)
                _rhs.Build(sb, args, this);
        }