sábado, 19 de febrero de 2011

Aplicación Java con MySQL

Imaginamos que creamos una base de datos MySQL para nuestra aplicación en Java. ¿Cómo podemos conectar nuestra base de datos con nuestra aplicación? Esto es lo que resolveremos con esta entrada.


1. Debemos descargar el conector MySQL para Java, que lo podemos obtener desde la página oficial:
http://www.mysql.com/downloads/connector/j/
2. Añadimos el fichero .jar descargado y lo adjuntamos a nuestro proyecto: Ejemplo para NetBeans.
Botón derecho sobre la carpeta Libraries y añadir archivo .jar
paso1
Desde este momento ya tenemos el conector agregado a nuestra aplicación.
3. Instanciamos y utilizamos la librería. Para este caso, hemos creado una clase conexión con métodos que reciben una consulta y nos devuelvan el resultado según sea, en nuestro caso, tipo Integer o DefaultTableModel .

Con esta función haremos una consulta SQL y guardaremos el resultado en un DefaultTableModel que será el objeto que nos devolverá esta función.
public DefaultTableModel HacerConsulta(String sql,String[] columnas)
{
. . .
}
 

Con este método ejecutaremos aquellas consultas que sean Insert, Delete y Update. Devuelve un entero que representa se hay error.
public int EjecutarConsulta(String sql)
{
. . . 
}
 

Esta función la utilizaremos para consultar un valor escalar. Por ejemplo una sentencia SQL del tipo: “SELECT Count(*) FROM almacen”.
public int ConsultarEscalar(String sql)
{
. . . 
}
 

Puedes obtener el fichero original más abajo, el siguiente fragmento contiene nuestra clase de conexión lista para copiar y pegar.


import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;
 
public class ConexionMySQL {
    private String ruta;
    private String usuario;
    private String clave;
 
    private Connection conexion;
    private Statement statement;
    private ResultSet resultSet;
    private DefaultTableModel modelo;
 
    public ConexionMySQL(String ruta,String usuario, String clave){
        this.ruta = "jdbc:mysql://" + ruta;
        this.usuario = usuario;
        this.clave = clave; 
        statement = null;
        resultSet = null;
        modelo = null;
 
        try {
            // Se registra el Driver de MySQL
            DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
        } catch (SQLException ex) {
            Logger.getLogger(ConexionMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }
 
    }
 
    public void Conectar()
    {
        try {
            conexion = (Connection) DriverManager.getConnection(ruta, usuario, clave);
            statement = (Statement) conexion.createStatement();
        } catch (SQLException ex) {
            Logger.getLogger(ConexionMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
 
    public void Desconectar()
    {
        try {
            statement.close();
            conexion.close();
        } catch (SQLException ex) {
            Logger.getLogger(ConexionMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
 
    public DefaultTableModel HacerConsulta(String sql,String[] columnas)
    {
        try {
 
            modelo = new DefaultTableModel();
 
            for(int i=0; i<columnas.length; i++)
            {
                modelo.addColumn(columnas[i]);
            }
 
            Conectar();
 
            resultSet = statement.executeQuery(sql);
 
            Object[] datos = null;
            while (resultSet.next()) {
                datos = new Object[modelo.getColumnCount()];
                for (int i = 0; i < modelo.getColumnCount(); i++) {
                    datos[i] = resultSet.getObject(i + 1);
                }
                modelo.addRow(datos);
            }
            resultSet.close();
            Desconectar();
 
        } catch (SQLException ex) {
            Logger.getLogger(ConexionMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }
 
        return modelo;
    }
 
    public int EjecutarConsulta(String sql)
    {
        int error = 0;
        try {
            Conectar();
            error = statement.executeUpdate(sql);
            Desconectar();
        } catch (SQLException ex) {
            Logger.getLogger(ConexionMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }
 
        return error;
    }
 
    public int ConsultarEscalar(String sql)
    {
        int valor = -1;
        try {
            Conectar();
 
            statement = (Statement) conexion.createStatement();
            resultSet = statement.executeQuery(sql);
            if (resultSet.first()) {
                valor = resultSet.getInt(1);
            }
            resultSet.close();
            Desconectar();
 
        } catch (SQLException ex) {
            Logger.getLogger(ConexionMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }
 
        return valor;
    }
 
}

No hay comentarios:

Publicar un comentario