/// <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); }
private OdbcType ObtenerTipoODBC(CamposTabla campo) { OdbcType retorno = OdbcType.Int; switch (campo.TipoDatoEntidad) { case "System.Int32": retorno = OdbcType.Int; break; case "System.String": retorno = OdbcType.VarChar; break; case "System.DateTime": retorno = OdbcType.DateTime; break; } return(retorno); }
/// <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)); }
private List <CamposTabla> ListaCamposTabla(string nombreTabla) { List <CamposTabla> lista = new List <CamposTabla>(); StringBuilder sb = new StringBuilder(); string conString = WebConfigurationManager. ConnectionStrings[Utiles.CNS].ConnectionString; //if (fileContents == null) //{ try { using (OdbcConnection con = new OdbcConnection(conString)) using (OdbcCommand cmd = new OdbcCommand("SELECT distinct column_name, ordinal_position, data_type, CHARACTER_MAXIMUM_LENGTH FROM information_schema.COLUMNS where table_name ='" + nombreTabla + "'", con)) { con.Open(); using (OdbcDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { CamposTabla campo = new CamposTabla(); campo.NombreColumna = reader.GetString(0); campo.Ordinal = int.Parse(reader.GetString(1)); campo.TipoDato = reader.GetString(2); campo.LargoBD = reader.IsDBNull(3) ? 0 : reader.GetDecimal(3); if (!lista.Exists(p => p.NombreColumna == campo.NombreColumna)) { lista.Add(campo); } } } con.Close(); } //CacheItemPolicy policy = new CacheItemPolicy(); //policy.AbsoluteExpiration = tiempoCache; //List<string> filePaths = new List<string>(); //string cacheFilePath = AppDomain.CurrentDomain.BaseDirectory + nombreArchivo; //filePaths.Add(cacheFilePath); //policy.ChangeMonitors.Add(new HostFileChangeMonitor(filePaths)); //fileContents = lista; //cache.Set("fileContentsCampos", fileContents, policy); } catch (Exception ex) { Utiles.Log(ex); throw ex; } //} //else //{ // lista = fileContents; //} return(lista); }
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); }