Para tutorías y/o asesorías virtuales sobre JAVA SE y/o MySQL, escríbeme al formulario de contacto.

BUSCA MÁS CONTENIDO AQUÍ:



Curso de JAVA: Cómo hago el botón Buscar?




Una de las grandes ventajas que nos ofrece el uso de un sistema de información en nuestra empresa y/o negocio, además de almacenar y/o guardar información en una base de datos, es el poder realizar consultas de todos esos datos guardados, de una manera rápida y eficaz.
Si bien es cierto, que aún muchas personas son reacias a que en su trabajo implanten un software para gestionar y manejar ciertos procesos, ellos no pueden "tapar el sol con una mano", y negar que es mucho más óptimo dar unos cuantos clics para tener a la mano toda la información que un determinado cliente u otra persona les solicite, que preferir buscar en una "pila o montaña de papel" que de verdad resulta muy tedioso y muy pero muy poco óptimo e insatisfactorio.

Portada del capítulo #16 del Curso de JAVA: Cómo hago el botón Buscar?
En este decimosexto capítulo de nuestro Curso de JAVA, veremos la creación e implementación de un área de búsqueda que le permitirá a los usuarios de nuestro software, realizar consultas de información previamente guardada en la base de datos, para su posterior verificación y uso.

Explicación por Videotutorial:



Explicación por Foto-Tutorial:

*Dirígete a tu formulario, y agrega 5 componentes, así:

-1 JLabel (Etiqueta): Le cambiaremos el texto y le colocaremos “Buscar por:”.

-1 JComboBox (Lista desplegable): Procede a asignar una serie de valores predeterminados al ComboBox, los cuales equivalen a los nombres de las columnas de la tabla que agregaremos a nuestro formulario, pero en esta oportunidad sólo asignaremos 3 de los campos del JTable (“Nombres”, “Apellidos”, y “Ciudad”); luego, cambiamos el nombre de la variable de dicho elemento, en este caso le pondremos “cboxFiltro”.
Este componente, cumplirá con la función de ayudarnos a filtrar la búsqueda de información, realizando las consultas en un determinado campo de nuestra tabla de la base de datos.

-1 JTextField (Campo de texto): Eliminaremos el texto que trae por defecto; luego, modificaremos el nombre de la variable de dicho elemento, en este caso le pondremos “txtValorbusqueda”.
Todo lo que se escriba en este elemento, será lo que se busque en un determinado campo (de acuerdo a lo seleccionado en el ComboBox) de la tabla ubicada en la base de datos. 


-1 JButton (Botón): Modificamos el texto que trae por defecto y le colocamos “Buscar”; a continuación, cambiaremos el nombre de la variable de dicho elemento, en este caso le pondremos “btnBuscar”.
Al presionar este elemento, se ejecutará la consulta de información en la base de datos.

-1 JTable (Tabla): Configuramos y establecemos el diseño y estructura de nuestra tabla; en otras palabras, le asignamos un número de columnas con sus respectivos nombres y/o títulos, eliminamos también todas las filas que esta traiga por defecto; posteriormente, alteramos el nombre de la variable del JTable, en este caso le pondremos “tblDatos”. Aquí se mostrarán todos los registros que coincidan con la búsqueda y/o consulta lanzada desde nuestro programa:
 

Formulario java para realizar consultas de datos

*Ya con nuestro formulario listo, nos ubicaremos en nuestro paquete “Metodos”, y creamos la Clase “MetodosBD”:

Clase JAVA

Deberás copiar y pegar las siguientes librerías, para que el código funcione:
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; 
NOTA: Recuerda pegar dichas librerías 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{...).







*Luego, copia y pega el siguiente código, dentro de las llaves de apertura “{” y de cierre “}” de la Clase “MetodosBD”:

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);

            }
        
        }
        
    }

}

NOTA: Lo que representa este código, es la creación de un método que hemos llamado “Buscar”; el cual, como su nombre lo indica, es el que nos va a permitir realizar las consultas en nuestra tabla de la base de datos, para que de esta manera el usuario del software pueda obtener la información requerida.

Como vemos, este es un método que necesita de otra Clase (Pool), para realizar la conexión con la base de datos; además, se procede a usar un objeto “DefaultTableModel”, que nos va a permitir manipular el contenido de nuestro JTable.

Si deseas tener una explicación detallada línea por línea del anterior código, puedes dirigirte al siguiente artículo:

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

NOTA: Algo muy importante a tener en cuenta de este método, es la parte de la sentencia SQL que hemos de establecer para realizar nuestra consulta a la Base de datos. Si necesitas conocer un poco más sobre la estructura de este tipo de sentencia, dirígete al post donde te lo explicamos, sólo da clic en el enlace: 


"Sentencia SQL: Consultar registros específicos de una tabla (Condicional WHERE)".

*Teniendo en cuenta todo lo anterior, nuestra Clase “MetodosBD” quedaría de la siguiente forma:

package Metodos;

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;

