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 conexion;
public string BD_CON = "MiConexionBD";
private string connectionString;
/*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.conexion = new MySqlConnection(connectionString);
}
public MySqlConnection GetConnection()
{
return conexion;
}
public void OpenConnection()
{
if (conexion.State == System.Data.ConnectionState.Closed)
{
conexion.Open();
}
}
public void CloseConnection()
{
if (conexion.State == System.Data.ConnectionState.Open)
{
conexion.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 DataTable EjecutarConsulta(string consulta)
{
DataTable tabla = new DataTable();
try
{
using (var comando = new MySqlCommand(consulta, conexion))
{
using (var adaptador = new MySqlDataAdapter(comando))
{
adaptador.Fill(tabla);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
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 DataTable ObtenerCarreras(int idEscuelaSeleccionada)
{
var consulta = "SELECT idCarreras, name FROM carreras WHERE idEscuelas = @idEscuela";
using (var conexion = new ConexionBD(BD_CON).GetConnection())
{
conexion.Open();
using (var comando = new MySqlCommand(consulta, conexion))
{
comando.Parameters.AddWithValue("@idEscuela", idEscuelaSeleccionada);
using (var adaptador = new MySqlDataAdapter(comando))
{
var tabla = new DataTable();
adaptador.Fill(tabla);
return tabla;
}
}
}
}
/*
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 InsertarAlumno(string nombreAlumno, int semestre, int matricula, string email, int idCarrera, int idEscuela)
{
var consulta = "INSERT INTO alumnos (name, semestre, matricula, email, idCarreras, idEscuelas) VALUES (@nombre, @semestre, @matricula, @email, @idCarrera, @idEscuela)";
using (var conexion = new ConexionBD(BD_CON).GetConnection())
{
conexion.Open();
using (var comando = new MySqlCommand(consulta, conexion))
{
comando.Parameters.AddWithValue("@nombre", nombreAlumno);
comando.Parameters.AddWithValue("@semestre", semestre);
comando.Parameters.AddWithValue("@matricula", matricula);
comando.Parameters.AddWithValue("@email", email);
comando.Parameters.AddWithValue("@idCarrera", idCarrera);
comando.Parameters.AddWithValue("@idEscuela", idEscuela);
var filasAfectadas = comando.ExecuteNonQuery();
return filasAfectadas > 0;
}
}
}
/*
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 InsertarEspacio(string espacio, string abreviacion)
{
using (var connection = new ConexionBD(BD_CON).GetConnection())
{
var consulta = "INSERT INTO espacio (name, abreviacion, habilitado) VALUES (@espacio, @abreviacion, @habilitado)";
using (var command = new MySqlCommand(consulta, connection))
{
command.Parameters.AddWithValue("@espacio", espacio);
command.Parameters.AddWithValue("@abreviacion", abreviacion);
command.Parameters.AddWithValue("@habilitado", 0);
connection.Open();
var filasAfectadas = command.ExecuteNonQuery();
return filasAfectadas > 0;
}
}
}
/*
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;
}
*/
public bool InsertarEstante(string estante, int idEspacios)
{
var existeEstante = ExisteEstante(estante);
if (!existeEstante)
{
var consulta = "INSERT INTO estantes (name, idEspacios, habilitado) VALUES (@estante, @idEspacios, @habilitado)";
using (var connection = new ConexionBD(BD_CON).GetConnection())
{
using (var command = new MySqlCommand(consulta, connection))
{
command.Parameters.AddWithValue("@estante", estante);
command.Parameters.AddWithValue("@idEspacios", idEspacios);
command.Parameters.AddWithValue("@habilitado", 0);
connection.Open();
var filasAfectadas = command.ExecuteNonQuery();
return filasAfectadas > 0;
}
}
}
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";
using (var connection = new ConexionBD(BD_CON).GetConnection())
{
using (var command = new MySqlCommand(consulta, connection))
{
command.Parameters.AddWithValue("@nombre", estante);
connection.Open();
var resultado = command.ExecuteScalar();
Console.WriteLine(resultado);
return Convert.ToInt32(resultado) > 0;
}
}
}
}
}