using System; namespace delta { /// /// Объект доступа к базе SQL /// public class Sql { /// /// Соединение с базой /// private System.Data.SqlClient.SqlConnection conn; /// /// Конструктор. Создает соединение без его открытия /// /// Строка соединения public Sql() { conn = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["DataBase"]); } /// /// Открытие соединения /// public void OpenConnection() { if ( conn.State == System.Data.ConnectionState.Closed ) conn.Open(); } /// /// Закрытие соединения /// public void CloseConnection() { if ( conn.State != System.Data.ConnectionState.Closed ) conn.Close(); } /// /// Выполнение хранимой процедуры как запроса /// /// Имя хранимой процедуры /// Параметры. Элемент 2n - имя, 2n+1 - значение /// Результат запроса в виде таблицы public System.Data.DataTable GetTable( string Name, object[] Parameters ) { System.Data.DataTable output = new System.Data.DataTable(); new System.Data.SqlClient.SqlDataAdapter(GetCommand(Name, System.Data.CommandType.StoredProcedure, Parameters)).Fill(output); return output; } /// /// Выполнение хранимой процедуры. Возвращает код возврата хранимой процедуры /// /// Имя хранимой процедуры /// Параметры. Элемент 2n - имя, 2n+1 - значение /// Возвращаемое хранимой процедурой значение public int GetReturnValue( string Name, object[] Parameters ) { System.Data.SqlClient.SqlCommand cmd = GetCommand(Name, System.Data.CommandType.StoredProcedure, Parameters); cmd.Parameters.Add("@RETURN_VALUE", System.Data.SqlDbType.Int); cmd.Parameters["@RETURN_VALUE"].Direction = System.Data.ParameterDirection.ReturnValue; cmd.ExecuteNonQuery(); return ( int ) cmd.Parameters["@RETURN_VALUE"].Value; } /// /// Выполнение хранимой процедуры как запроса атомарного значения /// /// Имя хранимой процедуры /// Параметры. Элемент 2n - имя, 2n+1 - значение /// Значение первого столбца первой строки из возвращаемого хранимой процедурой набора данных public object GetScalar( string Name, object[] Parameters ) { return GetCommand(Name, System.Data.CommandType.StoredProcedure, Parameters).ExecuteScalar(); } /// /// Выполнение хранимой процедуры. Возвращает число строк, подвергшихся команде /// /// Имя хранимой процедуры /// Параметры. Элемент 2n - имя, 2n+1 - значение /// Число строк, подвергшихся команде public int Execute( string Name, object[] Parameters ) { return GetCommand(Name, System.Data.CommandType.StoredProcedure, Parameters).ExecuteNonQuery(); } /// /// Открытие соединения для указанной команды /// /// Имя команды /// Тип команды /// Параметры. Элемент 2n - имя, 2n+1 - значение /// Команда с указанными параметрами private System.Data.SqlClient.SqlCommand GetCommand( string CommandText, System.Data.CommandType CommandType, object[] Parameters ) { System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(CommandText, conn); cmd.CommandType = CommandType; if ( Parameters != null && Parameters.Length > 0 ) for ( int i = 0; i < Parameters.Length; i += 2 ) cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter(Parameters[i].ToString(), Parameters[i + 1])); return cmd; } } }