[ Foro de Java ]

excitb

11-Dec-2022 15:07
Invitado (intelectual)
0 Respuestas

package Logica_Operaciones_BD;


import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;

/**
*
* @author harol
*/
public final class OperacionesCRUD
{
   private static OperacionesCRUD lainstance = new OperacionesCRUD();
   private Connection conexion;

   private OperacionesCRUD()
   {        
   }
   
   public static OperacionesCRUD getInstance()
   {
       return lainstance;
   }
   
   private void iniciarConexionBD()//INICIAR LA CONEXIONA LA BD
   {
       this.conexion = ConexionBD.iniciarConexion();
   }
   
   private void cerrarConexionBD() throws SQLException  //CERRAR LA CONEXION A LA BD
   {
       if (this.conexion != null && this.conexion.isClosed() == false) //valida si aun está habierta la conexion BD
       {
           this.conexion.close();
       }
   }    
   //inciso 1.
   public int obtenerCantCarreras() throws SQLException //CONSULTA 1, PARTE 1.
   {
       //1. Conectar a la base de datos
       this.iniciarConexionBD();        
       //2. Variable para almacenar el total de carreras almacenadas en la base de datos.
       int totalCarreras = 0;    
       //3. definir espacio de trabajo para la declaración y ejecución de la consulta sql
       Statement stm = this.conexion.createStatement();
       //4. Definir el texto String de la consulta SQL.
       String sql = "select count(*) as total_carreras from carreras c";        
       //5. Ejecutar la consulta y amacenar en el objeto ResultSet
       ResultSet tabla = stm.executeQuery(sql);
       //6. Recorrer el objeto ResultSet mediante un while y para cada iteración resolver:
       while(tabla.next())
       {
           totalCarreras = tabla.getInt("total_carreras");            
       }
       //7. Cerrar la conexion a la base de datos    
       this.cerrarConexionBD();        
       //8. Retornar el total de carreras que está almancenado en la base de datos
       return totalCarreras;
   }
   //inciso 2.
   public Vector<String> obtenerListadoCarreras() throws SQLException //CONSULTA 2
   {
       //1. Conectar a la base de datos
       this.iniciarConexionBD();        
       //2. Crear el vector para almacenar la lista de nombres de carreras resultante de la consulta SQL a la base de datos.
       Vector<String> listado_carreras = new Vector<>();
       //complete la lógica del bloque de código que resuelve:
       //3. definir espacio de trabajo para la declaración y ejecución de la consulta sql
       Statement stm = this.conexion.createStatement();
       //4. Definir el texto String de la consulta SQL.
       String sql = "select c.nombre as nombres_carreras from carreras c";
       //5. Ejecutar la consulta y amacenar en el objeto ResultSet
       ResultSet tabla = stm.executeQuery(sql);
       //6. Recorrer el objeto ResultSet mediante un while y para cada iteración resolver:
       while(tabla.next())
       {
           String nombre_carrera = tabla.getString("nombres_carreras");
           listado_carreras.add(nombre_carrera);
       }
       //7. Cerrar la conexion a la base de datos      
       this.cerrarConexionBD();
       //8. Retornar el objeto vector con la lista de nombres de carreras almacenados en la base de datos
       return listado_carreras;
   }  
   //OK
   public Vector<String> obtenerListaParalelos() throws SQLException
   {
       //1. Conectar a la base de datos
       this.iniciarConexionBD();
       //2. Crear el vector para almacenar la lista de códgidos de paralelos resultante de la consulta SQL a la base de datos.
       Vector<String> lista_paralelos = new Vector<>();
       //complete la lógica del bloque de código que resuelve:
       //3. definir espacio de trabajo para la declaración y ejecución de la consulta sql
       Statement stm = this.conexion.createStatement();            
       //4. Definir el texto String de la consulta SQL.
       String sql = "select p.nombre as PARALELOS from paralelos p";                
       //5. Ejecutar la consulta y amacenar en el objeto ResultSet
       ResultSet tabla = stm.executeQuery(sql);
       //6. Recorrer el objeto ResultSet mediante un while y para cada iteración resolver:
       while(tabla.next())
       {                    
           //6.1. Obtener el valor de columna de la fila actual del objeto ResultSet
           String valorColumna = tabla.getString("PARALELOS");                    
           //6.2. Almacenar en el vector creado en el paso 2. el valor de columna de la fila actual del objeto ResultSet
           lista_paralelos.add(valorColumna);
       }  
       //7. Cerrar la conexion a la base de datos
       this.cerrarConexionBD();
       //8. Retornar el objeto vector con la lista de códigos de paralelos almacenados en la base de datos
       return lista_paralelos;        
   }
   //Inciso 3
   public Vector<String> obtenerListaParalelosCarrera(String p_nombre_carrera) throws SQLException
   {
       //1. Conectar a la base de datos
       this.iniciarConexionBD();
       //2. Crear el vector para almacenar la lista de códgidos de paralelos resultante de la consulta SQL a la base de datos.
       Vector<String> lista_paralelos_codigo = new Vector<>();      
       //complete la lógica del bloque de código que resuelve:
       //3. definir espacio de trabajo para la declaración y ejecución de la consulta sql
       Statement stm = this.conexion.createStatement();            
       //4. Definir el texto String de la consulta SQL.
       String sql = "SELECT p.nombre, p.cod_paralelo FROM paralelos p join carreras c on p.cod_carrera = c.cod_carrera where c.nombre = '"+p_nombre_carrera+"'";
       //5. Ejecutar la consulta y amacenar en el objeto ResultSet
       ResultSet tabla = stm.executeQuery(sql);
       //6. Recorrer el objeto ResultSet mediante un while y para cada iteración resolver:
       while(tabla.next())
       {                            
           String valorColumna = tabla.getString("nombre");                    
           lista_paralelos_codigo.add(valorColumna);
       }  
       //7. Cerrar la conexion a la base de datos
       this.cerrarConexionBD();
       //8. Retornar el objeto vector con la lista de códigos de paralelos almacenados en la base de datos
        return lista_paralelos_codigo;
   }
   //Inciso 4
   public ArrayList<Vector<String>> obtenerEstudInscritosPorCarrera(String p_nombre_carrera) throws SQLException
   {
       //1. Conectar a la base de datos
       this.iniciarConexionBD();
       //2. Crear la matriz de datos para almacenar la consulta SQL, cada fila es un Vector de String
       ArrayList<Vector<String>> consulta = new ArrayList<>();
       //3. definir espacio de trabajo para la declaración y ejecución de la consulta sql
       Statement stm = this.conexion.createStatement();  
       //4. Definir el texto String de la consulta SQL.
       String sql = "select e.cedula, e.nombres, e.apellidos from inscripciones_estudiantes i \n" +
       "JOIN estudiantes e ON (i.cedula = e.cedula)\n" +
       "JOIN carreras c ON (i.cod_carrera = c.cod_carrera) where c.nombre = '"+p_nombre_carrera+"'";
       //5. Ejecutar la consulta y amacenar en el objeto ResultSet
        ResultSet tabla = stm.executeQuery(sql);    
       //6. Recorrer el objeto ResultSet mediante un while y para cada iteración resolver:
       while(tabla.next())
       {      
           Vector datos = new Vector <>();
           String cedula = tabla.getString("cedula");        
           datos.add(cedula);
           String nombre = tabla.getString("nombres");                    
           datos.add(nombre);
           String apellido = tabla.getString("apellidos");                    
           datos.add(apellido);
           consulta.add(datos);
       
       }                        
       //7. Cerrar la conexion a la base de datos
       this.cerrarConexionBD();
       //8. Retornar la matriz de datos con los resultados de la consulta SQL.
       return consulta;
   }
   //Inciso 5
   public ArrayList<Vector<String>> obtenerEstudInscritosPorParalelo(String p_codigo_paralelo) throws SQLException
   {
        //1. Conectar a la base de datos
       this.iniciarConexionBD();
       //2. Crear la matriz de datos para almacenar la consulta SQL, cada fila es un Vector de String
       ArrayList<Vector<String>> consulta = new ArrayList<>();
       //3. definir espacio de trabajo para la declaración y ejecución de la consulta sql
       Statement stm = this.conexion.createStatement();  
       //4. Definir el texto String de la consulta SQL.
       String sql = "select e.cedula, e.nombres, e.apellidos from inscripciones_estudiantes i \n" +
                      "JOIN estudiantes e ON (i.cedula = e.cedula)\n" +
                       "JOIN paralelos p ON (i.cod_paralelo = p.cod_paralelo ) where p.nombre = '"+p_codigo_paralelo+"'";
       //5. Ejecutar la consulta y amacenar en el objeto ResultSet
        ResultSet tabla = stm.executeQuery(sql);    
       //6. Recorrer el objeto ResultSet mediante un while y para cada iteración resolver:
        while(tabla.next())
       {      
           Vector datos = new Vector <>();
           String cedula = tabla.getString("cedula");        
           datos.add(cedula);
           String nombre = tabla.getString("nombres");                    
           datos.add(nombre);
           String apellido = tabla.getString("apellidos");                    
           datos.add(apellido);
           consulta.add(datos);
       }                                            
       //7. Cerrar la conexion a la base de datos
       this.cerrarConexionBD();
       //8. Retornar la matriz de datos con los resultados de la consulta SQL.
       return consulta;
   }
   
}




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)