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