public DataTable EjecutarConsulta(String consulta, List <Object> valores) { try { return(sql.EjecutarConsulta(consulta, valores)); } catch (Exception ex) { throw new Exception(ex.Message); } }
private void GenerarEstructuraDeBD() { #region query generacion try { String queryGeneracion = @" CREATE TABLE _Cuenta ( id integer PRIMARY KEY ASC AUTOINCREMENT, dtFechaCreacion datetime , dtFechaModificacion datetime , sUsuarioCreacion text , sUsuarioModificacion text , estaDeshabilitado boolean DEFAULT 0, _st_NombreCuenta text , _bm_Imagen blob , _in_DiasParaPago integer , _in_DiaCorte integer , _do_PorcentajeInteresMensual real , _do_saldo real , _bo_EsDeAhorro boolean) | CREATE TABLE _MovimientoCuenta ( id integer PRIMARY KEY ASC AUTOINCREMENT, dtFechaCreacion datetime , dtFechaModificacion datetime , sUsuarioCreacion text , sUsuarioModificacion text , estaDeshabilitado boolean DEFAULT 0, _do_Importe real , _do_Saldo real , _dt_fecha datetime , _dt_fechaAplicacion datetime , _st_detalleMovimiento text , _oo_Cuenta integer REFERENCES _Cuenta(id), _oo_TipoMovimiento integer REFERENCES _TipoMovimiento(id), _bo_EsSimulado boolean, _bo_EstaAplicadoAlSaldo boolean, _oo_MovimientoPareja integer REFERENCES _MovimientoCuenta(id)) | CREATE TABLE _TipoMovimiento ( id integer PRIMARY KEY ASC AUTOINCREMENT, dtFechaCreacion datetime , dtFechaModificacion datetime , sUsuarioCreacion text , sUsuarioModificacion text , estaDeshabilitado boolean DEFAULT 0, _st_Nombre text , _st_Tipo text , _do_MultiplicadorSigno real , _bo_SeDivideEnMultiplesPagos boolean, _bo_SeAplicaInmediato boolean) | CREATE TABLE _Cuenta_X__MovimientoCuenta__ll_Movimientos ( _fecha datetime , _contenido integer REFERENCES _MovimientoCuenta(id), _contenedor integer REFERENCES _Cuenta(id)) | CREATE TABLE _Cuenta_X__MovimientoCuenta__ll_MovimientosSimulados ( _fecha datetime , _contenido integer REFERENCES _MovimientoCuenta(id), _contenedor integer REFERENCES _Cuenta(id)) | CREATE INDEX ci__Cuenta_X__MovimientoCuenta__ll_Movimientos_contenedor_fecha ON _Cuenta_X__MovimientoCuenta__ll_Movimientos (_contenedor, _fecha) | CREATE INDEX nci__MovimientoCuenta__oo_TipoMovimiento ON _MovimientoCuenta ('_oo_TipoMovimiento' ASC) | CREATE INDEX nci__MovimientoCuenta__oo_MovimientoPareja ON _MovimientoCuenta ('_oo_MovimientoPareja' ASC) | CREATE INDEX nci__MovimientoCuenta__oo_Cuenta ON _MovimientoCuenta ('_oo_Cuenta' ASC) | CREATE INDEX ci__Cuenta_X__MovimientoCuenta__ll_MovimientosSimulados_contenedor_fecha ON _Cuenta_X__MovimientoCuenta__ll_MovimientosSimulados (_contenedor, _fecha) "; #endregion sql.ConfigurarConexion("CuentasPagar.db", true); String[] querys = queryGeneracion.Split('|'); sql.IniciarTransaccion(); foreach (String query in querys) { String q = query.Trim(); sql.EjecutarConsulta(q); } sql.TerminarTransaccion(); sql.ConfigurarConexion("CuentasPagar.db", false); manejador = new ManejadorDB(sql); Herramientas.Forms.Mensajes.Informacion("Se generó la Base de datos con éxito."); } catch (Exception ex) { sql.DeshacerTransaccion(); Herramientas.Forms.Mensajes.Error(ex.Message); } }
private void btn_ejecutarEnServidor_Click(object sender, EventArgs e) { // split script on GO command try { IEnumerable <string> commandStrings = Regex.Split(txt_codigo.Text, @"^\s*GO\s*$", RegexOptions.Multiline | RegexOptions.IgnoreCase); foreach (string commandString in commandStrings) { sql.EjecutarConsulta(commandString, null); } btn_ejecutarEnServidor.Enabled = false; MessageBox.Show("Código ejecutado correctamente.", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show("Ocurrió un error: " + ex.Message, "Error al ejecutar en servidor", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public long Guardar() { try { Type tipo = this.GetType(); if (id < 0) { return(-1); } if (this.esModificado) { FieldInfo[] atributos = tipo.GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); String consulta = ""; List <Object> valores = new List <object>(); //actualizando datos de auditoria if (id == 0) { dtFechaCreacion = manejador.ObtenerFechaHoraServidor(); sUsuarioCreacion = ObjetoBase.UsuarioLogueado; } dtFechaModificacion = manejador.ObtenerFechaHoraServidor(); sUsuarioModificacion = ObjetoBase.UsuarioLogueado; DataTable dt = new DataTable(); //----------------------------- if (id != 0) { consulta = "update " + tipo.Name + " set "; foreach (FieldInfo atributo in atributos) { if (atributo.Name.Equals("dtFechaCreacion") || atributo.Name.Equals("dtFechaModificacion") || atributo.Name.Equals("sUsuarioCreacion") || atributo.Name.Equals("sUsuarioModificacion") || atributo.Name.Equals("estaDeshabilitado")) { } else if (!atributo.Name.StartsWith("_") || atributo.FieldType.Name.Contains("List") || atributo.FieldType.Name.StartsWith("_")) { //|| atributo.Name.Equals("dtFechaCreacion") || atributo.Name.Equals("dtFechaModificacion") || atributo.Name.Equals("sUsuarioCreacion") || atributo.Name.Equals("sUsuarioModificacion")) continue; // se ignoran las listas de objetos relacionados y los objetos relacionados } Object valorAtributo = atributo.GetValue(this); if (valorAtributo != null) { consulta += atributo.Name + " = @" + atributo.Name + ", "; valores.Add(valorAtributo); } else { consulta += atributo.Name + " = NULL, "; } } consulta = consulta.Substring(0, consulta.Length - 2); consulta += " where id = @id; select @id;"; valores.Add(id); dt = SQL.EjecutarConsulta(consulta, valores); } else { consulta = "insert into " + tipo.Name + "("; foreach (FieldInfo atributo in atributos) { if (atributo.Name.Equals("dtFechaCreacion") || atributo.Name.Equals("dtFechaModificacion") || atributo.Name.Equals("sUsuarioCreacion") || atributo.Name.Equals("sUsuarioModificacion") || atributo.Name.Equals("estaDeshabilitado")) { } else if (!atributo.Name.StartsWith("_") || atributo.FieldType.Name.Contains("List") || atributo.FieldType.Name.StartsWith("_")) { //|| atributo.Name.Equals("dtFechaCreacion") || atributo.Name.Equals("dtFechaModificacion") || atributo.Name.Equals("sUsuarioCreacion") || atributo.Name.Equals("sUsuarioModificacion")) continue; // se ignoran las listas de objetos relacionados y los objetos relacionados } consulta += atributo.Name + ", "; } consulta = consulta.Substring(0, consulta.Length - 2); consulta += ") values("; foreach (FieldInfo atributo in atributos) { if (atributo.Name.Equals("dtFechaCreacion") || atributo.Name.Equals("dtFechaModificacion") || atributo.Name.Equals("sUsuarioCreacion") || atributo.Name.Equals("sUsuarioModificacion") || atributo.Name.Equals("estaDeshabilitado")) { } else if (!atributo.Name.StartsWith("_") || atributo.FieldType.Name.Contains("List") || atributo.FieldType.Name.StartsWith("_")) { continue; // se ignoran las listas de objetos relacionados y los objetos relacionados } Object valorAtributo = atributo.GetValue(this); if (valorAtributo != null) { consulta += "@" + atributo.Name + ", "; valores.Add(valorAtributo); } else { consulta += "NULL, "; } } consulta = consulta.Substring(0, consulta.Length - 2); consulta += "); " + sql.QueryParaObtenerElUltimoIDInsertado(tipo.Name); dt = SQL.EjecutarConsulta(consulta, valores); if (dt.Rows.Count == 0) { dt = SQL.EjecutarConsulta(sql.QueryParaObtenerElUltimoIDInsertado(tipo.Name)); } id = Convert.ToInt64(dt.Rows[0][0]); } //Log.EscribirLog(consulta); } if (AtributosCargadosPorPropiedad.Count > 0) { String consulta2 = "update " + tipo.Name + " set "; List <Object> valores2 = new List <object>(); List <String> temp = new List <string>(); temp.AddRange(AtributosCargadosPorPropiedad); Boolean guardoRElaciondo = false; foreach (String atributo in temp) { FieldInfo atrib = tipo.GetField(atributo, BindingFlags.Instance | BindingFlags.NonPublic); if (atrib.FieldType.Name.StartsWith("_"))//si entra entonces es un objeto relacionado y se tiene q considerar { FieldInfo campo = this.GetType().GetField(atributo, BindingFlags.NonPublic | BindingFlags.Instance); ObjetoBase objRel = (ObjetoBase)campo.GetValue(this); if (esModificado) { if (objRel != null) { AtributosCargadosPorPropiedad.Remove(atributo); long idRel = objRel.id; if (objRel.esModificado) { objRel.SQL = SQL; objRel.manejador = manejador; idRel = objRel.Guardar(); } if (idRel != 0) { guardoRElaciondo = true; consulta2 += atributo + " = @" + atributo + ", "; valores2.Add(idRel); } } else { guardoRElaciondo = true; AtributosCargadosPorPropiedad.Remove(atributo); consulta2 += atributo + " = NULL, "; } } else { AtributosCargadosPorPropiedad.Remove(atributo); } } } if (guardoRElaciondo) { consulta2 = consulta2.Substring(0, consulta2.Length - 2); consulta2 += " where id = @id"; valores2.Add(id); SQL.EjecutarConsulta(consulta2, valores2); //Log.EscribirLog(consulta2); } } this.esModificado = false; if (AtributosCargadosPorPropiedad.Count > 0) { List <Object> valores2 = new List <object>(); List <String> temp = new List <string>(); temp.AddRange(AtributosCargadosPorPropiedad); foreach (String atributo in temp) { FieldInfo atrib = tipo.GetField(atributo, BindingFlags.Instance | BindingFlags.NonPublic); if (atrib.FieldType.Name.Contains("List"))//si entra entonces es una lista relacionada y se tiene q considerar { AtributosCargadosPorPropiedad.Remove(atributo); String nombreTabla = tipo.Name + "_X_" + atrib.FieldType.GetGenericArguments()[0].Name + "_" + atrib.Name; String eliminacionConsulta = "delete from " + nombreTabla + " where _contenedor = @id"; sql.EjecutarConsulta(eliminacionConsulta, new List <object>() { id }); //Log.EscribirLog(eliminacionConsulta); IList listaObjetos = (IList)atrib.GetValue(this); if (listaObjetos != null) { foreach (ObjetoBase objBaseLista in listaObjetos) { long idTempLista = objBaseLista.id; if (objBaseLista.esModificado) { objBaseLista.SQL = this.SQL; objBaseLista.Manejador = manejador; idTempLista = objBaseLista.Guardar(); } String consultaAgregadoRelacionado = "insert into " + nombreTabla + " (_contenedor,_contenido,_fecha) values(@_contenedor, @_contenido, @_fecha);"; sql.EjecutarConsulta(consultaAgregadoRelacionado, new List <object>() { id, idTempLista, DateTime.Now }); //Log.EscribirLog(consultaAgregadoRelacionado); } } } } } return(id); } catch (Exception ex) { throw ex; } }