Esempio n. 1
0
        /// <summary>
        /// Build database SQL query clause for one criterion.
        /// Assumes field is date.
        /// </summary>
        /// <param name="prefix">operator to precede clause, e.g. "AND"</param>
        /// <param name="sf">StationField which describes the desired field</param>
        /// <param name="c"></param>
        /// <returns>empty string if c is null</returns>
        public static string AddSqlDateClause(string prefix, StationField sf, Criterion c)
        {
            string clause = "";
            if (c != null)
            {
                clause = " " + prefix + " ";
                if (c.IsUnaryOperator())
                {
                    clause += SqlUnaryOperation(c, sf);
                }
                else
                { // binary operator
                    // TODO Idea: recognize keyword like "TODAY", would require a special clause

                    // TODO "equals" for date doesn't work -- need to compare only the date,
                    //     not the time (or adjust the end time to 11:59:59)

                    clause += sf.Location + " ";
                    clause += SqlBinaryOperator(c.Operation) +
                        " TO_DATE('" + c.Value + "','" + SqlDateFormat(c.Value) + "') ";
                }
            }
            return clause;
        }
Esempio n. 2
0
 /// <summary>
 /// Build database SQL query clause for one criterion.
 /// Assumes field is numeric.
 /// </summary>
 /// <param name="prefix">operator to precede clause, e.g. "AND"</param>
 /// <param name="sf">StationField which describes the desired field</param>
 /// <param name="c"></param>
 /// <returns>empty string if c is null</returns>
 public static string AddSqlNumberClause(string prefix, StationField sf, Criterion c)
 {
     string clause = "";
     if (c != null)
     {
         clause = " " + prefix + " ";
         if (c.IsUnaryOperator())
         {
             clause += SqlUnaryOperation(c, sf);
         }
         else
         { // binary operator
             clause += sf.Location + " ";
             clause += SqlBinaryOperator(c.Operation) +
                 // still use quotes in case it's not really a number field
                 // or the operator is "LIKE"
                     " '" + c.Value + "' ";
         }
     }
     return clause;
 }
Esempio n. 3
0
 /// <summary>
 /// Build database SQL query clause for one criterion.
 /// Assumes field is string or string-compatible.
 /// </summary>
 /// <param name="prefix">operator to precede clause, e.g. "AND"</param>
 /// <param name="sf">StationField which describes the desired field</param>
 /// <param name="c"></param>
 /// <returns>empty string if c is null</returns>
 public static string AddSqlTextClause(string prefix, StationField sf, Criterion c)
 {
     string clause = "";
     if (c != null)
     {
         clause = " " + prefix + " ";
         if (c.IsUnaryOperator())
         {
             clause += SqlUnaryTextOperation(c, sf);
         }
         else
         { // binary operator
             clause += sf.Location + " ";
             clause += SqlBinaryOperator(c.Operation) +
                        " '" + c.Value + "' ";
         }
     }
     return clause;
 }