public long Count <TCondition>(ISpecification <TCondition> specification) { Revenj.Utility.ChunkedMemoryStream cms = null; System.IO.TextWriter sw = null; var selectType = "SELECT count(*)"; if (specification == null) { cms = Common.Utility.UseThreadLocalStream(); sw = cms.GetWriter(); sw.Write(@"SELECT count(*) FROM ""FormABC"".""Input_entity"" r"); } else { return(Query(specification).LongCount()); } sw.Flush(); cms.Position = 0; var com = PostgresCommandFactory.NewCommand(cms); //TODO: sql template long total = 0; DatabaseQuery.Execute(com, dr => { total = dr.GetInt64(0); }); return(total); }
public void Execute() { Writer.Flush(); Stream.Position = 0; Stream.SetLength(Stream.Length - 2); IDbCommand com; if (UsePrepared) { var name = ActionName.ToString(); PreparedCommand preparedCommand; if (!PreparedStatements.TryGetValue(name, out preparedCommand)) { var preparedName = "LR-" + PreparedCount++; var rdr = Stream.GetReader(); preparedCommand = new PreparedCommand(preparedName, rdr.ReadToEnd(), string.Join(",", Types)); PreparedStatements[name] = preparedCommand; } Stream.Reset(); Writer.Write("EXECUTE \""); Writer.Write(preparedCommand.Name); Writer.Write('"'); if (preparedCommand.Types.Length > 0) { Writer.Write(" ("); if (WriteValues.Count > 0) { WriteValues[0](Writer); } for (int i = 1; i < WriteValues.Count; i++) { Writer.Write(','); WriteValues[i](Writer); } Writer.Write(")"); } Writer.Flush(); Stream.Position = 0; com = PostgresCommandFactory.PreparedCommand(Stream, preparedCommand.Name, preparedCommand.Query, preparedCommand.Types); } else { com = PostgresCommandFactory.NewCommand(Stream); } Results = new object[ResultActions.Count]; Query.Execute( com, dr => { for (int i = 0; i < ResultActions.Count; i++) { Results[i] = ResultActions[i](dr, i); } }); }
public TResult Execute <TResult>(IDatabaseQuery <SqlConnection, TResult> query) { using (var connection = new SqlConnection(_connectionString)) { connection.Open(); var result = query.Execute(connection); connection.Close(); return(result); } }
/// <summary> /// Execute query on the database without the regards for result. /// Connection and transaction information will be appended to the provided command. /// </summary> /// <param name="query">ADO.NET driver</param> /// <param name="sql">sql to execute</param> /// <param name="parameters">sql parameters</param> /// <returns>comand.Execute() result</returns> public static int Execute( this IDatabaseQuery query, string sql, params object[] parameters) { Contract.Requires(query != null); Contract.Requires(!string.IsNullOrWhiteSpace(sql)); var com = query.CreateCommand(sql, parameters); return(query.Execute(com)); }
public long Count <TCondition>(ISpecification <TCondition> specification) { Revenj.Utility.ChunkedMemoryStream cms = null; System.IO.TextWriter sw = null; var selectType = "SELECT count(*)"; if (specification == null) { cms = Common.Utility.UseThreadLocalStream(); sw = cms.GetWriter(); sw.Write(@"SELECT count(*) FROM ""Test"".""XYZ_entity"" r"); } else if (specification is global::Test.XYZ.FindBy) { var spec = specification as global::Test.XYZ.FindBy; cms = Common.Utility.UseThreadLocalStream(); sw = cms.GetWriter(); sw.Write(selectType); sw.Write(@" FROM ""Test"".""XYZ.FindBy""("); sw.Write('\''); _DatabaseCommon.Utility.StringToTuple(spec.from).InsertRecord(sw, cms.SmallBuffer, string.Empty, PostgresTuple.EscapeQuote); sw.Write('\''); sw.Write(") _it"); } else { return(Query(specification).LongCount()); } sw.Flush(); cms.Position = 0; var com = PostgresCommandFactory.NewCommand(cms); //TODO: sql template long total = 0; DatabaseQuery.Execute(com, dr => { total = dr.GetInt64(0); }); return(total); }
/// <summary> /// Execute query on the database and loop through the reader. /// Connection and transaction information will be appended to the provided command. /// Provided parameters will be inserted into the command. /// command.ExecuteDataReader() will be called. /// </summary> /// <param name="query">ADO.NET driver</param> /// <param name="sql">sql to execute</param> /// <param name="action">datareader converter</param> /// <param name="parameters">command parameters</param> public static void Execute( this IDatabaseQuery query, string sql, Action <IDataReader> action, params object[] parameters) { Contract.Requires(query != null); Contract.Requires(!string.IsNullOrWhiteSpace(sql)); var com = query.CreateCommand(sql, parameters); query.Execute(com, action); }
public static void Fill <TValue, TProperty>( this IDatabaseQuery query, TValue[] data, string sequenceName, Action <TValue, TProperty> setProperty) { if (data.Length != 0) { int cnt = 0; query.Execute( @"/*NO LOAD BALANCE*/SELECT {0} FROM generate_series(1, {1})".With(sequenceName, data.Length), dr => setProperty(data[cnt++], (TProperty)dr.GetValue(0))); } }
public static void Fill <TValue, TProperty>( this IDatabaseQuery query, TValue[] data, string sequenceName, Action <TValue, TProperty> setProperty) { if (data.Length != 0) { int cnt = 0; query.Execute( @"SELECT {0} FROM dual CONNECT BY LEVEL <= {1}".With(sequenceName, data.Length), dr => setProperty(data[cnt++], (TProperty)Convert.ChangeType(dr.GetValue(0), typeof(TProperty)))); } }
/// <summary> /// Execute query on the database and return converted result. /// Connection and transaction information will be appended to the provided command. /// </summary> /// <typeparam name="T">result type</typeparam> /// <param name="query">ADO.NET driver</param> /// <param name="sql">sql to execute</param> /// <param name="instancer">object factory</param> /// <param name="parameters"></param> /// <returns></returns> public static T Get <T>( this IDatabaseQuery query, string sql, Func <IDataReader, T> instancer, params object[] parameters) { Contract.Requires(query != null); Contract.Requires(!string.IsNullOrWhiteSpace(sql)); var com = query.CreateCommand(sql, parameters); T t = default(T); query.Execute(com, dr => t = instancer(dr)); return(t); }
/// <summary> /// Execute query on the database and loop through the reader. /// Return list populated from instance factory. /// Connection and transaction information will be appended to the provided command. /// command.ExecuteDataReader() will be called. /// </summary> /// <typeparam name="T">result type</typeparam> /// <param name="query">ADO.NET driver</param> /// <param name="sql">sql to execute</param> /// <param name="instancer">object factory</param> /// <param name="parameters">additional command parameters</param> /// <returns>populated list</returns> public static List <T> Fill <T>( this IDatabaseQuery query, string sql, Func <IDataReader, T> instancer, params object[] parameters) { Contract.Requires(query != null); Contract.Requires(!string.IsNullOrWhiteSpace(sql)); var com = query.CreateCommand(sql, parameters); var list = new List <T>(); query.Execute(com, dr => list.Add(instancer(dr))); return(list); }
public DataTable Analyze( IEnumerable <string> dimensions, IEnumerable <string> facts, IEnumerable <KeyValuePair <string, bool> > order, ISpecification <TSource> filter, int?limit, int?offset) { var usedDimensions = new List <string>(); var usedFacts = new List <string>(); if (dimensions != null) { usedDimensions.AddRange(dimensions); } if (facts != null) { usedFacts.AddRange(facts); } var sql = PrepareSql(usedDimensions, usedFacts, order, filter, limit, offset); var table = new DataTable { CaseSensitive = true }; var converters = PrepareConverters(usedDimensions, usedFacts, table); using (var cms = ChunkedMemoryStream.Create()) { DatabaseQuery.Execute(sql, dr => { var obj = dr.GetValue(0); var tr = obj as TextReader; var btr = tr != null ? cms.UseBufferedReader(tr) : cms.UseBufferedReader(obj.ToString()); btr.Read(); var args = new object[converters.Length]; for (int i = 0; i < converters.Length; i++) { args[i] = converters[i](btr); } table.Rows.Add(args); if (tr != null) { tr.Dispose(); } }); } return(table); }
private List <ResultObjectMapping> LoadData(QueryModel queryModel) { var sqlCommand = SqlGeneratorQueryModelVisitor.GenerateSqlQuery( queryModel, Locator, ConverterFactory, ExtensibilityProvider); var resultItems = new List <ResultObjectMapping>(); DatabaseQuery.Execute(sqlCommand.CreateQuery(), dr => resultItems.Add(sqlCommand.ProcessRow(dr))); if (queryModel.ResultOperators.Any(it => it is LastResultOperator) && resultItems.Count > 1) { resultItems.RemoveRange(0, resultItems.Count - 1); } return(resultItems); }
public async Task <TResult> QueryAsync <TResult>(IDatabaseQuery <TResult, TModel> query, RetryParams retryParams) { if (model == null) { throw new NullReferenceException("The Model has been disposed."); } var policy = MakeRetryPolicy(retryParams); return(await policy.ExecuteAsync(() => Task.Run(() => { var result = query.Execute(model); if (disposeOnCompleted) { model.Dispose(); model = default(TModel); } return result; })).ConfigureAwait(false)); }
private List <ResultObjectMapping> LoadData(QueryModel queryModel) { var sqlCommand = SqlGeneratorQueryModelVisitor.GenerateSqlQuery( queryModel, Locator, ConverterFactory, ExtensibilityProvider); var resultItems = new List <ResultObjectMapping>(); using (var cms = ChunkedMemoryStream.Create()) { var reader = cms.UseBufferedReader(string.Empty); DatabaseQuery.Execute(sqlCommand.CreateQuery(cms), dr => resultItems.Add(sqlCommand.ProcessRow(dr, reader))); } if (queryModel.ResultOperators.Any(it => it is LastResultOperator) && resultItems.Count > 1) { resultItems.RemoveRange(0, resultItems.Count - 1); } return(resultItems); }
public List <global::FormABC.Input> ExecuteAll(IDatabaseQuery query, System.Data.IDbCommand command) { this.cms.Position = 0; query.Execute(command, CollectAll); return(list); }
public global::FormABC.Input ExecuteOne(IDatabaseQuery query, System.Data.IDbCommand command) { this.cms.Position = 0; query.Execute(command, CollectOne); return(one); }
public T Query <T>(IDatabaseQuery <T> query) { return(query.Execute(SessionManager)); }
public List <global::UseCase1.Customer> ExecuteAll(IDatabaseQuery query, System.Data.IDbCommand command) { this.cms.Position = 0; query.Execute(command, CollectAll); return(list); }
public global::UseCase1.Customer ExecuteOne(IDatabaseQuery query, System.Data.IDbCommand command) { this.cms.Position = 0; query.Execute(command, CollectOne); return(one); }