/// <summary> /// Выполнение выборки Sql на сервере касательно сериализации десериализации /// </summary> /// <typeparam name="TKey">Ключ параметра</typeparam> /// <typeparam name="TValue">Тип параметра</typeparam> /// <param name="conectionstring">Строка соединения</param> /// <param name="select">Команда Select</param> /// <param name="type">Тип возвращаемого значения класса образец "(SysNum)SelectFullSqlReader(conectionString, select,typeof(SysNum)"</param> /// <param name="listparametr">Словарь параметров</param> /// <returns>Возвращаем object для дальнейшего разбора по классу</returns> public object SelectFullParametrSqlReader <TKey, TValue>(string conectionstring, string select, Type type, Dictionary <TKey, TValue> listparametr = null) { SqlDesirialization xmldesirealiz = new SqlDesirialization(); object obj; if (listparametr?.Count > 0) { GenerateParametrSql.GenerateParametrSql sql = new GenerateParametrSql.GenerateParametrSql(); sql.GenerateStringParametr(ref select, listparametr); } using (var con = new SqlConnection(conectionstring)) { using (var cmd = new SqlCommand(select, con)) { cmd.Connection.Open(); using (XmlReader reader = cmd.ExecuteXmlReader()) { obj = xmldesirealiz.ReadXml(reader, type); if (obj == null) { Loggers.Log4NetLogger.Error(new Exception($"Объект {type.FullName} вернул NULL")); } } cmd.Connection.Close(); } SqlConnection.ClearPool(con); } return(obj); }
/// <summary> /// Функция выполнения процедуры и с параметром и без параметров /// 1 - Если нет параметров то выполняется процедура без параметров /// 2 - Если есть параметры то выполняется Генерация параметров для SqlCommand а потом и процедура /// </summary> /// <typeparam name="TKey">Ключ параметра</typeparam> /// <typeparam name="TValue">Тип параметра</typeparam> /// <param name="conectionstring">Строка соединения</param> /// <param name="procedure">Название процедуры</param> /// <param name="listparametr">Словарь параметров</param> /// <returns>Сообщение от сервера</returns> public string StartingProcedure <TKey, TValue>(string conectionstring, string procedure, Dictionary <TKey, TValue> listparametr = null) { try { Sobytie sobytie = new Sobytie { Messages = null }; using (var con = new SqlConnection(conectionstring)) { SqlCommand command = new SqlCommand(procedure) { CommandType = CommandType.StoredProcedure, Connection = con, CommandTimeout = 0 }; con.InfoMessage += sobytie.Con_InfoMessage; if (listparametr?.Count > 0) { GenerateParametrSql.GenerateParametrSql sql = new GenerateParametrSql.GenerateParametrSql(); command = sql.GenerateParametrs(command, listparametr); } con.Open(); using (command.ExecuteReader()) { } con.Close(); SqlConnection.ClearPool(con); } return(sobytie.Messages); } catch (Exception e) { return(e.Message); } }
/// <summary> /// Процедуры предпроверки /// </summary> /// <param name="connection">Строка соединения</param> /// <param name="seting">Настройки</param> /// <returns></returns> public async Task <string> TaskSqlProcedureSoprovod(string connection, FullSetting seting) { var sqlconnect = new SqlConnectionType(); GenerateParametrSql.GenerateParametrSql sql = new GenerateParametrSql.GenerateParametrSql(); Dictionary <string, string> listparametr = new Dictionary <string, string>(); if (seting.ParamPredproverka.N441 != 0) { sql.CreateParamert(ref listparametr, seting.ParamPredproverka.GetType(), seting.ParamPredproverka); } switch (seting.Id) { case 1: return(await Task.Factory.StartNew(() => sqlconnect.StartingProcedure(connection, ((ServiceWcf)sqlconnect.SelectFullParametrSqlReader(connection, ModelSqlFullService.ProcedureSelectParametr, typeof(ServiceWcf), ModelSqlFullService.ParamCommand("15"))).ServiceWcfCommand.Command, listparametr))); case 2: return(await Task.Factory.StartNew(() => sqlconnect.StartingProcedure(connection, ((ServiceWcf)sqlconnect.SelectFullParametrSqlReader(connection, ModelSqlFullService.ProcedureSelectParametr, typeof(ServiceWcf), ModelSqlFullService.ParamCommand("16"))).ServiceWcfCommand.Command, listparametr))); case 3: return(await Task.Factory.StartNew(() => sqlconnect.StartingProcedure(connection, ((ServiceWcf)sqlconnect.SelectFullParametrSqlReader(connection, ModelSqlFullService.ProcedureSelectParametr, typeof(ServiceWcf), ModelSqlFullService.ParamCommand("17"))).ServiceWcfCommand.Command, listparametr))); default: return(null); } }
/// <summary> /// Шаблон который используем написано кустарно нужно давать Ун шаблона на вход!!! /// </summary> /// <param name="conectionstring">Строка соединения</param> /// <param name="setting">Параметры шаблона</param> /// <returns></returns> public Document Template(string conectionstring, FullSetting setting) { var sqlconnect = new SqlConnectionType(); Dictionary <string, string> listparametr = new Dictionary <string, string>(); GenerateParametrSql.GenerateParametrSql sql = new GenerateParametrSql.GenerateParametrSql(); if (setting.UseTemplate.IdTemplate != 0) { sql.CreateParamert(ref listparametr, setting.UseTemplate.GetType(), setting.UseTemplate); } return((Document)sqlconnect.SelectFullParametrSqlReader(conectionstring, ((ServiceWcf)sqlconnect.SelectFullParametrSqlReader(conectionstring, ModelSqlFullService.ProcedureSelectParametr, typeof(ServiceWcf), ModelSqlFullService.ParamCommand("10"))).ServiceWcfCommand.Command, typeof(Document), listparametr)); }
/// <summary> /// Выполнение процедур возвращающие таблицу /// и подписывание его на событие SignalR для возврата сообщений пользователю с сервера!!! /// </summary> /// <typeparam name="TKey">ключ как правило string</typeparam> /// <typeparam name="TValue">Параметр как правило string</typeparam> /// <param name="conectionString">Строка соединения с сервером</param> /// <param name="procedure">Процедура</param> /// <param name="usernameguid">Имя пользователя для возврата сообщений</param> /// <param name="listparametr">Лист параметров для процедуры!!!</param> /// <returns></returns> public async Task <DataSet> ProcedureReturnTable <TKey, TValue>(string conectionString, string procedure, string usernameguid = null, Dictionary <TKey, TValue> listparametr = null) { try { DataSet dataset = new DataSet(); return(await Task <DataSet> .Factory.StartNew(() => { using (var con = new SqlConnection(conectionString)) { var cmd = new SqlCommand(procedure) { CommandType = CommandType.StoredProcedure, Connection = con, CommandTimeout = 0 }; if (usernameguid != null) { Sobytie sobriety = new Sobytie(usernameguid) { Messages = null }; con.InfoMessage += sobriety.Con_InfoMessageSignalR; } if (listparametr?.Count > 0) { GenerateParametrSql.GenerateParametrSql sql = new GenerateParametrSql.GenerateParametrSql(); cmd = sql.GenerateParametrs(cmd, listparametr); } con.Open(); using (var sqlReport = new SqlDataAdapter(cmd)) { sqlReport.Fill(dataset); } con.Close(); SqlConnection.ClearPool(con); return dataset; } })); } catch (Exception e) { Loggers.Log4NetLogger.Error(e); return(null); } }
/// <summary> /// Данные которые будут раскладываться на шаблоне /// </summary> /// <param name="conectionstring">Строка соединения с сервером</param> /// <param name="connecttestsqlcommand">Строка соединения с таблицей комманд для запроса данных</param> /// <param name="setting">Настроики пользователя</param> /// <returns></returns> public Report ReportBdk(string conectionstring, string connecttestsqlcommand, FullSetting setting) { try { var sqlconnect = new SqlConnectionType(); Dictionary <string, string> listparametr = new Dictionary <string, string>(); GenerateParametrSql.GenerateParametrSql sql = new GenerateParametrSql.GenerateParametrSql(); if (setting.ParametrBdkOut.D85DateStart != DateTime.MinValue) { sql.CreateParamert(ref listparametr, setting.ParametrBdkOut.GetType(), setting.ParametrBdkOut); } return((Report)sqlconnect.SelectFullParametrSqlReader(conectionstring, ((ServiceWcf)sqlconnect.SelectFullParametrSqlReader(connecttestsqlcommand, ModelSqlFullService.ProcedureSelectParametr, typeof(ServiceWcf), ModelSqlFullService.ParamCommand("11"))).ServiceWcfCommand.Command, typeof(Report), listparametr)); } catch (Exception e) { Loggers.Log4NetLogger.Error(e); } return(null); }
public async Task <DataSet> TaskSqlProcedureKam5(string connection, FullSetting seting) { var sqlconnect = new SqlConnectionType(); GenerateParametrSql.GenerateParametrSql sql = new GenerateParametrSql.GenerateParametrSql(); Dictionary <string, string> listparametr = new Dictionary <string, string>(); if (seting.ReportRvs.Qvartal != 0) { sql.CreateParamert(ref listparametr, seting.ReportRvs.GetType(), seting.ReportRvs); } switch (seting.ParamService.IdCommand) { case 28: return(await await Task.Factory.StartNew(() => sqlconnect.ProcedureReturnTable(connection, ((ServiceWcf)sqlconnect.SelectFullParametrSqlReader(connection, ModelSqlFullService.ProcedureSelectParametr, typeof(ServiceWcf), ModelSqlFullService.ParamCommand(seting.ParamService.IdCommand.ToString()))).ServiceWcfCommand.Command, seting.ModelUser.UserNameGuide, listparametr))); default: return(null); } }