public override bool ToCommand(IDaoProvider provider, SqlCommandBuilder builder, ISqlParameters parameters) { object value = parameters.Resolve(ParamName); if (_valueParameterClauseUsage == ValueParameterClauseUsage.In) { builder.AppendCommandText(ToInClauseSqlString(provider, value)); } else { String content = ToSqlString(provider, value); if (String.IsNullOrEmpty(content) && !String.IsNullOrEmpty(_defaultValue)) { builder.AppendCommandText(_defaultValue); } else { if (_valueParameterClauseUsage == ValueParameterClauseUsage.Like) { content = provider.EscapeLikeParamValue(content); } builder.AppendCommandText(content); } } return(true); }
public override bool ToCommand(IDaoProvider provider, SqlCommandBuilder builder, ISqlParameters parameters) { string sqlName = provider.EscapeParam(ParamName); builder.AppendCommandText(RawText.Replace(ParamName, sqlName)); builder.AddCommandParameter(sqlName, parameters.Resolve(ParamName)); return(true); }
public override bool ToCommand(IDaoProvider provider, SqlCommandBuilder builder, ISqlParameters parameters) { if (_paramClause != null) { object value; bool exist = parameters.TryResolve(_paramClause.ParamName, out value); if (!_strict && (null == value || (value is string && string.IsNullOrEmpty(value as string)))) { return(false); } if (_strict && !exist) { return(false); } } if (_foundNestedDynamicClause) { bool anyNestedDynamicClauseExecuted = false; SqlCommandBuilder nestedBuilder = new SqlCommandBuilder(); foreach (SqlClause clause in _childs) { if (clause.ToCommand(provider, nestedBuilder, parameters) && clause is DynamicClause) { anyNestedDynamicClauseExecuted = true; } } //只有任何一个嵌套的动态语句被执行了才进行输出 if (anyNestedDynamicClauseExecuted) { builder.AppendCommandText(nestedBuilder.CommandText.ToString()); nestedBuilder.Params.ForEach(p => builder.AddCommandParameter(p)); } return(anyNestedDynamicClauseExecuted); } else { foreach (SqlClause clause in _childs) { clause.ToCommand(provider, builder, parameters); } return(true); } }
public override bool ToCommand(IDaoProvider provider, SqlCommandBuilder builder, ISqlParameters parameters) { builder.AppendCommandText(RawText); return(true); }