Ejemplo n.º 1
0
        private DataSet Obtener(ObjetoTransformar objetoTransf)
        {
            DataSet ds        = new DataSet();
            string  conString = WebConfigurationManager.
                                ConnectionStrings[Utiles.CNS].ConnectionString;
            OdbcDataAdapter da  = null;
            OdbcCommand     cmd = new OdbcCommand();

            using (OdbcConnection con = new OdbcConnection(conString))
            {
                con.Open();

                try
                {
                    string query = "Select * from " + objetoTransf.NombreTabla;
                    da = new OdbcDataAdapter(query, con);
                    da.Fill(ds, objetoTransf.NombreTabla);
                    //ds.Tables[0].Rows.Find(
                }
                catch (Exception ex)
                {
                    throw ex;
                }

                con.Close();
            }
            return(ds);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Método Genérico que retorna una lista de Objetos de la entidad solicitada
        /// </summary>
        /// <typeparam name="T">Entidad solicitada</typeparam>
        /// <param name="filtro">List filtro</param>
        /// <returns>List object</returns>
        public List <object> Leer <T>(List <FiltroGenerico> filtro)
        {
            ObjetoTransformar obj = ProcesarEntidad(typeof(T));

            List <object> lista = new List <object>();

            var    props     = typeof(T).GetProperties();
            string conString = WebConfigurationManager.
                               ConnectionStrings[Utiles.CNS].ConnectionString;

            //acá construimos la query de acuerdo al filtro
            string query = EntregaQueryFiltro(obj.NombreTabla, filtro);


            using (OdbcConnection con = new OdbcConnection(conString))
                using (OdbcCommand cmd =
                           new OdbcCommand(query, con))
                {
                    con.Open();
                    using (OdbcDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            object objClassInstance = GetInstance(obj.ObjetoType.FullName);
                            foreach (var prop in props)
                            {
                                for (int i = 0; i < reader.FieldCount; i++)
                                {
                                    string nomCol = reader.GetName(i).ToUpper().Replace("_", "");
                                    if (prop.Name.ToUpper() == nomCol)
                                    {
                                        var propertyInfo = typeof(T).GetProperty(prop.Name);
                                        //propertyInfo.SetValue(new Saydex.Core.Entidad.Otro.Cliente(), Convert.ChangeType(reader.GetValue(0), propertyInfo.PropertyType), null);
                                        //object objClassInstance = GetInstance(obj.ObjetoType.FullName);
                                        if (reader.GetValue(i) == null)
                                        {
                                            if (propertyInfo.PropertyType.ToString().Contains("Date"))
                                            {
                                            }
                                        }
                                        propertyInfo.SetValue(objClassInstance, Convert.ChangeType(reader.GetValue(i), propertyInfo.PropertyType), null);


                                        //lista.Add(objClassInstance);
                                    }
                                }
                                //lista.Add(typeof(T));
                            }
                            lista.Add(objClassInstance);
                        }
                    }
                    con.Close();
                }
            return(lista);
        }
