Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
6.8 kB
0
Indexable
Never
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using MySql.Data.MySqlClient;
using System.Collections;
using System.Data.SqlClient;
using System.Configuration;
using System.Data.Common;

namespace laboratorio
{
    public class ConexionBD
    {
        private MySqlConnection connection;
        public string BD_CON = "MiConexionBD";
        /*private string servidor = "localhost"; // Nombre del servidor de la base de datos
        private string puerto = "3306"; // Puerto de la base de datos
        private string usuario = "root"; // Usuario de la base de datos
        private string contrasena = ""; // Contraseña del usuario de la base de datos
        private string baseDatos = "espacios"; // Nombre de la base de datos
        */
       /* public ConexionBD()
        {
            string cadenaConexion = "server=" + servidor + ";port=" + puerto + ";user=" + usuario + ";password=" + contrasena + ";database=" + baseDatos + ";";
            conexion = new MySqlConnection(cadenaConexion);
        }*/
        public ConexionBD(string connectionName)
        {
            var connectionString = ConfigurationManager.ConnectionStrings[connectionName].ConnectionString;
            this.connection = new MySqlConnection(connectionString);
        }

        public MySqlConnection GetConnection()
        {
            return connection;
        }

        public void OpenConnection()
        {
            if (connection.State == System.Data.ConnectionState.Closed)
            {
                connection.Open();
            }
        }

        public void CloseConnection()
        {
            if (connection.State == System.Data.ConnectionState.Open)
            {
                connection.Close();
            }
        }

        /*
        public bool AbrirConexion()
        {
            try
            {
                conexion.Open();
                return true;
            }
            catch (MySqlException ex)
            {
                // Manejar excepción de conexión
                return false;
            }
        }

        public void CerrarConexion()
        {
            conexion.Close();
        }

        public MySqlConnection GetConnection()
        {
            return conexion;
        }
        */
        public DataTable EjecutarConsulta(string consulta)
        {
            DataTable tabla = new DataTable();

            if (AbrirConexion())
            {
                MySqlCommand comando = new MySqlCommand(consulta, conexion);
                MySqlDataAdapter adaptador = new MySqlDataAdapter(comando);
                adaptador.Fill(tabla);
                CerrarConexion();
            }

            foreach (DataRow fila in tabla.Rows)
            {
                foreach (DataColumn columna in tabla.Columns)
                {
                    Console.Write(fila[columna] + " ");
                }
                Console.WriteLine();
            }
            Console.WriteLine("Ejecutar consulta: " + tabla);
            return tabla;
        }
        /*
        public bool InsertarQuery(string consulta)
        {
            var resultado = false;
            if (AbrirConexion())
            {
                MySqlCommand comando = new MySqlCommand(consulta, conexion);
                var filasAfectadas = comando.ExecuteNonQuery();
                resultado = filasAfectadas > 0;
                CerrarConexion();
            }
            return resultado;
        }
        */

        public bool InsertarQuery(string consulta, string connectionName)
        {
            var resultado = false;
            using (var conexion = new ConexionBD(connectionName).GetConnection())
            {
                conexion.Open();
                using (var comando = new MySqlCommand(consulta, conexion))
                {
                    var filasAfectadas = comando.ExecuteNonQuery();
                    resultado = filasAfectadas > 0;
                }
            }
            return resultado;
        }

        public DataTable ObtenerEscuelas()
        {
            var consulta = "SELECT idEscuelas, name FROM escuelas";
            return EjecutarConsulta(consulta);
        }

        public DataTable ObtenerEspacios()
        {
            var consulta = "SELECT idEspacios, name FROM espacio";
            return EjecutarConsulta(consulta);
        }

        public DataTable ObtenerEstantes()
        {
            var consulta = "SELECT idEstantes, name FROM estantes";
            return EjecutarConsulta(consulta);
        }

        public DataTable ObtenerCarreras(int idEscuelaSeleccionada)
        {
            var consulta = string.Format("SELECT idCarreras, name FROM carreras WHERE idEscuelas = {0}", idEscuelaSeleccionada);
            return EjecutarConsulta(consulta);
        }

        public bool InsertarAlumno(string nombreAlumno, int semestre, int matricula, string email, int idCarrera, int idEscuela)
        {
            var consulta = string.Format("INSERT INTO alumnos (name, semestre, matricula, email, idCarreras, idEscuelas) VALUES ('{0}', '{1}', {2}, {3}, {4}, {5})", nombreAlumno, semestre, matricula, email, idCarrera, idEscuela);
            return InsertarQuery(consulta, );
        }

        public bool InsertarEspacio(string espacio, string abreviacion)
        {
            var consulta = string.Format("INSERT INTO espacio (name, abreviacion, habilitado) VALUES ('{0}','{1}','{2}')", espacio, abreviacion, 0); //0 habilitado
            return InsertarQuery(consulta);
        }
        
        public bool InsertarEstante(string estante, int idEspacios)
        {
            var existeEstante = ExisteEstante(estante);
            
            if (!existeEstante)
            {
                var consulta = string.Format("INSERT INTO estantes (name, idEspacios, habilitado) VALUES ('{0}','{1}','{2}')", estante, idEspacios, 0); //0 habilitado
                return InsertarQuery(consulta);
            }
            else
            {
                throw new Exception("Ya existe un estante con el mismo nombre.");
            }
        }

        public bool ExisteEstante(string estante)
        {
            var consulta = "SELECT COUNT(*) FROM estantes WHERE name = @nombre";
            var cmd = new MySqlCommand(consulta, conexion);
            cmd.Parameters.AddWithValue("@nombre", estante);
            var resultado = EjecutarConsulta(cmd);
            Console.WriteLine(resultado);
            return resultado.Rows.Count > 0;
        }
    }
}