public class MetodosBD {
    
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);

            }
        
        }
        
    }


}
    
    
}


*Ahora, vamos a dirigirnos nuevamente a nuestro formulario JAVA, y daremos doble clic (seguidos) sobre nuestro botón “Buscar”, para que de esta manera accedamos a la parte del código, más exactamente dentro del Evento que se ejecutará todos los códigos que allí se coloquen (una vez se pulse sobre el botón “Buscar”):

Puntero del mouse ubicado sobre el botón Buscar.

*Borraremos el comentario que está allí por defecto, y colocaremos el siguiente código: 

MetodosBD metodosbd = new MetodosBD();
metodosbd.Buscar(txtValorbusqueda.getText(), cboxFiltro.getSelectedItem().toString(), tblDatos);

*Lo que hacemos es instanciar un objeto de la Clase “MetodosBD” y posteriormente se procede a llamar al método “Buscar”, pasándole los respetivos parámetros, los cuales se capturan de los componentes del formulario en el que nos encontramos, los cuales agregamos al inicio (JComboBox, JTextField, y JTable).

Si deseas obtener una explicación detallada línea por línea del código anterior, puedes visitar el siguiente link:
"Consultar información en una Base de datos y mostrarla en un JTable". 

NOTA: Si lo deseas, la línea de código:
MetodosBD metodosbd = new MetodosBD();

Puedes colocarla afuera (arriba) del método del botón, pues esto es lo más recomendable, ya que posiblemente necesites usar otros métodos creados en la Clase “MetodosBD” y por consiguiente ya no tendrás que instanciarla nuevamente para hacer uso de los mismos, sino que tan sólo con instanciarla una sola vez, bastará.

*Ahora sólo debemos ejecutar nuestro proyecto y/o formulario, diligenciar los campos con los datos correspondientes y pulsar el botón “Buscar”, de esta manera se nos mostrarán en la tabla, los registros que coincidan con la consulta ejecutada:

  
Mostrando en un JTable la información guardada en nuestra base de datos.

Ahora bien, si necesitas ver cada dato de una forma más detallada y completa, puedes asignar la funcionalidad de que cuando des clic en la tabla, se te muestren dichos datos en los respectivos campos de tu formulario, ¿deseas saber cómo hacerlo?, entonces da clic aquí.

Si deseas descargar el vídeo, junto con el fascículo (PDF) del presente tema, sólo debes dirigirte a nuestra Zona de Descargas, y dar clic sobre el icono "Curso de JAVA Parte 16".

Para ver la Parte 15 del Curso, puedes dar clic en el siguiente enlace: "Curso de JAVA: Cómo hago el botón Guardar?"
Para ampliar más tus conocimientos en cuanto a desarrollar software usando JAVA, puedes ver todos los capítulos de "Cómo lo hago en JAVA?"


¿Quieres aprender a realizar aún más cosas y personalizar tus programas hechos en el lenguaje de programación JAVA?, si tu respuesta es "Sí", puedes acceder a todos los tips que hemos estado publicando en este blog, dando clic aquí.
 
Suscríbete a nuestro blog, vía Email o RSS; además puedes seguirnos a través de nuestras redes sociales como: Facebook, Twitter, YouTube y Google+.

Si te fue de gran ayuda este material, no olvides compartirlo con tus amigos. Si tienes dudas o sugerencias al respecto; puedes dejarnos tus comentarios.
Bendiciones...




Comparte este artículo






Sobre El Autor

Eduardo Bastidas UH

Cristiano y Colombiano. Analista de Sistemas & Blogger.
Me motiva mucho el poder compartir día tras día lo que he aprendido y voy aprendiendo en el área de las Tecnologías de la Información y las Comunicaciones.

