Mostrando entradas con la etiqueta mysql. Mostrar todas las entradas
Mostrando entradas con la etiqueta mysql. Mostrar todas las entradas

domingo, 6 de diciembre de 2015

Clase MySQLConnection java

Hola amig@s en esta ocasión les traigo algo diferente a lo habitual se trata de una clase de conexión para  MySQL  con la cual se pretende simplificar este proceso que suele ser algo tedioso, esta clase cuenta ademas de métodos para realizar las operaciones de insertar, modificar, eliminar y consultar a MySQL desde una aplicación java:

Código:

import java.sql.Statement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class MySQLConnection { String userName = "root"; String password = "root"; String url = "jdbc:mysql://localhost/"; String urlDriver = "com.mysql.jdbc.Driver"; String database = "database"; Connection con; Statement st; ResultSet rs; /** * constructor vacio * @usage MySQLConnection connect = new MySQLConnection(); */ public MySQLConnection() { } /** * @return retorna la conexion a la base de datos * @use Statement st = connect.OpenConnection().createStatement(); */ public Connection OpenConnection() { con = null; try { Class.forName(urlDriver).newInstance(); con = DriverManager.getConnection(url + database, userName, password); System.out.println("connect"); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException e) { System.out.println(e.getMessage()); } return con; } /** * * @use connect.CloseConnection(connect.con) */ public void CloseConnection() { try { con.close(); System.out.println("close connection"); } catch (SQLException e) { System.out.println(e.getMessage()); } } /** * * @param con cierra la conexion a la base de datos * @use connect.CloseConnection(connect.con) */ public void CloseConnection(Connection con) { try { con.close(); System.out.println("close connection"); } catch (SQLException e) { System.out.println(e.getMessage()); } } /** * @param sql query para un select * @return rs retorno de la consulta efectuada caso contrario retorna null * @use */ public ResultSet executeQuery(String sql) { try { st = OpenConnection().createStatement(); rs = st.executeQuery(sql); return rs; } catch (Exception e) { System.out.println(e.getMessage()); } return null; } /** * * @param sql query para un select * @return rs retorno de la consulta efectuada caso contrario retorna null */ public boolean executeUpdate(String sql) { try { st = OpenConnection().createStatement(); rs = st.executeQuery(sql); return true; } catch (Exception e) { System.out.println(e.getMessage()); } return false; } /** * * @param pstm query para un select * @return rs retorno de la consulta efectuada caso contrario retorna null */ public ResultSet PreparedStatementExecuteQuery(PreparedStatement pstm) { try { rs = pstm.executeQuery(); return rs; } catch (Exception e) { System.out.println(e.getMessage()); } return null; } /** * * @param pstm query para un select * @return rs retorno de la consulta efectuada caso contrario retorna null */ public boolean PreparedStatementExecuteUpdate(PreparedStatement pstm) { try { pstm.executeUpdate(); return true; } catch (Exception e) { System.out.println(e.getMessage()); } return false; } /** * * @param sql query para crear un PreparedStatement para agregar los datos * @return rs retorno de la consulta efectuada caso contrario retorna null */ public PreparedStatement create(String sql){ try { PreparedStatement pstm=OpenConnection().prepareStatement(sql); return pstm; } catch (SQLException ex) { System.out.println(e.getMessage()); } return null; } }
Ejemplo de uso: Este es un pequeño ejemplo de un login utilizando dicha clase.

import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; import java.sql.PreparedStatement; import java.sql.Statement; import java.sql.ResultSet; import java.sql.SQLException; public class Operations { Statement st; ResultSet rs; MySQLConnection mysqlconnect; PreparedStatement pstm; public Operations() { mysqlconnect = new MySQLConnection(); } public void insertUser(String user, String password, int accessLevel) { try { pstm = mysqlconnect.create("insert into usuario values(?,?,?)"); pstm.setString(1, user); pstm.setString(2,password); pstm.setInt(3, accessLevel); mysqlconnect.PreparedStatementExecuteUpdate(pstm); mysqlconnect.CloseConnection(mysqlconnect.con); } catch (SQLException | NoSuchAlgorithmException | UnsupportedEncodingException ex) { System.out.println("Error to insert: " + ex.getMessage()); } } public String getPassword(String user) { String pass = null; try { pstm = mysqlconnect.create("select password from usuario where user=?"); pstm.setString(1, user); rs = mysqlconnect.PreparedStatementExecuteQuery(pstm); rs.next(); pass = rs.getString(1); rs.close(); mysqlconnect.CloseConnection(); } catch (SQLException ex) { System.out.println("user not found: "+ex.getMessage()); } return pass; } }

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