/// <summary> /// Вызов перегрузки класса с функциями Microsoft SQL Server /// для функций которые имеют в себе формальные параметры /// </summary> /// <param name="Function_name">Название функции</param> /// <param name="type_function">Тип функции: table или scalar</param> /// <param name="paramets">Не типизированный список аередаваемых параметров</param> public Function_Class(string Function_name, string type_function, ArrayList paramets) { //Объявление строковой переменной для формирования запроса string query = ""; //Провеерка на тип функций switch (type_function) { case "scalar": //Формирование первой части скалярного запроса query = string.Format(@"select [dbo].[{0}](", Function_name); break; case "table": //Формирование первичной части табличного запроса query = string.Format(@"select * from [dbo].[{0}](", Function_name); break; } //Строковая переменная колекции параметров //Вторая часть любого запроса string list_param = ""; //Условие на проверку количества параметров switch (paramets.Count) { case 1: //В случае если парасетров один запрос завершается list_param += paramets[0].ToString() + ")"; break; default: //Перебор всех параметров из колекции ArrayList foreach (object param in paramets) { //Присвоение в строковую переменную //Полученный список параметров из перегрузки list_param += param + ","; } //Удаление из полученной строки после запятой list_param = list_param.Remove(list_param.Length); //Закрывающая скобка запроса обращения к функции list_param += ")"; break; } //Конкатенирование первой и второй части запроса query += list_param; //занесение запроса в класс Table_Class Table_Class table = new Table_Class(query); //Присовение результирующей таблицы в выходную таблицу Resttable = table.table; }
/// <summary> /// Вызов функций авторизации пользователя в системе для открытия сессии /// работы в программе /// </summary> /// <param name="Login"></param> /// <param name="Password"></param> public void Authorization(string Login, string Password) { //Обращение к табличной функции Table_Class table = new Table_Class(string.Format("select [ID_Record] from [dbo].[AuthorizationViewBased] ('{0}', '{1}')", Login, Password)); //Присвоение в статическую строковую переменную значений первичного ключа try { Program.intID = table.table.Rows[0][0].ToString(); } catch { } //Проверка на пустоту первичного ключа //if (Program.intID != "") //{ // //Присвоение в статическую строковую переменную // //статус значения Klient или Employee // Program.strStatus = table.table.Rows[0][1].ToString(); // //Присовение статическую целочисленную в статус удаления либо 0 либо 1 // Program.intDropStatic = Convert.ToInt32(table.table.Rows[0][2].ToString()); //} }
/// <summary> /// Сетод обращения к любой хранимой процедуре Microsoft SQL Server /// </summary> /// <param name="Procedure_name"></param> /// <param name="fileld_value"></param> public void procedure_Execution(string Procedure_name, ArrayList fileld_value) { //Запрос на вывод списка параметров, конкретной хранимой процедуры //в зависимости от введенного разработчиком название Stored Procedure Table_Class table = new Table_Class(String.Format("select name from sys.parameters " + "where " + "object_id =" + " (select object_id from sys.procedures where name = '{0}')", Procedure_name)); try { //Настройка SQLCommand для работы с хранимыми процедурами command.CommandType = CommandType.StoredProcedure; //Присвоение в текст команды названия хранимой процедуры command.CommandText = string.Format("[dbo].[{0}]", Procedure_name); //Отчистка параметров command.Parameters.Clear(); for (int i = 0; i < table.table.Rows.Count; i++) { //Сопоставление значимой коллекций в значения параметров command.Parameters.AddWithValue(table.table.Rows[i][0].ToString(), fileld_value[i]); } //Открытия подключения Configuration_Class.connection.Open(); //Объявление события на перехват сообщения из БД Configuration_Class.connection.InfoMessage += Connection_InfoMessage;; //Выполнение запроса процедуры command.ExecuteNonQuery(); } catch { } finally { //Закрытие подключения Configuration_Class.connection.Close(); } }