16 comentarios:

  1. que tal Eduardo me gustaria preguntarte si se puede modificar en el mismo cuadro un dato especifico con jpopopMenu para tener mas libre el formulario y que este se pueda ver en tiempo real es decir sin necesidad de cerrar el formulario y asu vez eliminar ya no un dato si no toda la fila completa de la base de datos muchas gracias y te felicito tus enseñanzas son muy practicas

    ResponderEliminar
    Respuestas
    1. Saludos Estimado Roberto Carlos.

      Todo lo que me has dicho se puede hacer, es sólo cuestión de asignarle al jPopupMenu las funciones y/o métodos de Eliminar y Modificar.
      En estos momentos no tengo ningún tutorial con respecto a Modificar y Eliminar en una base de datos desde JAVA, pero pronto los estaré realizando.

      Bendiciones...

      Eliminar
  2. Hola Eduardo como seria el código en el caso de guardar y eliminar con el IDE Eclipse

    ResponderEliminar
    Respuestas
    1. Saludo cordial, estimado visitante y lector.
      Independientemente del IDE que uses, el código para realizar una operación en JAVA, va a ser el mismo en cualquier entorno de desarrollo.
      Te regalo dos post donde encontrarás lo que necesitas:

      Curso de JAVA: Cómo hago el botón guardar?

      Código JAVA: Borrar información de una base de datos

      Si llegas a tener alguna duda, déjame tu comentario.

      ¡CRISTO TE AMA!

      Bendiciones...

      Eliminar
  3. Varón creo bueno según mi caso esta línea de código **SSQL= "SELECT id_contacto, nombres, apellidos, email, celular, direccion, ciudad "
    + "FROM contacto WHERE apellidos LIKE '%"+valor+"%'";** está mal.... ya que según tengo entendido, por lo menos en mi caso no me corrió de la manera q la colocaste, cuando concatenas ..... ciudad " + " FROM...... de esta manera no corre pero si lo colocas ..... ciudad * FROM ..... corre perfectamente, no se por qué a mí no me corrió de la manera q la colocaste pero al colocarla como te sugerí corrió perfectamente. La pregunta es: Corre de las dos manera o en una en particular? y si las dos son válidas porque a mi no me corrió en la manera que la planteaste?

    ResponderEliminar
    Respuestas
    1. Saludos estimado GunBoundhacker, quisiera saber si a la hora de ejecutar tu aplicación usando la línea de código que dices que no te funciona, ¿te muestra algún error?
      Lo que si debes tener en cuenta es que debe haber un espacio entre las palabras claves y la otra parte de la sentencia; es decir, si en tu sentencia tienes:

      ciudad" + "FROM contacto

      (no te va a funcionar ya que no estas dejando espacios entre las palabras), ya que si quitas las comillas y el signo de suma, esta parte del código quedaría así:

      ciudadFROM contacto

      Pero si colocas:
      ciudad " + "FROM contacto

      o

      ciudad" + " FROM contacto

      (si te va a funcionar).

      Verifica si el programa te lanza un error y me comentas cual es.

      Bendiciones...

      Eliminar
  4. Buenas noches amigos, busco ayuda para lo siguiente...si tengo un espacio para buscar algo (por ejemplo el buscador google) y mi boton "buscar". Si el cliente no pone nada y le da click en buscar. ¿Como hago un manejo de error ahi? O como deshabilito el boton buscar? Esto lo hice con interfaz grafica.

    ResponderEliminar
    Respuestas
    1. Saludo estimado Jhonatan Cubero.

      Lo que puedes hacer es utilizar un condicional "if" dentro del botón buscar, en el cual verificarás que el campo de búsqueda no esté vacío, y le envías un mensaje al usuario a través de un JOptionPane.

      Cualquier duda me comentas.

      Bendiciones...

      Eliminar
  5. Que tal!
    Disculpa,me manda error en el dataSource...es l unico!...todo lo demas esta en perfecto estado
    Saludos

    ResponderEliminar
    Respuestas
    1. Saludos estimado Alex Moder.
      Debes verificar que la Clase Pool (que te permite hacer la conexión con la base de datos) esté correcta, y en especial que hayas importado las librerías que necesita dicha Clase.

      Bendiciones...

      Eliminar
  6. Buenas al ejecutar el codigo me sale este error: com.microsoft.sqlserver.jdbc.SQLServerException: El nombre de columna 'autor' no es válido. ???
    Alguna recoemndacion ......
    Sañudos

    ResponderEliminar
    Respuestas
    1. Saludos estimada Ericka Cambronero Chinchilla, por favor revisa tu sentencia SQL y verifica que los nombres de los campos sean los mismos que los de la tabla de la base de datos.

      Cualquier duda me comentas.

      ¡CRISTO TE AMA!
      ¡ÉL ES TU SALVADOR!

      Bendiciones...

      Eliminar
  7. cordial saludo me sale un error en datasource, he descargado los archivos como dices en el tutorial, pero sigue saliendo error en la clase pool, que puedo hacer.

    ResponderEliminar
    Respuestas
    1. Saludos estimado, debes cerciorarte de haber descomprimido los archivos descargados.
      En la parte donde te muestra el error, ¿te sale un icono de bombillo/foco o de otro tipo?, en caso de que sea así primero coloca el cursor del mouse sobre el icono; luego, da clic sobre el mismo, y regálame las opciones que te salen.

      ¡JESUCRISTO ES TU MEJOR AMIGO!

      Bendiciones...

      Eliminar
  8. Hola Eduardo, quisiera ver si me puedes ayudar, tengo una consulta en java a una base de datos
    PreparedStatement qr1 = fam.getConnection().prepareStatement("SELECT*FROM[TablaTM] where p6");
    ResultSet rst1 = qr1.executeQuery();

    y en esa columna p6 hay tres valores diferentes que son 1,2 y 3
    lo que quiero es que de esa columna en java en un jtable me acomode
    los 1 en una sola columna, los 2 en otra y asi mismo los 3 en otra
    alguna idea de como hacaerlo?
    gracias de antemano, saludos

    ResponderEliminar


RECIBIR NOTICIAS POR EMAIL


Suscríbete al boletín para recibir lo último en tu correo electrónico

¿NECESITAS AYUDA PARA PROGRAMAR EN JAVA SE Y MYSQL?