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;
}
}
}