viernes, 25 de septiembre de 2015

Buscar y Mostrar una consulta en una JTable con Java y MySQL

Hola amig@s en esta ocacion (despues de un largo tiempo c: ) les mostrare como hacer una busqueda en una base de datos MySQL por coincidencia de caracteres y mostrarla en una JTable de dos maneras diferentes lo primero sera crear nuestra clase Conexion la cual sera igual para ambas formas:

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

jueves, 3 de julio de 2014

Copiar y Pegar en Java

Hola ami @ s Esta Vez despues de Estar Mucho Tiempo Alejado del Blog he vuelto estafa this Programa Donde sí Hace BSG del portapapeles párr Poder Obtener Datos en Este Caso solitario obtendremos Texto Pero Florerias funcionar párr copiar y pegar imagenes from portapapeles.


Imagenes:






Codigo:


IMPORTAMOS this in our Clase director:
java.io.IOException importación;
javax.swing.JOptionPane importación;

Declaramos ESTO Dentro de Nuestra Clase:
Portapapeles p = new portapapeles ();
Texto String;

Eventos de Nuestros Botones:


Boton pegar:

try {
            p.obtenerDatosPortapapeles (jTextArea1);
            JOptionPane.showMessageDialog (null,
                        "Se ha Retrieved Datos del portapapeles", "Pegado", JOptionPane.INFORMATION_MESSAGE);
        } Catch (IOException ex) {
            JOptionPane.showMessageDialog (null,
                        "Ha ocurrido sin error al intentar \ nObtener los Datos del portapapeles", "Error de Datos", JOptionPane.ERROR_MESSAGE);
        }


Boton copiar:

texto = jTextArea1.getText ();
        if (! texto.isEmpty ()) {
                p.copiarAlPortapapeles (Texto, jTextArea1);
                JOptionPane.showMessageDialog (null,
                        "Se ha copiado al portapapeles", "Copiado", JOptionPane.INFORMATION_MESSAGE);
            } Else {
                JOptionPane.showMessageDialog (null,
                        "Ha ocurrido el error de la ONU en la conversión \ nO el área de texto this vacia", "Error de Datos", JOptionPane.ERROR_MESSAGE);
            }


Clase portapapeles:

importar java.awt.Toolkit;
importación java.awt.datatransfer.Clipboard;
importación java.awt.datatransfer.DataFlavor;
java.awt.datatransfer.StringSelection importación;
importación java.awt.datatransfer.Transferable;
java.awt.datatransfer.UnsupportedFlavorException importación;
java.io.IOException importación;
javax.swing.JTextArea importación;

/ **
 *
 * @ Author alexanderbeer
 * /
public class portapapeles {

    portapapeles Portapapeles privados;
    Datos mobiliarios privados;

    copiarAlPortapapeles public void (String text, JTextArea tex) {
        portapapeles = Toolkit.getDefaultToolkit () getSystemClipboard ().;
        Texto StringSelection = new StringSelection ("" + texto);
        portapapeles.setContents (Texto, Texto);
        tex.setText ("");
    }

    obtenerDatosPortapapeles public void (texto JTextArea) throws IOException {
        portapapeles = Toolkit.getDefaultToolkit () getSystemClipboard ().;
        Datos = portapapeles.getContents (null);
        if (datos.isDataFlavorSupported (DataFlavor.stringFlavor)) {
            try {
                text.setText ("" + datos.getTransferData (DataFlavor.stringFlavor));
            } Catch (UnsupportedFlavorException e) {
                / / Bloque catch generado automáticamente TODO
                e.printStackTrace ();
            } Catch (IOException e) {
                / / Bloque catch generado automáticamente TODO
                e.printStackTrace ();
            }
        }
    }
}

PUEDES descargar el project from:
  

martes, 11 de febrero de 2014

Pasar texto de un JTextField a una JList

Hola amig@s ahora les mostrare como pasar el texto de un JTextField a una JList con tan solo unas cuantas lineas y sin complicaciones.

Captura: