private static string ToSqlString(IDaoProvider provider, object value) { if (null == value || value is DBNull) { return(String.Empty); } else if (value is string) { return(provider.EscapeText(((string)value).Trim())); } else if (value is IEnumerable) { StringBuilder builder = new StringBuilder(); foreach (object single in ((IEnumerable)value)) { builder.Append(","); builder.Append(ToSqlString(provider, single)); } return(builder.Length > 0 ? builder.Remove(0, 1).ToString() : string.Empty); } else { return(provider.EscapeText(value.ConvertTo <string>().Trim())); } }
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 Dao(string name) { var setting = ConfigurationManager.ConnectionStrings[name]; this._connectionString = setting.ConnectionString; this._provider = DaoFactory.GetDaoProvider(setting.ProviderName); if (null == _provider) { throw new FoxOneException(string.Format("Dao Provider '{0}' Not Found", ConfigurationManager.ConnectionStrings[name].ProviderName)); } }
public ISqlCommand CreateCommand(IDaoProvider provider, object parameters) { SqlCommandBuilder builder = new SqlCommandBuilder(); SqlParameters sqlParameters = new SqlParameters(parameters); foreach (SqlClause clause in _clauses) { clause.ToCommand(provider, builder, sqlParameters); } return(builder.ToCommand()); }
protected GenericDao(string name, string providerName) { this._name = name; this._connectionString = ConfigurationManager.ConnectionStrings[name].ConnectionString; this._dbProviderName = providerName; this._provider = DaoFactory.GetDaoProviderOfDbProvider(_dbProviderName); this._mappingProvider = DaoFactory.GetMappingProvider(_dbProviderName); if (null == _provider) { throw new FoxOneException(string.Format("Dao Provider '{0}' Not Found", ConfigurationManager.ConnectionStrings[name].ProviderName)); } }
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) { IDictionary <string, object> outParams = new Dictionary <string, object>(); string sql = _executor.Execute(_action, parameters, outParams); if (!string.IsNullOrEmpty(sql)) { parameters = outParams.Count == 0 ? parameters : new ArrayParameters(outParams, parameters); IList <SqlClause> clauses = SqlParser.ParseToClauses(sql); foreach (SqlClause clause in clauses) { clause.ToCommand(provider, builder, parameters); } } return(true); }
private string ToInClauseSqlString(IDaoProvider provider, Object value) { if (null == value) { return(String.IsNullOrEmpty(_defaultValue) ? _defaultValue : "''"); } string content = null; if (value is String) { content = value.ToString().Trim(); // 如果前后都已经有单引号则直接返回 if (content.Length >= 2 && content.StartsWith("'") && content.EndsWith("'")) { return(content); } content = provider.EscapeText(content); } else if (value is IEnumerable) { StringBuilder builder = new StringBuilder(); foreach (var single in (IEnumerable)value) { if (null != single) { builder.Append(",").Append(provider.EscapeText(single.ToString())); } } content = builder.Length > 0 ? builder.ToString().Substring(1) : ""; if (String.IsNullOrEmpty(content)) { return(String.IsNullOrEmpty(_defaultValue) ? "" : _defaultValue); } } return(ProcessInSqlParam(content)); }
internal static IDaoProvider GetDaoProvider(string dbProviderName) { IDaoProvider provider = _providers.SingleOrDefault(p => p.Name.Equals(dbProviderName, StringComparison.OrdinalIgnoreCase) || p.SupportsDbProvider(dbProviderName)); return(provider); }
public override bool ToCommand(IDaoProvider provider, SqlCommandBuilder builder, ISqlParameters parameters) { builder.AppendCommandText(RawText); return(true); }
/// <summary> /// </summary> /// <returns>返回是否被执行,有些语句是根据上下文动态判断是否需要被执行的</returns> public abstract bool ToCommand(IDaoProvider provider, SqlCommandBuilder builder, ISqlParameters parameters);
/// <summary> /// Initializes a new instance of the <see cref="EntityController{T}"/> class. /// </summary> /// <param name="daoProvider">The DAO provider.</param> protected EntityController(IDaoProvider daoProvider) { this.daoProvider = daoProvider; }