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

    }
}








lunes, 15 de agosto de 2011

Capa de Datos: Clase base

///Capa de Datos: Clase base que expone sus métodos virtuales para la sobre escritura es 
///sus clases heredadas.

///Para posteriores ejemplos utilizaremos esta capa de datos.

///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 System.Data;

namespace accesoAdatos
{

    public class BaseDatos
    {
        /// <summary>
        /// Usuario de la base de datos.
        /// </summary>
        internal string strUsuarioBd = "";

        /// <summary>
        /// Password correspondiente al usuario de la base de datos.
        /// </summary>
        internal string strPasswordBd = "";

        /// <summary>
        /// IP del Servidor de base de datos.
        /// </summary>
        internal string strIPservidorBd = "";

        /// <summary>
        /// Ruta fisica de la base de datos existente en el Servidor de base de datos.
        /// </summary>
        internal string strRutaBd = "";

        /// <summary>
        /// Cadena de conexión.
        /// </summary>
        internal string strCadenaDeConexion = "";

        /// <summary>
        /// Mensaje de error obtenido en la ejecución de alguna funcion de la clase
        /// </summary>
        public string strErrorEnEjecucion = "";


        /// <summary>
        /// Constructor de la clase
        /// </summary>
        public BaseDatos() { }




        #region Uso de procedimientos almacenados

        /// <summary>
        /// Nombre del procedimiento almacenado.
        /// </summary>
        public string strNombreProcedimientoAlmacenado;

        /// <summary>
        /// Almacena los valores de los parametros cuya dirección retorne un valor, se ordenan de acuerdo al orden en el que se fueron insertando los parametros.
        /// </summary>
        public List<string> ParametrosSalida;

        /// <summary>
        /// Contiene los nombres de las parametros que retornen un valor.
        /// </summary>
        internal List<string> strNombresParametrosSalida = new List<string>();

        /// <summary>
        /// Constructor cobrecargado de la clase ProcedimientoAlmacenado.
        /// </summary>
        /// <param name="intTotalParametros"></param>
        virtual public void IniciaProcedimientoAlmacenado(int intTotalParametros) { }

        /// <summary>
        /// Agrega un parametro al procedimiento almacenado.
        /// </summary>
        /// <param name="intIndexParametro">Index del parametro.</param>
        /// <param name="strNombreParametro">Nombre del parametro.</param>
        /// <param name="pdDireccion">Dirección del parametro.</param>
        /// <param name="strNombreTipo">Nombre del tipo de dato del parametro, los valores permitodos son : Array, BigInt, Binary, Boolean, Char, Date, Decimal, Double, Float, Guid, Integer, Numeric, SmallInt, Text, Time, TimeStamp, VarChar.</param>
        /// <param name="Longitud">Longitud del parametro.</param>
        /// <param name="Valor">Valor del parametro.</param>
        virtual public void AddParametro(Int32 intIndexParametro, string strNombreParametro, ParameterDirection pdDireccion, String strNombreTipo, Int32 Longitud, string Valor) { }

        #endregion




        /// <summary>
        /// Metodo para probar la conexión a la base de datos.
        /// </summary>
        /// <returns>bool</returns>
        virtual public bool boolProbarConexion()
        {
            return false;
        }

        /// <summary>
        /// Metodo que ejecuta una consulta SQL sobre la base de datos.
        /// </summary>
        /// <param name="strConsultaSQL">Consulta SQL.</param>
        /// <param name="strNombreTabla">Nombre que se le asignará a la tabla de retorno.</param>
        /// <returns>DataTable</returns>
        virtual public DataTable dtEjecutarConsultaSQL(string strConsultaSQL, string strNombreTabla)
        {
            return null;
        }

        /// <summary>
        /// Metodo que ejecuta una consulta SQL sobre la base de datos.
        /// </summary>
        /// <param name="strConsultaSQL">Consulta SQL.</param>        
        /// <returns>DataTableReader</returns>
        virtual public DataTableReader dtEjecutarConsultaSQL(string strConsultaSQL)
        {
            return null;
        }

        /// <summary>
        /// Metodo que ejecuta un comando SQL sobre la base de datos.
        /// </summary>
        /// <param name="strComandoSQL">Comando SQL.</param>
        /// <returns>bool</returns>
        virtual public bool boolEjecutarComandoSQL(string strComandoSQL)
        {
            return false;
        }

        /// <summary>
        /// Metodo que ejecuta una transacción sobre la base de datos.
        /// </summary>
        /// <param name="lstComandos">Lista de comandos por ejecutar.</param>
        /// <returns>bool</returns>
        virtual public bool boolEjecutaTransaccion(List<string> lstComandos)
        {
            return false;
        }

        /// <summary>
        /// Metodo que ejecuta el procedimiento almacenado.
        /// </summary>
        /// <returns></returns>
        virtual public bool boolEjecutaProcedimientoAlmacenado() { return false; }
      
    }

}

Ajustar columnas de un GridView al contenido de los camps desde código.

  gridView1.OptionsBehavior.AutoPopulateColumns = true; //'generar automaticamente las columnas a raíz del dataset             gridVie...