Ejemplo n.º 3
0
        private ObjetoTransformar ProcesarEntidad(Type myEntidad)
        {
            ObjetoTransformar objeto = new ObjetoTransformar();

            objeto.ObjetoType    = myEntidad;
            objeto.NombreEntidad = objeto.ObjetoType.Name;
            objeto.NombreTabla   = DeterminarNombreTabla(objeto.NombreEntidad);
            PropertyInfo[]     propiedades          = myEntidad.GetProperties();
            List <CamposTabla> listaCampos          = ListaCamposTabla(objeto.NombreTabla);
            List <CamposTabla> listaCamposProcesada = ListaCamposProcesada(listaCampos, propiedades);

            objeto.ListaCampos = new List <CamposTabla>();
            objeto.ListaCampos = listaCamposProcesada;

            return(objeto);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Elimina un Regitro, solo es necesario llenar la entidad con el ID a eliminar
        /// </summary>
        /// <typeparam name="T">Objeto entidad (clase)</typeparam>
        /// <param name="objeto">Etnidad</param>
        /// <returns>Mayor a cero</returns>
        public int Delete <T>(T objeto)
        {
            ObjetoTransformar obj = ProcesarEntidad(objeto.GetType());

            //para el caso del patrick, este id no se puede determinar
            //por lo tanto se tomará el primer ordinal con el elemento id
            string idEntidad = "";

            if (obj.ListaCampos != null && obj.ListaCampos.Count > 0)
            {
                idEntidad = obj.ListaCampos[0].NombreColumna;
            }


            int  filasAfectadas = 0;
            Type tipo           = objeto.GetType();
            var  propiedades    = tipo.GetProperties();

            for (int i = 0; i < propiedades.Length; i++)
            {
                if (propiedades[i].Name != "Nuevo" &&
                    propiedades[i].Name != "Borrado" && propiedades[i].Name != "Modificado" && propiedades[i].Name != "TimeStamp")
                {
                    object      valor = propiedades[i].GetValue(objeto, null);
                    CamposTabla campo = obj.ListaCampos.Find(p => p.NombreEntidad == propiedades[i].Name);
                    if (campo != null)
                    {
                        campo.ValorEntidad = valor;
                    }
                }
            }
            int valorId = int.Parse(obj.ListaCampos.Find(p => p.NombreColumna == "ID").ValorEntidad.ToString());

            string conString = WebConfigurationManager.
                               ConnectionStrings[Utiles.CNS].ConnectionString;

            using (OdbcConnection con = new OdbcConnection(conString))
                using (OdbcCommand cmd = new OdbcCommand(string.Format("DELETE FROM {0} WHERE {1} = {2}", obj.NombreTabla, idEntidad, valorId), con))
                {
                    con.Open();
                    cmd.ExecuteNonQuery();
                    filasAfectadas++;
                    con.Close();
                }

            return(filasAfectadas);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Método Genérico que retorna una lista de Objetos de la entidad solicitada
        /// </summary>
        /// <typeparam name="T">Entidad solicitada</typeparam>
        /// <returns>List objetos</returns>
        public List <object> Leer <T>()
        {
            ObjetoTransformar obj = ProcesarEntidad(typeof(T));

            List <object> lista = new List <object>();

            var    props     = typeof(T).GetProperties();
            string conString = WebConfigurationManager.
                               ConnectionStrings[Utiles.CNS].ConnectionString;

            using (OdbcConnection con = new OdbcConnection(conString))
                using (OdbcCommand cmd =
                           new OdbcCommand("SELECT * FROM " + obj.NombreTabla, con))
                {
                    con.Open();
                    using (OdbcDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            object objClassInstance = GetInstance(obj.ObjetoType.FullName);
                            foreach (var prop in props)
                            {
                                for (int i = 0; i < reader.FieldCount; i++)
                                {
                                    string nomCol = reader.GetName(i).ToUpper().Replace("_", "");
                                    if (prop.Name.ToUpper() == nomCol)
                                    {
                                        var propertyInfo = typeof(T).GetProperty(prop.Name);

                                        propertyInfo.SetValue(objClassInstance, Convert.ChangeType(reader.GetValue(i), propertyInfo.PropertyType), null);
                                    }
                                }
                            }
                            lista.Add(objClassInstance);
                        }
                    }
                    con.Close();
                }
            return(lista);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Inserta un Regitro
        /// </summary>
        /// <typeparam name="T">Objeto entidad (clase)</typeparam>
        /// <param name="objeto">Etnidad</param>
        /// <returns>Mayor a cero</returns>
        public int Insertar <T>(T objeto)
        {
            long ultimoId         = 0;
            ObjetoTransformar obj = ProcesarEntidad(objeto.GetType());

            int  filasAfectadas = 0;
            Type tipo           = objeto.GetType();
            var  propiedades    = tipo.GetProperties();
            var  campos         = new StringBuilder();
            var  variables      = new StringBuilder();

            for (int i = 0; i < propiedades.Length; i++)
            {
                if (propiedades[i].Name != "Nuevo" &&
                    propiedades[i].Name != "Borrado" && propiedades[i].Name != "Modificado" && propiedades[i].Name != "TimeStamp")
                {
                    object      valor = propiedades[i].GetValue(objeto, null);
                    CamposTabla campo = obj.ListaCampos.Find(p => p.NombreEntidad == propiedades[i].Name);
                    if (campo != null)
                    {
                        campo.ValorEntidad = valor;
                    }
                }
            }
            if (obj.ListaCampos.Count > 0)
            {
                for (int i = 0; i < obj.ListaCampos.Count; i++)
                {
                    string nombreCampo = obj.ListaCampos[i].NombreColumna;
                    if (nombreCampo != "ID")
                    {
                        campos.Append(obj.ListaCampos[i].NombreColumna);
                        variables.Append("?");
                        if (i < obj.ListaCampos.Count - 1)
                        {
                            campos.Append(", ");
                            variables.Append(", ");
                        }
                    }
                }
            }

            //en este momento ya tenemos los valores de los elementos y la lista de elementos en sql
            string conString = WebConfigurationManager.
                               ConnectionStrings[Utiles.CNS].ConnectionString;

            using (OdbcConnection con = new OdbcConnection(conString))
                using (OdbcCommand cmd = new OdbcCommand(string.Format("INSERT INTO {0} ({1}) VALUES ({2})", obj.NombreTabla, campos, variables), con))
                {
                    con.Open();

                    foreach (CamposTabla campo in obj.ListaCampos)
                    {
                        if (campo.NombreColumna != "ID")
                        {
                            cmd.Parameters.Add("@" + campo.NombreColumna, ObtenerTipoODBC(campo)).Value = campo.ValorEntidad;
                        }
                    }

                    cmd.ExecuteNonQuery();
                    //pruebas de last insert id
                    cmd.CommandText = "SELECT LAST_INSERT_ID()";
                    OdbcDataReader reader = cmd.ExecuteReader();
                    if (reader != null && reader.Read())
                    {
                        ultimoId = reader.GetInt64(0);
                    }

                    filasAfectadas++;
                    con.Close();
                }


            return(Convert.ToInt32(ultimoId));
        }
Ejemplo n.º 7
0
        public int Update <T>(T objeto, string nombreIdBD)
        {
            ObjetoTransformar obj = ProcesarEntidad(objeto.GetType());

            int  filasAfectadas = 0;
            Type tipo           = objeto.GetType();
            var  propiedades    = tipo.GetProperties();

            //string nombreIdBD = Utiles.EntregaNombreId(nombreIdPropiedad);

            for (int i = 0; i < propiedades.Length; i++)
            {
                if (propiedades[i].Name != "Nuevo" &&
                    propiedades[i].Name != "Borrado" && propiedades[i].Name != "Modificado" && propiedades[i].Name != "TimeStamp")
                {
                    object      valor = propiedades[i].GetValue(objeto, null);
                    CamposTabla campo = obj.ListaCampos.Find(p => p.NombreEntidad == propiedades[i].Name);
                    if (campo != null)
                    {
                        campo.ValorEntidad = valor;
                    }
                }
            }

            int           valorId = int.Parse(obj.ListaCampos.Find(p => p.NombreColumna == nombreIdBD).ValorEntidad.ToString());
            StringBuilder query   = new StringBuilder();

            query.AppendFormat("UPDATE {0} SET ", obj.NombreTabla);
            foreach (CamposTabla campo in obj.ListaCampos)
            {
                if (campo.NombreColumna != "ID")
                {
                    if (campo.TipoDatoEntidad != "System.Int32")
                    {
                        if (campo.TipoDatoEntidad == "System.DateTime")
                        {
                            query.AppendFormat("{0} = '{1}',", campo.NombreColumna, ConvertirFecha(campo.ValorEntidad));
                        }
                        else
                        {
                            query.AppendFormat("{0} = '{1}',", campo.NombreColumna, campo.ValorEntidad);
                        }
                    }
                    else
                    {
                        query.AppendFormat("{0} = {1},", campo.NombreColumna, campo.ValorEntidad);
                    }
                }
            }
            query.Remove(query.Length - 1, 1).ToString();
            query.AppendFormat(" WHERE {0} = {1}", nombreIdBD, valorId.ToString());


            string conString = WebConfigurationManager.
                               ConnectionStrings[Utiles.CNS].ConnectionString;

            using (OdbcConnection con = new OdbcConnection(conString))
                using (OdbcCommand cmd = new OdbcCommand(query.ToString(), con))
                {
                    con.Open();
                    cmd.ExecuteNonQuery();
                    filasAfectadas++;
                    con.Close();
                }


            return(filasAfectadas);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Actualiza un Regitro
        /// </summary>
        /// <typeparam name="T">Objeto entidad (clase)</typeparam>
        /// <param name="objeto">Etnidad</param>
        /// <returns>Mayor a cero</returns>
        public int Update <T>(T objeto)
        {
            ObjetoTransformar obj = ProcesarEntidad(objeto.GetType());

            //para el caso del patrick, este id no se puede determinar
            //por lo tanto se tomará el primer ordinal con el elemento id
            string idEntidad = "";

            if (obj.ListaCampos != null && obj.ListaCampos.Count > 0)
            {
                idEntidad = obj.ListaCampos[0].NombreColumna;
            }

            int  filasAfectadas = 0;
            Type tipo           = objeto.GetType();
            var  propiedades    = tipo.GetProperties();

            for (int i = 0; i < propiedades.Length; i++)
            {
                if (propiedades[i].Name != "Nuevo" &&
                    propiedades[i].Name != "Borrado" && propiedades[i].Name != "Modificado" && propiedades[i].Name != "TimeStamp")
                {
                    object      valor = propiedades[i].GetValue(objeto, null);
                    CamposTabla campo = obj.ListaCampos.Find(p => p.NombreEntidad == propiedades[i].Name);
                    if (campo != null)
                    {
                        campo.ValorEntidad = valor;
                    }
                }
            }

            int           valorId = int.Parse(obj.ListaCampos.Find(p => p.NombreColumna.Contains("ID")).ValorEntidad.ToString());
            StringBuilder query   = new StringBuilder();

            query.AppendFormat("UPDATE {0} SET ", obj.NombreTabla);
            foreach (CamposTabla campo in obj.ListaCampos)
            {
                if (campo.NombreColumna != "ID")
                {
                    if (campo.TipoDatoEntidad != "System.Int32")
                    {
                        if (campo.TipoDatoEntidad == "System.DateTime")
                        {
                            query.AppendFormat("{0} = '{1}',", campo.NombreColumna, ConvertirFecha(campo.ValorEntidad));
                        }
                        else
                        {
                            query.AppendFormat("{0} = '{1}',", campo.NombreColumna, campo.ValorEntidad);
                        }
                    }
                    else
                    {
                        query.AppendFormat("{0} = {1},", campo.NombreColumna, campo.ValorEntidad);
                    }
                }
            }
            query.Remove(query.Length - 1, 1).ToString();
            query.AppendFormat(" WHERE {0} = {1}", idEntidad, valorId.ToString());


            string conString = WebConfigurationManager.
                               ConnectionStrings[Utiles.CNS].ConnectionString;

            using (OdbcConnection con = new OdbcConnection(conString))
                using (OdbcCommand cmd = new OdbcCommand(query.ToString(), con))
                {
                    con.Open();
                    cmd.ExecuteNonQuery();
                    filasAfectadas++;
                    con.Close();
                }


            return(filasAfectadas);
        }