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