All pastes #738315 Raw Edit

Mine

public text v1 · immutable
·published 2007-10-16 05:30 UTC
rendered paste body
using 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;
		}
	}
}