rendered paste bodyusing System;
namespace delta
{
/// <summary>
/// Объект доступа к базе SQL
/// </summary>
public class Sql
{
/// <summary>
/// Соединение с базой
/// </summary>
private System.Data.SqlClient.SqlConnection conn;
/// <summary>
/// Конструктор. Создает соединение без его открытия
/// </summary>
/// <param name="ConnectionString">Строка соединения</param>
public Sql()
{
conn = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["DataBase"]);
}
/// <summary>
/// Открытие соединения
/// </summary>
public void OpenConnection()
{
if ( conn.State == System.Data.ConnectionState.Closed ) conn.Open();
}
/// <summary>
/// Закрытие соединения
/// </summary>
public void CloseConnection()
{
if ( conn.State != System.Data.ConnectionState.Closed ) conn.Close();
}
/// <summary>
/// Выполнение хранимой процедуры как запроса
/// </summary>
/// <param name="Name">Имя хранимой процедуры</param>
/// <param name="Parameters">Параметры. Элемент 2n - имя, 2n+1 - значение</param>
/// <returns>Результат запроса в виде таблицы</returns>
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;
}
/// <summary>
/// Выполнение хранимой процедуры. Возвращает код возврата хранимой процедуры
/// </summary>
/// <param name="Name">Имя хранимой процедуры</param>
/// <param name="Parameters">Параметры. Элемент 2n - имя, 2n+1 - значение</param>
/// <returns>Возвращаемое хранимой процедурой значение</returns>
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;
}
/// <summary>
/// Выполнение хранимой процедуры как запроса атомарного значения
/// </summary>
/// <param name="Name">Имя хранимой процедуры</param>
/// <param name="Parameters">Параметры. Элемент 2n - имя, 2n+1 - значение</param>
/// <returns>Значение первого столбца первой строки из возвращаемого хранимой процедурой набора данных</returns>
public object GetScalar( string Name, object[] Parameters )
{
return GetCommand(Name, System.Data.CommandType.StoredProcedure, Parameters).ExecuteScalar();
}
/// <summary>
/// Выполнение хранимой процедуры. Возвращает число строк, подвергшихся команде
/// </summary>
/// <param name="Name">Имя хранимой процедуры</param>
/// <param name="Parameters">Параметры. Элемент 2n - имя, 2n+1 - значение</param>
/// <returns>Число строк, подвергшихся команде</returns>
public int Execute( string Name, object[] Parameters )
{
return GetCommand(Name, System.Data.CommandType.StoredProcedure, Parameters).ExecuteNonQuery();
}
/// <summary>
/// Открытие соединения для указанной команды
/// </summary>
/// <param name="CommandText">Имя команды</param>
/// <param name="CommandType">Тип команды</param>
/// <param name="Parameters">Параметры. Элемент 2n - имя, 2n+1 - значение</param>
/// <returns>Команда с указанными параметрами</returns>
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;
}
}
}