private string buildSelectQuery(string tableName, List <Tuple <string, string, Clauses> > clausesList)
        {
            StringBuilder queryBuilder = new StringBuilder();

            Action <Tuple <string, string, Clauses> > appendClause = delegate(Tuple <string, string, Clauses> clause)
            {
                queryBuilder.Append(clause.Item2);
                string symbol = Convert.ToString((char)clause.Item3);
                if (symbol == "|")
                {
                    symbol = "<=";
                }
                if (symbol == ";")
                {
                    symbol = ">=";
                }

                queryBuilder.AppendFormat(" {0} ", symbol);
                queryBuilder.AppendFormat(":{0} ", clause.Item1);
            };

            Action apendSelectColumns = delegate()
            {
                queryBuilder.Append("select ");
                if (SelectColumnNames == null)
                {
                    queryBuilder.Append('*');
                    return;
                }
                SelectColumnNames.ForEach(column =>
                                          queryBuilder.AppendFormat(" {0},", column));
                queryBuilder.Remove(queryBuilder.Length - 1, 1);
            };

            apendSelectColumns();
            queryBuilder.AppendFormat(" from {0} ", tableName);

            if (clausesList.Count > 0)
            {
                queryBuilder.Append("where ");
            }

            for (int index = 0; index < clausesList.Count - 1; index++)
            {
                appendClause(clausesList[index]);
                queryBuilder.Append(" and ");
            }

            if (clausesList.Count > 0)
            {
                appendClause(clausesList[clausesList.Count - 1]);
            }

            queryBuilder.Append(" allow filtering");

            return(queryBuilder.ToString());
        }
コード例 #2
0
 private void BeginSelectSql() {
     QueryText.AppendLine($@"SELECT {string.Join(", ", SelectColumnNames.Select(col => $"st.{QB}{col}{QE}"))}");
     QueryText.AppendLine($@"FROM {TN.QuotatedFullName} st");
     QueryText.AppendLine("INNER JOIN (");
     if (ConnectionType == ConnectionManagerType.MySql && IsMariaDb)
         QueryText.AppendLine($@"WITH ws ( {string.Join(", ", SourceColumnNames.Select(col => $"{QB}{col}{QE}"))} ) AS ( VALUES");
     else if (ConnectionType == ConnectionManagerType.Oracle)
         QueryText.Append("");
     else
         QueryText.AppendLine("VALUES");
 }