public override OutputData DoAction(IInputData input) { if (MainResolver != null) { IParamBuilder builder; if (FilterSql != null) { builder = ParamBuilder.CreateSql(Expression.Execute(FilterSql, this)); } else { builder = ParamBuilder.CreateSql("1=1"); } MainResolver.Select(builder, OrderBy); MetaDataTableResolver metaResolver = MainResolver as MetaDataTableResolver; if (metaResolver != null) { metaResolver.Decode(input.Style); } } if (UseCallerInfo) { input.CallerInfo.AddInfo(DataSet); } return(OutputData.Create(DataSet)); }
public void SelectWithParam(string filterSql, string orderBy, string field, object value) { TkDebug.AssertArgumentNullOrEmpty(field, "field", this); TkDebug.AssertArgumentNull(value, "value", this); IParamBuilder builder = SqlParamBuilder.CreateEqualSql(Context, GetFieldInfo(field), value); if (!string.IsNullOrEmpty(filterSql)) { builder = ParamBuilder.CreateParamBuilder(builder, ParamBuilder.CreateSql(filterSql)); } Select(builder, orderBy); }
public IParamBuilder CreateParamBuilder(TkDbContext context, IFieldInfoIndexer indexer) { if (fSelectBuilder == null) { TkDebug.AssertArgumentNull(context, "context", this); TkDebug.AssertArgumentNull(indexer, "indexer", this); IFieldInfo fakeInfo = indexer[FieldName]; TkDebug.AssertNotNull(fakeInfo, string.Format(ObjectUtil.SysCulture, "{0}中没有配置字段{1}", indexer, FieldName), this); fSelectBuilder = ParamBuilder.InternalCreateSingleSql(context, fakeInfo.FieldName, fakeInfo.DataType, "!=", fakeInfo.FieldName, Value); if (AllowNull) { fSelectBuilder = ParamBuilder.CreateParamBuilderWithOr(fSelectBuilder, ParamBuilder.CreateSql(fakeInfo.FieldName + " IS NULL")); } } return(fSelectBuilder); }
public IParamBuilder CreateParamBuilder(string filterSql, string[] fields, params object[] values) { TkDebug.AssertEnumerableArgumentNullOrEmpty(fields, "fields", this); TkDebug.AssertEnumerableArgumentNull(values, "values", this); TkDebug.Assert(fields.Length == values.Length, string.Format(ObjectUtil.SysCulture, "参数fields和values的个数不匹配,fields的个数为{0},而values的个数为{1}", fields.Length, values.Length), this); List <IParamBuilder> list = new List <IParamBuilder>(fields.Length + 1); for (int i = 0; i < fields.Length; i++) { IParamBuilder builder = SqlParamBuilder.CreateEqualSql(Context, GetFieldInfo(fields[i]), values[i]); list.Add(builder); } if (!string.IsNullOrEmpty(filterSql)) { list.Add(ParamBuilder.CreateSql(filterSql)); } return(ParamBuilder.CreateParamBuilder(list)); }
private void ProcessCustomRootNodes(string rootId) { IParamBuilder builder = string.IsNullOrEmpty(rootId) ? null : ParamBuilder.CreateSql(rootId); if (UseCustomParamBuilder) { builder = GetCustomParamBuilder(builder); } DataTable table = fSelector.HostTable; int start = table == null ? 0 : table.Rows.Count; fSelector.Select(builder); if (table == null) { table = fSelector.HostTable; } int end = table.Rows.Count; // 没有获得数据 if (start == end) { fRootParentId = DbTreeDefinition.DEFAULT_PARENT_VALUE; fRootNodes = Enumerable.Empty <ITreeNode>(); SetTopLevel(null); return; } // 获得数据 DataRow row = table.Rows[start]; fRootParentId = row[fDefinition.ParentIdField].ToString(); fRootNodes = GetRootNodes(table, start, end); SetTopLevel(fRootNodes.First()); }
private IParamBuilder GetManyToManyParamBuilder(TableResolver detailResolver, object masterValue) { return(ParamBuilder.CreateSql(string.Format(ObjectUtil.SysCulture, "{0} IN ({1})", detailResolver.GetFieldInfo(fDetailFields[0]).FieldName, fManyToMany.GetSubSelectSql(masterValue)))); }
/// <summary> /// 根据SQL条件语句填充数据 /// </summary> /// <param name="whereClause">SQL的条件子句</param> public void Select(string whereClause) { TkDebug.AssertArgumentNullOrEmpty(whereClause, "whereClause", this); Select(ParamBuilder.CreateSql(whereClause)); }
public override IParamBuilder GetCondition(IFieldInfo field, string fieldValue) { return(ParamBuilder.CreateSql($"{field.FieldName} REGEXP '{fieldValue}'")); }