Example #1
0
        /// <summary>
        /// Crea un nuevo registro en la base de datos según los parámetros enviados
        /// </summary>
        /// <param name="tabla"></param>
        /// <param name="parametros"></param>
        /// <returns></returns>
        public static int Insertar(string tabla, Dictionary <string, object> parametros)
        {
            int             idRegistro = 0;                                   // El id del registro insertado
            object          valor = "";                                       // El valor del parámetro al recorrer el diccionario
            string          campos = "", valores = "";                        // Mapeo de campos y parámetros para construir SQL
            Conexion        conex = Conexion.ObtenerInstancia();              // Obtener la instancia de la clase Conexión
            OleDbConnection cnx   = conex.ObtenerConexion();                  // Obtener la conexión a la BD

            OleDbParameter[] dbParams = new OleDbParameter[parametros.Count]; // Crear el arreglo para los parámetros

            int i = 0;

            foreach (string key in parametros.Keys)                                                                         // Recorrer los parámetros y asignar datos a variables
            {
                valor       = parametros[key];                                                                              // Asignar el valor del parámetro
                dbParams[i] = new OleDbParameter($"{key}", Ejecutor.ConvertirTipo(valor), Ejecutor.ObtenerLongitud(valor)); // Crear el parámetro para SQL
                campos     += $"{key}";                                                                                     // El nombre del campo
                valores    += "?";                                                                                          // Se agrega uno por cada parámetro
                i++;
                if (i < parametros.Count)                                                                                   // Si no se ha llegado al último parámetro, se agrega ',' a los campos y parámetros
                {
                    campos  += ",";
                    valores += ",";
                }
            }

            cnx.Open(); // Abrir la conexión

            using (OleDbCommand cmd = cnx.CreateCommand())
            {
                try
                {
                    cmd.CommandText = $"INSERT INTO {tabla} ({campos}) VALUES ({valores})"; // Consulta SQL
                    cmd.Parameters.AddRange(dbParams);                                      // Agregar los parámetros al comando

                    foreach (var p in parametros)                                           // Agregar los valores de los parámetros
                    {
                        cmd.Parameters[p.Key].Value = p.Value ?? DBNull.Value;
                    }

                    cmd.Prepare();                              // Preparar la instrucción sql
                    cmd.ExecuteNonQuery();                      // Ejecutar el SQL
                    cmd.CommandText = "SELECT @@Identity";      // Consulta para obtener el último registro insertado
                    idRegistro      = (int)cmd.ExecuteScalar(); // Obtener el id del registro insertado
                }
                catch (Exception ex)
                {
                    Debug.WriteLine($"Error: {ex.Message}"); // Mostrar mensaje de error en caso que haya
                }
            }

            return(idRegistro); // Devolver ID del registro insertado
        }
Example #2
0
        /// <summary>
        /// Modifica datos de la base de datos según los parámetros enviados
        /// </summary>
        /// <param name="tabla"></param>
        /// <param name="parametros"></param>
        /// <param name="condiciones"></param>
        /// <returns></returns>
        public static bool Actualizar(string tabla, Dictionary <string, object> parametros, string condiciones)
        {
            bool            resultado     = false;
            object          valor         = "";                               // El valor del parámetro al recorrer el diccionario
            string          valoresParams = "";                               // Variable para asignar el nombre del campo y su parámetro
            Conexion        conex         = Conexion.ObtenerInstancia();      // Obtener la instancia de la clase Conexión
            OleDbConnection cnx           = conex.ObtenerConexion();          // Obtener la conexión a la BD

            OleDbParameter[] dbParams = new OleDbParameter[parametros.Count]; // Crear el arreglo para los parámetros

            int i = 0;

            foreach (string key in parametros.Keys)
            {
                valor          = parametros[key];                                                                              // Asignar el valor del parámetro
                dbParams[i]    = new OleDbParameter($"{key}", Ejecutor.ConvertirTipo(valor), Ejecutor.ObtenerLongitud(valor)); // Crear el parámetro para SQL
                valoresParams += $"{key} = ?";                                                                                 // El nombre del campo con su parámetro
                i++;
                if (i < parametros.Count)
                {
                    valoresParams += ",";
                }
            }

            cnx.Open(); // Abrir la conexión

            using (OleDbCommand cmd = cnx.CreateCommand())
            {
                try
                {
                    cmd.CommandText = $"UPDATE {tabla} SET {valoresParams} WHERE {condiciones}"; // Consulta SQL
                    cmd.Parameters.AddRange(dbParams);                                           // Agregar los parámetros al comando

                    foreach (var p in parametros)                                                // Agregar los valores de los parámetros
                    {
                        cmd.Parameters[p.Key].Value = p.Value ?? DBNull.Value;
                    }

                    cmd.Prepare();                                         // Preparar la instrucción sql
                    resultado = cmd.ExecuteNonQuery() == 1 ? true : false; // Ejecutar el SQL
                }
                catch (Exception ex)
                {
                    Debug.WriteLine($"Error: {ex.Message}"); // Mostrar mensaje de error en caso que haya
                }

                return(resultado);
            }
        }