public SqlBuilder Append(SqlBuilder sql) { sql.ShouldNotBeNull("sql"); if(_rhs != null) _rhs.Append(sql); else _rhs = sql; return this; }
/// <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); }
public SqlJoinClause(SqlBuilder sqlBuilder) { sqlBuilder.ShouldNotBeNull("sqlBuilder"); _sqlBuilder = sqlBuilder; }
/// <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); }