using System; using System.Collections.Generic; using System.Text; using System.Configuration; using System.Data.Common; using System.Data; using System.Data.SqlClient; using System.Threading; public class SigmaSportDAL2 : IDisposable { private DbConnection _DbConnection; private DbCommand _DbCommand; private ConnectionStringSettings _DbConnectionString; private DbProviderFactory _DbFactory = null; private DbTransaction _DbTransaction = null; private DbDataAdapter _DbDataAdapter = null; private DbConnectionStringBuilder _DbCnxStringBuilder = null; /// /// Creates a new instance of CRMDbClient /// /// public SigmaSportDAL2() { _DbConnectionString = ConfigurationManager.ConnectionStrings["SigmaSport"]; _DbFactory = DbProviderFactories.GetFactory(_DbConnectionString.ProviderName); _DbConnection = _DbFactory.CreateConnection(); _DbCnxStringBuilder = _DbFactory.CreateConnectionStringBuilder(); _DbCnxStringBuilder.ConnectionString = _DbConnectionString.ConnectionString; _DbCommand = _DbConnection.CreateCommand(); _DbConnection.ConnectionString = _DbCnxStringBuilder.ConnectionString; OpenConnection(); } //OpenConnection(); #region Destruction classe /// /// Destroy the current instance /// public void Dispose() { CloseConnection(); _DbConnectionString = null; _DbDataAdapter = null; _DbFactory = null; _DbTransaction = null; _DbCommand = null; _DbConnection = null; } /// /// Destroy the current instance /// ~SigmaSportDAL2() { this.Dispose(); GC.Collect(); } #endregion #region Properties /// /// Gets or sets the command timeout in seconds /// public int CommandTimeout { get { return _DbCommand.CommandTimeout; } set { _DbCommand.CommandTimeout = value; } } /// /// Gets the database provider /// public string DataBaseProvider { get { return _DbConnectionString.ProviderName; } } /// /// Gets or set the /// public int ConnectionTimeout { get { return _DbConnection.ConnectionTimeout; } } #endregion /// /// Begins transaction /// public void BeginTransaction() { _DbTransaction = _DbConnection.BeginTransaction(); } /// /// Commit transaction /// public void CommitTransaction() { if (_DbTransaction != null) { _DbTransaction.Commit(); _DbTransaction.Dispose(); _DbTransaction = null; _DbCommand.Transaction = null; } else { throw new SigmaSportDALException("BeginTransaction must be called before commit or rollback. No open transactions found"); } } /// /// Rollbacks transaction /// public void RollbackTransaction() { try { _DbTransaction.Rollback(); } catch (InvalidOperationException invexcept) { throw new SigmaSportDALException(invexcept.Message, invexcept); } catch (Exception e) { throw new SigmaSportDALException(e.Message, e); } finally { //dispose _dbTransaction if (_DbTransaction != null) _DbTransaction.Dispose(); _DbTransaction = null; } } /// /// Open the connection with de server /// private void OpenConnection() { if ((_DbConnection.State & ConnectionState.Open) != ConnectionState.Open) _DbConnection.Open(); } /// /// Closes the connection with the server /// private void CloseConnection() { //if ((_DbConnection.State) != ConnectionState.Closed) if(_DbConnection != null) _DbConnection.Close(); } /// /// Executes a scalar query /// /// Represents the query text /// Represents the command type /// Object containing the scalar result public object ExecuteScalar(string QueryText, CommandType CmdType) { try { _DbCommand.Parameters.Clear(); _DbCommand.CommandText = QueryText; //set que querytext _DbCommand.CommandType = CmdType; OpenConnection(); object val = _DbCommand.ExecuteScalar(); //runs que query return val; } catch (Exception ex) { throw ex; } finally { CloseConnection(); } } /// /// Executes a scalar query /// /// Represents the query text /// Represents the command type /// Quary parameter /// Object containing the scalar result public object ExecuteScalar(string QueryText, CommandType CmdType, DbParameter QueryParameter) { try { _DbCommand.Parameters.Clear(); _DbCommand.CommandText = QueryText; //set que querytext _DbCommand.CommandType = CmdType; _DbCommand.Parameters.Add(QueryParameter); OpenConnection(); object val = _DbCommand.ExecuteScalar(); //runs que query return val; } catch (Exception ex) { throw ex; } finally { CloseConnection(); } } /// /// Executes a scalar query /// /// Represents the query text /// Represents the command type /// Quary parameters list /// Object containing the scalar result public object ExecuteScalar(string QueryText, CommandType CmdType, DbParameter[] QueryParameters) { try { _DbCommand.Parameters.Clear(); _DbCommand.CommandText = QueryText; //set que querytext _DbCommand.CommandType = CmdType; _DbCommand.Parameters.AddRange(QueryParameters); OpenConnection(); object val = _DbCommand.ExecuteScalar(); //runs que query return val; } catch (Exception ex) { throw ex; } finally { CloseConnection(); } } /// /// Executes a query and retourns the result into a datatable. /// /// Query text /// Command type /// Datatable containing the result public DataTable ExecuteReader(string QueryText, CommandType CmdType) { try { DataTable dt = new DataTable(); _DbCommand.Parameters.Clear(); _DbCommand.CommandText = QueryText; _DbCommand.CommandType = CmdType; OpenConnection(); dt.Load(_DbCommand.ExecuteReader(CommandBehavior.CloseConnection)); return dt; } catch (Exception ex) { throw ex; } finally{ CloseConnection(); } } /// /// Executes a query and retourns the result into a datatable. /// /// Query text /// Command type /// Quary parameters list /// Datatable containing the result public DataTable ExecuteReader(string QueryText, CommandType CmdType, DbParameter[] QueryParameters) { try { DataTable dt = new DataTable(); _DbCommand.Parameters.Clear(); _DbCommand.CommandText = QueryText; _DbCommand.CommandType = CmdType; _DbCommand.Parameters.AddRange(QueryParameters); OpenConnection(); dt.Load(_DbCommand.ExecuteReader(CommandBehavior.CloseConnection)); return dt; } catch (Exception ex) { throw ex; } finally { CloseConnection(); } } /// /// Executes a query and retourns the result into a datatable. /// /// Query text /// Command type /// Quary parameter /// Datatable containing the result public DataTable ExecuteReader(string QueryText, CommandType CmdType, DbParameter QueryParameter) { try { DataTable dt = new DataTable(); _DbCommand.Parameters.Clear(); _DbCommand.CommandText = QueryText; _DbCommand.CommandType = CmdType; _DbCommand.Parameters.Add(QueryParameter); OpenConnection(); dt.Load(_DbCommand.ExecuteReader(CommandBehavior.CloseConnection)); return dt; } catch (Exception ex) { throw ex; } finally { CloseConnection(); } } /// /// Executes a query and retourns affected rows number /// /// Query text /// Command Type /// Integer value representing affected rows public int ExecuteNonQuery(string QueryText, CommandType CmdType) { try { _DbCommand.Parameters.Clear(); _DbCommand.CommandText = QueryText; _DbCommand.CommandType = CmdType; OpenConnection(); int val = _DbCommand.ExecuteNonQuery(); return val; } catch (Exception ex) { throw ex; } finally { CloseConnection(); } } /// /// Executes a query and retourns affected rows number /// /// Qurey text /// Command type /// Quary parameters list /// Integer value representing affected rows public int ExecuteNonQuery(string QueryText, CommandType CmdType, DbParameter[] QueryParameters) { try { _DbCommand.Parameters.Clear(); _DbCommand.CommandText = QueryText; _DbCommand.CommandType = CmdType; _DbCommand.Parameters.AddRange(QueryParameters); OpenConnection(); int val = _DbCommand.ExecuteNonQuery(); return val; } catch (Exception ex) { throw ex; } finally { CloseConnection(); } } /// /// Executes a query and retourns affected rows number /// /// Qurey text /// Command type /// Quary parameter /// Integer value representing affected rows public int ExecuteNonQuery(string QueryText, CommandType CmdType, DbParameter QueryParameter) { try { _DbCommand.Parameters.Clear(); _DbCommand.CommandText = QueryText; _DbCommand.CommandType = CmdType; _DbCommand.Parameters.Add(QueryParameter); OpenConnection(); int val = _DbCommand.ExecuteNonQuery(); return val; } catch (Exception ex) { throw ex; } finally { CloseConnection(); } } /// /// Creates a parameter for the database /// /// The created parameter public DbParameter CreateParameter() { return _DbCommand.CreateParameter(); } /// /// Creates a parameter for the database /// /// The Parameter name /// The parameter value /// The created parameter public DbParameter CreateParameter(String ParamName, object Value) { DbParameter p = _DbCommand.CreateParameter(); p.ParameterName = ParamName; p.Value = Value; return p; } /// /// Creates a new DBParameter /// /// The Name of the Parameter /// The value of the Parameter /// Specify the direction of the pramaeter /// DBParameter representing the new data base parameter public DbParameter CreateParameter(string Name, object Value, ParameterDirection Direction) { DbParameter p = _DbCommand.CreateParameter(); p.ParameterName = Name; p.Value = Value; p.Direction = Direction; return p; } }