Si necesitas un código de programación en específico, escríbeme al formulario de contacto.

BUSCA TU CÓDIGO


BUSCA MÁS CÓDIGOS DE PROGRAMACIÓN AQUÍ:

▷ Código JAVA: Consultar información en una Base de datos y mostrarla en un JTable


Código JAVA anterior: 
Agregar Pop-Up a un JTable.
-------------------------------------------------------------------------------------------
Este post está orientado a la aplicación e implementación de un fragmento de código JAVA, que nos permitirá consultar la información guardada en nuestra Base de datos y mostrarla en un jTable de nuestro formulario, dándonos la posibilidad de verificar datos, y/o hacer modificaciones (actualizar/eliminar) en los mismos:

Método Buscar:
Pool metodospool = new Pool();
DefaultTableModel ModeloTabla;
    

public void Buscar(String valor, String filtro, JTable tablacontactos){

    String [] columnas={"ID","Nombres","Apellidos","Email","Celular", "Dirección", "Ciudad"};
    String [] registro=new String[7];
    ModeloTabla=new DefaultTableModel(null,columnas); 
    String SSQL;
    Connection conect = null;
 
    if(filtro.equals("Apellidos")){
    
        SSQL= "SELECT id_contacto, nombres, apellidos, email, celular, direccion, ciudad "
              + "FROM contacto WHERE apellidos LIKE '%"+valor+"%'";
        
    }else if(filtro.equals("Email")){
    
        SSQL= "SELECT id_contacto, nombres, apellidos, email, celular, direccion, ciudad "
              + "FROM contacto WHERE email LIKE '%"+valor+"%'";
    
    }else{
    
        SSQL= "SELECT id_contacto, nombres, apellidos, email, celular, direccion, ciudad "
              + "FROM contacto WHERE celular LIKE '%"+valor+"%'";
    
    }
    
           
     
    try {

        conect = metodospool.dataSource.getConnection();
        PreparedStatement st = conect.prepareStatement(SSQL);
        ResultSet rs = st.executeQuery();

        while (rs.next()){
          
            registro[0]=rs.getString("id_contacto");
            registro[1]=rs.getString("nombres");
            registro[2]=rs.getString("apellidos");
            registro[3]=rs.getString("email");
            registro[4]=rs.getString("celular");
            registro[5]=rs.getString("direccion");
            registro[6]=rs.getString("ciudad");
          
            ModeloTabla.addRow(registro);
           
        }
        
        tablacontactos.setModel(ModeloTabla);

    } catch (SQLException e) {


        JOptionPane.showMessageDialog(null, e, "Error durante el procedimiento", JOptionPane.ERROR_MESSAGE);
    
    }finally{

        if(conect!=null){
        
            try {

                conect.close();

            } catch (SQLException ex) {

                JOptionPane.showMessageDialog(null, ex, "Error de desconexión", JOptionPane.ERROR_MESSAGE);

            }
        
        }
        
    }


}

Método del campo de búsqueda (jTextField):
MetodosBD metodosbd = new MetodosBD();
 
private void txtValorbusquedaKeyReleased(java.awt.event.KeyEvent evt) {                                             
       
        metodosbd.Buscar(txtValorbusqueda.getText(), cboxFiltro.getSelectedItem().toString(), tblDatos);        
        
}

VIDEO TUTORIAL (PASO A PASO)


 
Instrucciones y Recomendaciones 

1-Antes que todo, deberás copiar y pegar las siguientes librerías, las cuales son sumamente necesarias para que el código que vamos a implementar (Método Buscar) funcione sin inconvenientes.
Recuerda pegarlas
después de la línea de código que representa el nombre del paquete (ej. package Metodos;) y sobre la línea de código que identifica el nombre de tu Clase (ej. public class MetodosBD{...):

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;




2-Copia y pega el código resaltado en color rosa y el de color verde, luego de la llave de apertura "{" de la Clase JAVA donde tienes los métodos de tu proyecto.
Lo que hacemos en las primeras dos líneas de código (color rosa), es instanciar un objeto de la Clase Pool que nos va a permitir conectarnos con la Base de datos, y al que hemos llamado "metodospool"; luego, en la siguiente línea, procedemos a crear una variable u objeto del tipo "DefaultTableModel", dándole el nombre de "ModeloTabla", este nos va a dar la posibilidad de manejar y manipular el jTable de nuestro formulario:

Pool metodospool = new Pool();
DefaultTableModel ModeloTabla; 
3-Siguiendo con la sección de color verde, la cual representa la estructura de un método que nos ayudará a traer información de la base de datos, y hacerla visible al usuario en nuestro formulario a través del componente jTable. 
En la primera parte definimos las propiedades de nuestro método, en este caso, "public" (para que esté disponible y sea accedido desde otras Clases) y "void" (no esperamos que devuelva un valor desde su interior); a continuación, le especificamos un nombre, el cual ya sabemos debe ir relacionado acorde a la función que llevará o ejecutará el método, por ello lo hemos llamado "Buscar".
Lo que sigue ahora, es colocar entre paréntesis los parámetros que el método necesitará para llevar a cabo el proceso de forma adecuada. Para esta oportunidad, hemos de asignar 3 parámetros, el primero es una variable tipo "String" llamada "valor" y que representa valga la redundancia, el valor a buscar en los registros almacenados en una tabla de la Base de datos; el segundo parámetro, al igual que el primero, también consiste en una variable tipo "String" llamada "filtro", la cual contendrá el nombre específico de uno de los campos de la tabla de la Base de datos, donde se llevará a cabo la búsqueda; Por último, el tercer parámetro, como lo podemos observar, es un componente del tipo "JTable" llamado "tablacontactos", y que representa la tabla de nuestro formulario, donde se mostrarán los resultados encontrados.
Una vez hemos terminado de asignar los parámetros respectivos y necesarios, inmediatamente después del paréntesis de cierre ")", vamos a colocar un par de llaves, una de apertura "{", y otra de cierre "}", las cuales van a delimitar y contendrán todo el código de nuestro método "Buscar":

public void Buscar(String valor, String filtro, JTable tablacontactos){}
4-Dentro de las llaves de nuestro método, primero vamos a crear un arreglo unidimensional del tipo "String" llamado "columnas", y que llenaremos con una serie de valores, los cuales representarán el encabezado (título) de los campos del jTable; seguidamente, instanciaremos otro array "String", al que llamaremos "registro", dándole una longitud y/o tamaño de siete (7) espacios (el tamaño dependerá del número de datos que hayamos almacenado en el vector "columnas"), en este array vamos a almacenar cada registro (fila) de la tabla de nuestra Base de datos, que coincida con los datos de búsqueda implementados.
Vamos a instanciar el objeto "ModeloTabla" que creamos con anterioridad (Paso 2), y le pasaremos 2 parámetros; el primero lo asignamos como "null", y el segundo será el array "columnas" (campos de la tabla).
Se llevará a cabo la creación de una variable "String", llamada "SSQL", en esta se almacenará la sentencia SQL que nos permitirá realizar la consulta.
Para terminar, crearemos e instanciaremos un objeto del tipo "Connection", y que llamamos "conect", asignándole el valor "null", este nos permitirá administrar la conexión con la Base de datos:


    String [] columnas={"ID","Nombres","Apellidos","Email","Celular", "Dirección", "Ciudad"};
    String [] registro=new String[7];
    ModeloTabla=new DefaultTableModel(null,columnas); 
    String SSQL;
    Connection conect = null;

5-En el siguiente paso, vamos a construir y/o establecer condicionales "if" anidados; para ello, en las condiciones tomaremos como referencia el valor de la variable "filtro" y dependiendo del mismo, haremos una modificación en la sentencia SQL que hemos de utilizar para la consulta de datos.
Como lo mencionábamos en el paso 3, la variable "filtro" nos ayudará a determinar en qué campo de la tabla se buscará el valor que contenga la variable con este mismo nombre (valor). Si reparamos bien, la modificación se realiza luego del condicional "WHERE" de la sentencia, y lo que se hace es reemplazar el nombre del campo, por el que el usuario haya elegido en el formulario de búsqueda.
Si apenas estas comenzando a programar, o no tienes claro la estructura de la Sentencia SQL para consultar información en una base de datos, te invitamos a que des clic aquí, para que tengas una idea clara al respecto:

    if(filtro.equals("Apellidos")){
    
        SSQL= "SELECT id_contacto, nombres, apellidos, email, celular, direccion, ciudad "
              + "FROM contacto WHERE apellidos LIKE '%"+valor+"%'";
        
    }else if(filtro.equals("Email")){
    
        SSQL= "SELECT id_contacto, nombres, apellidos, email, celular, direccion, ciudad "
              + "FROM contacto WHERE email LIKE '%"+valor+"%'";
    
    }else{
    
        SSQL= "SELECT id_contacto, nombres, apellidos, email, celular, direccion, ciudad "
              + "FROM contacto WHERE celular LIKE '%"+valor+"%'";
    
    }


6-Emplearemos un bloque "try{}catch(){}finally{}".
Dentro de las llaves "{}" del "try", haremos varias cosas:

-Usaremos el objeto tipo "Connection", y luego del signo igual procederemos a usar el objeto "metodospool", con el cual tendremos acceso al objeto y/o variable de tipo "DataSource" de la Clase Pool, aplicándole posteriormente el método ".getConnection()"; con esto, estaremos estableciendo la conexión con la base de datos.
-Vamos a preparar y a enviar a la base de datos, la sentencia SQL con la que realizaremos la consulta requerida, por lo cual, crearemos una variable del tipo "PreparedStatement", y la llamaremos "st", luego del signo igual (=) usaremos el objeto "conect", al cual le aplicaremos el método ".prepareStatement()", a este le pasaremos como parámetro, la variable "SSQL" que contiene la sentencia SQL.
-Crearemos un objeto del tipo "Resulset", lo llamaremos "rs"; a continuación, posterior al signo igual (=), usaremos el objeto "st", aplicándole el método ".executeQuery()", con lo que podremos estar ejecutando la consulta que ya ha sido enviada a la base de datos

-Haremos uso de un ciclo condicional "WHILE", y en cuya condición usaremos el objeto "rs", aplicando sobre este, el método ".next()"; en otras palabras, verificaremos que mientras hayan registros en la tabla que cumplan con lo estipulado en la Sentencia SQL, se llevará a cabo lo que haya dentro del "ciclo While".
-Dentro del ciclo While, lo que hacemos es asignar a cada espacio del array "registro", un determinado valor perteneciente a un campo específico de la tabla de nuestra base de datos.
Para llevar a cabo esto, lo que se hace es determinar el espacio y/o ubicación del valor en el array (0, 1, 2, 3, 4, 5, 6); luego, utilizamos el objeto "rs" y le aplicamos el método ".getString()", pasándole como parámetro el nombre del campo de la tabla de la base de datos, de donde queremos obtener el valor.


¡NOTA IMPORTANTE!: 
Hay que tener en cuenta que esta asignación debe ser de forma organizada, teniendo como referencia el mismo orden que se estableció en el arreglo "columnas"; es decir, si en el array "columnas" se estableció en el segundo espacio, el título o encabezado "Nombres", de la misma forma en el segundo espacio del array "registros", se deberá capturar el valor que haya en el campo "nombres" de la tabla en la base de datos.








-Luego, empleamos el objeto "ModeloTabla" que creamos en el paso 2, a este le estableceremos el método ".addRow()", pasándole como parámetro el array "registro". Aquí lo que se hace es usar por así decirlo una tabla virtual (ModeloTabla), e ir asignándole un registro o fila (.addRow(registro)).
-Inmediatamente después de la llave de cierre "}" del "ciclo While", usaremos el parámetro "tablacontactos", que representa la tabla en la cual mostraremos los resultados, a este componente le aplicamos el método ".setModel()", y le pasamos como parámetro el objeto "ModeloTabla"; en otras palabras, todo lo que se le hizo a nuestra "tabla virtual" (ModeloTabla), se verá reflejado en la tabla de nuestro formulario:

    try {

        conect = metodospool.dataSource.getConnection();
        PreparedStatement st = conect.prepareStatement(SSQL);
        ResultSet rs = st.executeQuery();

        while (rs.next()){
          
            registro[0]=rs.getString("id_contacto");
            registro[1]=rs.getString("nombres");
            registro[2]=rs.getString("apellidos");
            registro[3]=rs.getString("email");
            registro[4]=rs.getString("celular");
            registro[5]=rs.getString("direccion");
            registro[6]=rs.getString("ciudad");
          
            ModeloTabla.addRow(registro);
           
        }
        
        tablacontactos.setModel(ModeloTabla);

    }

7-En la parte del catch(){}, dentro de los paréntesis "()" establecemos el tipo de excepción que puede producirse (SQLException), y la representaremos y/o capturaremos en una variable llamada "e".
Ahora, dentro de las llaves de apertura "{" y de cierre "}", haremos uso del componente "JOptionPane.showMessageDialog", esto con el fin de mostrarle el error producido, al usuario, a través de un pequeño cuadro de diálogo:

    } catch (SQLException e) {


        JOptionPane.showMessageDialog(null, e, "Error durante el procedimiento", JOptionPane.ERROR_MESSAGE);
    
    }

8-En la última sección del "método Buscar", vemos la parte del "finally{}", dentro de sus llaves utilizamos un condicional "if", en el cual comprobaremos si la conexión con la Base de datos ha sido exitosa, en tal caso se procederá a ejecutar lo que hemos establecido dentro del "if", y que básicamente consiste en un bloque "try{}catch(){}". Dentro del "try", usamos el objeto "conect" creado en el paso 4, a este le estableceremos el método ".close()" con el fin de cerrar y/o liberar la conexión que se utilizó para realizar la consulta en la base de datos; luego, en la parte del "catch(){}", establecemos el tipo de excepción (SQLException) y la capturamos en una variable llamada "ex"; posteriormente, dentro de las llaves del "catch", vamos a usar un componente "JOptionPane.showMessageDialog", y cuando se produzca una excepción o error, se le informará al usuario del software, a través de una pequeña ventanita:

finally{

        if(conect!=null){
        
            try {

                conect.close();

            } catch (SQLException ex) {

                JOptionPane.showMessageDialog(null, ex, "Error de desconexión", JOptionPane.ERROR_MESSAGE);

            }
        
        }
        
}

9-Debes dirigirte a tu formulario, y ubicarte en la parte del código; luego, procederás a copiar y pegar la línea de código resaltada con color lila, después de la llave de apertura "{" de la Clase de tu JFrame. Básicamente, lo que se hace es instanciar un objeto de la Clase donde creamos el método Buscar, a dicho objeto lo hemos llamado "metodosbd":
MetodosBD metodosbd = new MetodosBD();
10-En tu formulario, mínimo debes de agregar los siguientes componentes: un Combo Box,  al cual debes asignarle opciones predeterminadas que consistirán en los nombres de los campos de la tabla que tienes en tu base de datos y donde se harán las consultas; un jTable, donde se mostrarán los resultados de las consultas realizadas; por último, un jTextField, aquí irás digitando el valor que deben contener los resultados de la búsqueda realizada en la tabla de tu base de datos. 
Seguidamente, deberás establecerle un evento del tipo KeyEvent al elemento jTextField, más exactamente el método "KeyReleased()" y posteriormente copiarás y pegarás dentro de este, el código resaltado de color azul. En este fragmento de código procedemos a usar el objeto "metodosbd", y a través del cual llamamos al método ".Buscar()"; a continuación, lo que tenemos que hacer es pasarle los parámetros respectivos, así: el primer parámetro, es capturar lo que se haya escrito y/o digitado en el campo de texto donde hemos asignado el método "KeyReleased()"; el segundo, consiste en capturar el ítem seleccionado en el Combo Box que contiene las opciones que representan cada campo de la tabla de nuestra base de datos; y el tercer parámetro, es el nombre de nuestra tabla (jTable) donde mostraremos los resultados obtenidos:
  
