Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
5.3 kB
1
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;

namespace laboratorio
{
    public class ConexionBD
    {
        private MySqlConnection conexion;
        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 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 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;
        }
    }
}