Conexion.java
package elrinconprograues.mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Conexion { String userName = "root"; String password = "root"; String url = "jdbc:mysql://localhost/"; String urlDriver = "com.mysql.jdbc.Driver"; String database = "busqueda"; private Connection con; Statement st; ResultSet rs; public Conexion() { } public void abrirConexion() { try { Class.forName(urlDriver).newInstance(); con = DriverManager.getConnection(url + database, userName, password); System.out.println("Conexión a la BD"); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException e) { System.out.println("Error en conexion "); System.out.println(e.getMessage()); } } public void cerrarConexion() { try { con.close(); System.out.println("Conexión cerrada"); } catch (SQLException e) { System.out.println("Error al cerrar conexión"); } } }
Forma #1
Lo primero que haremos sera crear 2 Arraylist globales en nuestra clase Conexion (o crear segun sean necesarios) dado que en este ejemplo tengo una tabla llamada persona con 2 campos el nombre y el otro para el apellido.
ArrayList nombre = new ArrayList(); ArrayList apellido = new ArrayList()
Ahora crearemos un metodo llamado busquedaPersona que recibira como parametro un String:
public void busquedaPersona(String bsq) { abrirConexion(); nombre.clear(); apellido.clear(); try { st = con.createStatement(); rs = st.executeQuery("select nombre,apellido from persona where nombre like '"+bsq+"%'"); while (rs.next()) { nombre.add(rs.getString("nombre")); apellido.add(rs.getString("apellido")); } cerrarConexion(); } catch (Exception e) { System.out.println(e.getMessage()); } }
Con esto terminamos nuestra clase Conexion que quedaria de la siguiente manera:
package elrinconprograues.mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; public class Conexion { String userName = "root"; String password = "root"; String url = "jdbc:mysql://localhost/"; String urlDriver = "com.mysql.jdbc.Driver"; String database = "busqueda"; private Connection con; Statement st; ResultSet rs; ArrayList nombre = new ArrayList(); ArrayList apellido = new ArrayList(); public Conexion() { } public void abrirConexion() { try { Class.forName(urlDriver).newInstance(); con = DriverManager.getConnection(url + database, userName, password); System.out.println("Conexión a la BD"); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException e) { System.out.println("Error en conexion "); System.out.println(e.getMessage()); } } public void cerrarConexion() { try { con.close(); System.out.println("Conexión cerrada"); } catch (SQLException e) { System.out.println("Error al cerrar conexión"); } } public void busquedaPersona(String bsq) { abrirConexion(); nombre.clear(); apellido.clear(); try { st = con.createStatement(); rs = st.executeQuery("select nombre,apellido from persona where nombre like '"+bsq+"%'"); while (rs.next()) { nombre.add(rs.getString("nombre")); apellido.add(rs.getString("apellido")); } cerrarConexion(); } catch (Exception e) { System.out.println(e.getMessage()); } } }
Por lo que continuaremos con nuestro JFrame el cual contendra un JTextField, un JButton y una JTable Primero crearemos una instancia de nuestra clase Conexion
Conexion con;
Y tambien una instancia de DefaultTableModel para nuestra tabla:
DefaultTableModel modelo;
Ahora las inicializamos en nuestro constructor y asignamos el DefaultTableModel a nuestra tabla:
public Busqueda() { initComponents(); con=new Conexion(); modelo = new DefaultTableModel(); modelo = (DefaultTableModel) jTable1.getModel(); jTable1.setModel(modelo); }
Tambien crearemos un metodo para borrar las filas de nuestra tabla cada vez que realicemos una busqueda:
public void borrarTabla(){ for (int i = 0; i < modelo.getRowCount();i++) { modelo.removeRow(i); } }
Luego crearemos el evento ActionPerformed en nuestro boton para realizar la busqueda y dentro de el llamaremos a nuestro metodo busquedaPersona de nuestra Clase Conexion y tambien crearemos un for con el cual llenaremos nuestra tabla con los datos de los ArraryList:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { con.busquedaPersona(jTextField1.getText()); borrarTabla(); for (int i = 0; i < con.nombre.size(); i++) { modelo.addRow(new Object[]{con.nombre.get(i),con.apellido.get(i)}); } }
Con esto estaria completa la primer forma de hacer una busqueda en MySQL.
Forma #2
Para nuestra siguiente forma la Clase Conexion seria practicamente la misma con la unica diferencia que no necesitaremos los ArrayList y nuestro metodo busquedaPersona no solo recibira un String como parametro sino que tambien reibira el DefaultTableModel de nuestra tabla por lo que quedaria de la siguiente forma:
package elrinconprograues.mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.table.DefaultTableModel; public class Conexion { String userName = "root"; String password = "root"; String url = "jdbc:mysql://localhost/"; String urlDriver = "com.mysql.jdbc.Driver"; String database = "busqueda"; private Connection con; Statement st; ResultSet rs; public Conexion() { } public void abrirConexion() { try { Class.forName(urlDriver).newInstance(); con = DriverManager.getConnection(url + database, userName, password); System.out.println("Conexión a la BD"); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException e) { System.out.println("Error en conexion "); System.out.println(e.getMessage()); } } public void cerrarConexion() { try { con.close(); System.out.println("Conexión cerrada"); } catch (SQLException e) { System.out.println("Error al cerrar conexión"); } } public void busquedaPersona(String bsq, DefaultTableModel modelo) { abrirConexion(); try { st = con.createStatement(); rs = st.executeQuery("select nombre,apellido from persona where nombre like '"+bsq+"%'"); while (rs.next()) { modelo.addRow(new Object[]{rs.getString("nombre"),rs.getString("apellido")}); } cerrarConexion(); } catch (Exception e) { System.out.println(e.getMessage()); } } }Ahora en el JFrame especificamente el ActionPerformed del boton quedaria de la siguiente manera:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { borrarTabla(); con.busquedaPersona(jTextField1.getText(), modelo); }