martes, 16 de agosto de 2011

Capa de Datos: Clase heredada (para Firebird)


///Capa de Datos: Clase que hereda de la clase: BaseDatos, la cual 
///sobreescribe sus métodos virtuales.


///Desarrollada por: Raciel Moreno.
///Fecha de creación: Agosto-2010
///Fecha de publicación: 15-agosto-2011.
///Todos los derechos reservados.(C)

using System;
using System.Collections.Generic;
using System.Text;
using FirebirdSql.Data.FirebirdClient;
using System.Data;

namespace accesoAdatos
{
    public class FireBird2_1 : BaseDatos
    {
        /// <summary>
        /// Constructor de la clase
        /// </summary>
        public FireBird2_1() { }

        /// <summary>
        /// Variable del tipo FbConnection.
        /// </summary>
        FbConnection FbConnection;

        /// <summary>
        /// Constructor sobrecargado de la clase. Se deben asignar las variables :strUsuarioBd, strPasswordBd, strIPservidorBd, strRutaBd.
        /// </summary>
        public FireBird2_1(string strUsuarioBD, string strPasswordBD, string strIPservidorBD, string strRutaBD)
        {
            strUsuarioBd = strUsuarioBD;
            strPasswordBd = strPasswordBD;
            strIPservidorBd = strIPservidorBD;
            strRutaBd = strRutaBD;

            strCadenaDeConexion = "ServerType=0;User=" + strUsuarioBd + ";Password=" + strPasswordBd + ";Size=4096;Dialect=3;Pooling=true;database=" + strIPservidorBd + ":" + strRutaBd;
        }

         

        #region Uso de procedimientos almacenados

        /// <summary>
        /// Arreglo de variables del tipo FbParameter, que almacena los parametros del procedimiento almacenado. 
        /// </summary>
        private FbParameter[] Parametros;

        /// <summary>
        /// Metodo que retorna un FdDbType tomando como condición el nombre del tipo que se desee retornar.
        /// </summary>
        /// <param name="Tipo">Nombre del tipo</param>
        /// <returns>FbDbType</returns>
        private FbDbType DbTipo(string Tipo)
        {
            FbDbType FbDbType = FbDbType.Text;

            switch (Tipo)
            {
                case "Array": { FbDbType = FbDbType.Array; break; }
                case "BigInt": { FbDbType = FbDbType.BigInt; break; }
                case "Binary": { FbDbType = FbDbType.Binary; break; }
                case "Boolean": { FbDbType = FbDbType.Boolean; break; }
                case "Char": { FbDbType = FbDbType.Char; break; }
                case "Date": { FbDbType = FbDbType.Date; break; }
                case "Decimal": { FbDbType = FbDbType.Decimal; break; }
                case "Double": { FbDbType = FbDbType.Double; break; }
                case "Float": { FbDbType = FbDbType.Float; break; }
                case "Guid": { FbDbType = FbDbType.Guid; break; }
                case "Integer": { FbDbType = FbDbType.Integer; break; }
                case "Numeric": { FbDbType = FbDbType.Numeric; break; }
                case "SmallInt": { FbDbType = FbDbType.SmallInt; break; }
                case "Text": { FbDbType = FbDbType.Text; break; }
                case "Time": { FbDbType = FbDbType.Time; break; }
                case "TimeStamp": { FbDbType = FbDbType.TimeStamp; break; }
                case "VarChar": { FbDbType = FbDbType.VarChar; break; }
            }
            return FbDbType;
        }

        override public void IniciaProcedimientoAlmacenado(int intTotalParametros)
        {
            strErrorEnEjecucion = "";
            try
            {
                Parametros = new FbParameter[intTotalParametros];
                strNombresParametrosSalida.Clear();
            }
            catch (Exception ex)
            {
                strErrorEnEjecucion = ex.Message;
            }
        }

        override public void AddParametro(Int32 intIndexParametro, string strNombreParametro, ParameterDirection pdDireccion, String strNombreTipo, Int32 Longitud, string Valor)
        {
            strErrorEnEjecucion = "";
            try
            {
                Parametros[intIndexParametro] = new FbParameter();
                Parametros[intIndexParametro].ParameterName = strNombreParametro;
                Parametros[intIndexParametro].Direction = pdDireccion;
                Parametros[intIndexParametro].FbDbType = DbTipo(strNombreTipo);
                Parametros[intIndexParametro].Size = Longitud;
                Parametros[intIndexParametro].Value = Valor;
                if (pdDireccion == ParameterDirection.InputOutput || pdDireccion == ParameterDirection.Output)
                    strNombresParametrosSalida.Add(strNombreParametro);
            }
            catch (Exception ex)
            {
                strErrorEnEjecucion = ex.Message;
            }
        }
        