metodosbd.Buscar(txtValorbusqueda.getText(), cboxFiltro.getSelectedItem().toString(), tblDatos);        


¡NOTA IMPORTANTE!: 
Al aplicar el método "KeyReleased" al jTextField, cada vez que escribas (presiones una tecla) dentro de este componente, se irá actualizando de forma inmediata nuestra jTable, mostrando los datos que coincidan con la búsqueda.








11-Ahora sólo basta con ejecutar tu proyecto y hacer las respectivas pruebas.

Código JAVA: Consultar información en una Base de datos y mostrarla en un JTable

¡NOTA IMPORTANTE!: 
Si a la hora de mostrar los resultados, tus columnas no tienen el ancho necesario para ver los datos de forma correcta, recuerda que puedes ajustar su tamaño, si quieres saber cómo hacerlo, puedes visitar nuestro post:
"Cambiar el tamaño de las celdas de un JTable"

¿Quieres aprender más de JAVA?
Si deseas saber cómo consultar información en una base de datos y mostrarla en una tabla de tu formulario, pero de forma netamente gráfica usando NetBeans IDE, o ver otros temas muy interesantes, no te olvides de revisar los tips de JAVAseguir el Curso: Cómo lo hago en JAVA?

Accede a todos los fragmentos de código que hemos publicado en este lenguaje hasta el momento, dando clic en el siguiente enlace:

Ver listado de códigos JAVA

Suscríbete a nuestro blog, vía Email o RSS; además puedes seguirnos a través de nuestras redes sociales como: Facebook, Twitter, y Google+.

¿Conoces una forma más óptima de realizar el anterior procedimiento?, no dudes en compartir tu conocimiento con todos nuestros amigos de la web.

Si te fue de gran ayuda esta información, no olvides compartirla con tus amigos y en las redes sociales.
Si tienes dudas o sugerencias al respecto, abajo puedes dejarnos tus comentarios.
Bendiciones...





Comparte este código


4 comentarios:

  1. PORQUE ME SALE ERROR EN dataSource? PLis porfas

    ResponderBorrar
  2. Buenas, tengo una consulta ojalá puedan ayudarme ya que soy nuevo en Java, trataré de ser lo más claro posible..
    Dejare como son las llamadas de los form...
    Main-> login->principal->personal->ABM_Personal y también tengo una class Datos.java(aquí se hacen las consultas sql), y al hacer la consulta si es que existe el personal me retorna java.lang.nullpointerexception

    Pero cuando hago la misma consulta en

    Main-> login->principal->personal
    Si retorna el resultado...

    Aclaro que los form de personal y ABM_Personal son del tipo jInternalForm
    No pongo código xq funcionan bien los métodos
    De ser necesario lo agrego, pero habrá algún problema que un form Internal llame a otro form internal y deba agregar algo más? Gracias

    ResponderBorrar
  3. Hola mi nombre es Victor y me gustaria saber por favor como mostrar un mensaje si no se encuentra el dato en la base de datos.
    Saludos

    ResponderBorrar