Formación informática

Java | Joomla | MySQL

Curso de Java - Tema 32.4.2: realización de consultas de selección sobre varias tablas con filtrado de datos

¿Sabes dónde está playa tan pedregosa?

El proceso para realizar este tipo de consultas difiere un poco del expuesto en el artículo anterior debido a que no podemos hacer uso del JavaBean que representa a la tabla para almacenar y mostrar los datos devueltos por el objeto ResultSet usando un objeto de tipo colección. En este caso tenemos que usar variables temporales para almacenar cada línea devuelta por el objeto ResultSet usando los métodos get. Así en la clase ManejadorBaseDatos escribiremos un método que no devuelve nada con un parámetro en el que usaremos:

  1. El método conector que hemos creado anteriormente para realizar la conexión con la base de datos.
  2. Una o varias variables de tipo String para almacenar el valor o valores que queremos usar en nuestra consulta para filtrar los resultados.
  3. La interface Statament para ejecutar la consulta y obtener el valor devuelto por la base de datos. Usaremos el método executeQuery para ejecutar la consulta almacenada en la variable y que nos devuelva un objeto.
  4. La interface ResultSet para convertir en una tabla el resultado de la consulta devuelto por el método executeQuery de la interface Statement. Esta interface mantiene un cursor de avance que apunta al registro correspondiente de la base de datos, que inicialmente apunta a la fila cero. El método next mueve el cursor a la siguiente fila y devuelve false cuando el objeto ResultSet ha alcanzado el final del resultado devuelto por la consulta. Mediante un bucle while, usando el método next realizamos el tratamiento del resultado devuelto.
  5. Dentro del bucle, usaremos una o varias variables para guardar el resultado devuelto por los métodos get de cada tipo de dato que tiene la clase ResultSet para recuperar los datos de la tabla, al que indicaremos el nombre del campo del cuál vamos a recuperar los datos.
  6. Por último, no hay que olvidarse de liberar los recursos usados cerrando todos los objetos que hemos usado durante el proceso.

De acuerdo a esto, si queremos obtener un listado de Municipios de España cuyo nombre contenga la palabra Madrid y que muestre su nombre, la Comunidad Autónoma y Provincia a la que pertenece, tenemos que escribir el siguiente método en la clase ManejadorBaseDatos:

public void buscarMunicipio(String nombre) {
        /*Realizamos la conexión con la base de datos usando el método conector*/
        Connection conexion = conector();
        /*Comprobamos si existe la condición para realizar el tratamiento adecuado*/
        if (conexion != null) {
            try {
                /*Creamos la consulta sql para buscar los datos usando el argumento del método*/
                String sql = "SELECT comunidad, Provincia, Nombre "
                        + "FROM comunidad "
                        + "INNER JOIN provincia ON codigo_comunidad = CODAUTO "
                        + "INNER JOIN municipio ON municipio.CODAUTO = provincia.CODAUTO AND municipio.CPRO = provincia.CPRO "
                        + "WHERE nombre LIKE'" + nombre + "'"
                        + "ORDER BY codigo_comunidad, provincia.CPRO";
                /*Creamos la conexión para hacer la consulta*/
                Statement consulta = conexion.createStatement();
                /*Ejecutamos la consulta y recuperamos los datos*/
                ResultSet resultado = consulta.executeQuery(sql);
                /* */
                while (resultado.next()) {
                    /*Guardamos en variables temporales los resultados*/
                    String comunidad = resultado.getString("comunidad");
                    String provincia = resultado.getString("Provincia");
                    String municipio = resultado.getString("Nombre");
                    /*Mostramos por línea de comandos el resultado de la consulta*/
                    System.out.println(comunidad + " - " + provincia + " - " + municipio);
                }
                /*Para liberar recursos cerramos los objetos*/
                consulta.close();
                resultado.close();
                conexion.close();
            } catch (SQLException ex) {
                System.out.println(ex.getMessage());
            }
        } else {
            System.out.println("Conexión no disponible. Compruebe los datos");
        }
    }

Mientras que en el método Main de la clase principal usaremos el método anterior para introducirle el parámetro y que nos devuelva directamente la consulta debido a que el método ya realiza todo el trabajo necesario para mostrar los datos por línea de comandos. Así tenemos que añadir el siguiente código:

/* Realizamos la búsqueda de un municipio usando el método creado */
System.out.println("--- Listado Municipios de España cuyo nombre tiene la palabra Madrid ---");
mbd.buscarMunicipio("%Madrid%");
Curso de Java - Tema 32.4.1: realización de consultas de selección sobre una tabla con filtrado de datos | Curso de Java - Tema 32.4.3: realización de consultas para insertar datos
Curso de Java - Índice Ejercicios Nivel Medio

Escribir un comentario

Aunque los comentarios no expresan la opinión del administrador del sitio web, éste si que tiene una responsabilidad legal sobre lo que aparece. Por lo tanto, habrá una labor de moderación de los mensajes. No se permitirán mensajes ofensivos ni publicidad


Código de seguridad
Refescar

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-Ley 13/2012, de 30 de marzo. Si continúa navegando consideramos que acepta el uso de cookies. . Más información