Example #1
0
        public override string GetConditionSqlString(SqlCondition condition, SqlParameterCollection paras)
        {
            string strSQL = string.Empty;

            switch (condition.Type)
            {
            case SqlConditionType.Match:
                strSQL = string.Format("{0} like {1} ESCAPE '~'", condition.Column,
                                       this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", "%"))));
                break;

            case SqlConditionType.MatchPrefix:
                strSQL = string.Format("{0} like {1} ESCAPE '~'", condition.Column,
                                       this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "", "%"))));
                break;

            case SqlConditionType.MatchSuffix:
                strSQL = string.Format("{0} like {1} ESCAPE '~'", condition.Column,
                                       this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", ""))));
                break;

            case SqlConditionType.NotMatch:
                strSQL = string.Format("{0} not like {1} ESCAPE '~'", condition.Column,
                                       this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", "%"))));
                break;

            case SqlConditionType.NotMatchPrefix:
                strSQL = string.Format("{0} not like {1} ESCAPE '~'", condition.Column,
                                       this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "", "%"))));
                break;

            case SqlConditionType.NotMatchSuffix:
                strSQL = string.Format("{0} not like {1} ESCAPE '~'", condition.Column,
                                       this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", ""))));
                break;

            default:
                return(base.GetConditionSqlString(condition, paras));
            }

            return(strSQL);
        }
        public virtual string GetConditionSqlString(SqlCondition condition, SqlParameterCollection paras)
        {
            string strSQL = string.Empty;

            switch (condition.Type)
            {
            case SqlConditionType.EqualTo:
                if (condition.Value == null)
                {
                    strSQL = condition.Column + " is null ";
                }
                else
                {
                    strSQL = string.Format("{0} = {1}", condition.Column, this.BuildParameterName(paras.GenerateParameter(condition.Value)));
                }
                break;

            case SqlConditionType.NotEqualTo:
                if (condition.Value == null)
                {
                    strSQL = condition.Column + " is not null ";
                }
                else
                {
                    strSQL = string.Format("{0} <> {1}", condition.Column, this.BuildParameterName(paras.GenerateParameter(condition.Value)));
                }
                break;

            case SqlConditionType.GreaterThan:
                strSQL = string.Format("{0} > {1}", condition.Column, this.BuildParameterName(paras.GenerateParameter(condition.Value)));
                break;

            case SqlConditionType.GreaterThanAndEqualTo:
                strSQL = string.Format("{0} >= {1}", condition.Column, this.BuildParameterName(paras.GenerateParameter(condition.Value)));
                break;

            case SqlConditionType.LessThan:
                strSQL = string.Format("{0} < {1}", condition.Column, this.BuildParameterName(paras.GenerateParameter(condition.Value)));
                break;

            case SqlConditionType.LessThanAndEqualTo:
                strSQL = string.Format("{0} <= {1}", condition.Column, this.BuildParameterName(paras.GenerateParameter(condition.Value)));
                break;

            case SqlConditionType.Match:
                strSQL = string.Format("{0} like {1} ESCAPE N'~'", condition.Column,
                                       this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", "%"))));
                break;

            case SqlConditionType.MatchFullText:
                strSQL = string.Format("CONTAINS({0},'\"{1}\"')", condition.Column, CorrectFullTextConditionValue(condition.Value));
                break;

            case SqlConditionType.MatchPrefix:
                strSQL = string.Format("{0} like {1} ESCAPE N'~'", condition.Column,
                                       this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "", "%"))));
                break;

            case SqlConditionType.MatchSuffix:
                strSQL = string.Format("{0} like {1} ESCAPE N'~'", condition.Column,
                                       this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", ""))));
                break;

            case SqlConditionType.NotMatch:
                strSQL = string.Format("{0} not like {1} ESCAPE N'~'", condition.Column,
                                       this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", "%"))));
                break;

            case SqlConditionType.NotMatchPrefix:
                strSQL = string.Format("{0} not like {1} ESCAPE N'~'", condition.Column,
                                       this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "", "%"))));
                break;

            case SqlConditionType.NotMatchSuffix:
                strSQL = string.Format("{0} not like {1} ESCAPE N'~'", condition.Column,
                                       this.BuildParameterName(paras.GenerateParameter(CorrectLikeConditionValue(condition.Value, "%", ""))));
                break;

            case SqlConditionType.In:
                if (condition.Values.Count > 0)
                {
                    string[] vals = this.GetValuesSqlString(condition.Values);
                    if (vals.Length > 0)
                    {
                        strSQL = condition.Column + " in (" + string.Join(" , ", vals) + ") ";
                    }
                    if (condition.Values.Contains(null))
                    {
                        if (string.IsNullOrEmpty(strSQL))
                        {
                            strSQL = condition.Column + " is null";
                        }
                        else
                        {
                            strSQL = "(" + strSQL + " or " + condition.Column + " is null)";
                        }
                    }
                }
                break;

            case SqlConditionType.NotIn:
                strSQL = condition.Column + " not in (" + string.Join(" , ", this.GetValuesSqlString(condition.Values)) + ") ";
                break;

            case SqlConditionType.Custom:
                strSQL = (string)condition.Value;
                if ((condition.Parameters != null) && (condition.Parameters.Count > 0))
                {
                    foreach (var pitem in condition.Parameters)
                    {
                        paras.Add(pitem);
                    }
                }
                break;

            default:
                break;
            }
            return(strSQL);
        }