        #endregion



        override public bool boolProbarConexion()
        {
            strErrorEnEjecucion = "";      
            try
            {
                FbConnection = new FbConnection(strCadenaDeConexion);
                FbConnection.Open();
                FbConnection.Close();
                FbConnection = null;             
                return true;
            }
            catch (Exception ex)
            {                
                strErrorEnEjecucion = ex.Message;
                return false;
            }
        }

        override public DataTable dtEjecutarConsultaSQL(string strConsultaSQL, string strNombreTabla)
        {
            strErrorEnEjecucion = "";      
            try
            {
                DataSet DataSet = new DataSet();
                FbDataAdapter DataAdapter = new FbDataAdapter(strConsultaSQL, strCadenaDeConexion);
                DataAdapter.Fill(DataSet, strNombreTabla);
                DataAdapter = null;
                return DataSet.Tables[strNombreTabla];
            }
            catch (Exception ex)
            {        
                strErrorEnEjecucion = ex.Message;
                return null;
            }
        }

        override public DataTableReader dtEjecutarConsultaSQL(string strConsultaSQL)
        {
            strErrorEnEjecucion = "";
            try
            {
                DataSet DataSet = new DataSet();
                FbDataAdapter DataAdapter = new FbDataAdapter(strConsultaSQL, strCadenaDeConexion);
                DataAdapter.Fill(DataSet);
                DataAdapter = null;
                return DataSet.Tables[0].CreateDataReader();
            }
            catch (Exception ex)
            {
                strErrorEnEjecucion = ex.Message;
                return null;
            }
        }

        override public bool boolEjecutarComandoSQL(string strComandoSQL)
        {
            strErrorEnEjecucion = "";
            try
            {
                FbConnection = new FbConnection(strCadenaDeConexion);
                FbConnection.Open();

                FbCommand FbCommand = new FbCommand(strComandoSQL, FbConnection);
                FbCommand.ExecuteNonQuery();

                FbConnection.Close();

                FbConnection = null;
                FbCommand = null;

                return true;
            }
            catch (Exception ex)
            {
                strErrorEnEjecucion = ex.Message;
                return false;
            }
        }

        override public bool boolEjecutaTransaccion(List<string> lstComandos)
        {
            strErrorEnEjecucion = ""; 
            FbTransaction FbTransaction = null;
            try
            {               
                FbConnection = new FbConnection(strCadenaDeConexion);
                FbConnection.Open();

                FbTransaction = FbConnection.BeginTransaction();
                FbCommand FbComando;

                foreach (string comando in lstComandos)
                {
                    FbComando = new FbCommand(comando, FbConnection);
                    FbComando.Transaction = FbTransaction;
                    FbComando.ExecuteNonQuery();
                }

                FbTransaction.Commit();

                FbConnection.Close();
                FbConnection = null;

                return true;
            }
            catch (Exception ex)
            {
                try
                {
                    FbTransaction.Rollback();
                }
                catch (Exception exException)
                {
                    strErrorEnEjecucion = exException.Message;
                    return false;
                }
                strErrorEnEjecucion = ex.Message;
                return false;
            }
        }

        override public bool boolEjecutaProcedimientoAlmacenado()
        {
            strErrorEnEjecucion = "";
            try
            {
                FbConnection = new FbConnection(strCadenaDeConexion);
                FbConnection.Open();

                ParametrosSalida = new List<string>();
                FbCommand FbCommand = new FbCommand();
                FbCommand.CommandType = CommandType.StoredProcedure;
                FbCommand.Connection = FbConnection;
                FbCommand.Parameters.AddRange(Parametros);
                FbCommand.CommandText = strNombreProcedimientoAlmacenado;
                FbCommand.ExecuteNonQuery();

                foreach (string strvalor in strNombresParametrosSalida)
{                    ParametrosSalida.Add(FbCommand.Parameters[strvalor].Value.ToString());
}
                FbConnection.Close();
                FbConnection = null;
                return true;
            }
            catch (Exception ex)
            {
                strErrorEnEjecucion = ex.Message;
                return false;
            }
        }      

    }
}








No hay comentarios:

Publicar un comentario

Mapa de visitantes