lunes, 30 de julio de 2012

CONEXION JAVA CON MICROSOFT ACCESS

Esta vez les mostrare como manejar la base de datos de microsoft Access, desde JAVA, pero antes deben de saber lo basico del lenguaje SQL.

Les mostrare primero las imagenes de muestra del programa que yo mismo lo implemente, mas abajo les dejo el LINK del proyecto para que se lo puedan bajar.








Disculpen por el titulo "BD PERSONA" es que lo modifique de otro programa que tenia y me olvide de cambiarlo por "BD MUSICA" pero eso es lo de menos... jeje...

Pero esas imagenes muestran solo la interfaz, claro ustedes lo pueden implementar como ustedes quieran, pero lo mas importante es la clase que logre la conexión con la base de datos de Miscrosoft Access.

Para lograr la conexion con cualquier base de datos SQL, primero se debe cargar el DRIVER de Conexion, en cada Base de Datos es distinto, pero en Access es mas simple. Antes debes Copiar al proyecto la base de datos que creaste con Microsoft Accsess, en mi caso la base de datos se llama "musica.mdb"


Claro solo es un ejemplo, existe muchas formas de lograr una conexion, esta es una de las formas que yo logre hacer funcionar.

CLASE BD

/**
 *
 *  E-Mail : shamirdhc31@gmail.com
 *  Blog   : http://javadhc.blogspot.com
 *
 */

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

public class ConexionAccess
{
    //-- EL ARCHIVO BD "musica.mdb" DEBE DE ESTAR EN LA CARPETA
    //-- DEL PROYECTO PARA QUE FUNCIONE
    private String NombreBD = "musica.mdb";
    private String ConexionBD = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + this.NombreBD;
    private String SentenciaSQL;
    private Connection CanalBD;
    private Statement Instruccion;
    private ResultSet Resultado;

    public ConexionAccess()
    {
        try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            this.CanalBD = DriverManager.getConnection(this.ConexionBD);
            this.Instruccion = this.CanalBD.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
        }
        catch(SQLException SQLE)
        {
            JOptionPane.showMessageDialog(null,"ERROR EN LA CONEXION CON BD\nERROR : " + SQLE.getMessage());
        }
        catch(ClassNotFoundException CNFE)
        {
            JOptionPane.showMessageDialog(null,"ERROR DRIVER BD JAVA\nERROR : " + CNFE.getMessage());
        }
    }

    public void InsertInsertar(String SentenciaSQL)
    {
        this.SentenciaSQL = SentenciaSQL;

        try
        {
            this.Instruccion.executeUpdate(this.SentenciaSQL);
            JOptionPane.showMessageDialog(null,"LA CANCION SE AGREGO CON EXITO A LA BD");
        }
        catch (SQLException SQLE)
        {
            JOptionPane.showMessageDialog(null,"ERROR AL INSERTAR LA CANCION DE LA BD \n ERROR : " + SQLE.getMessage());
        }
    }

    public void UpdateModificar(String SentenciaSQL)
    {
        this.SentenciaSQL = SentenciaSQL;

        try
        {
            this.Instruccion.executeUpdate(this.SentenciaSQL);
            JOptionPane.showMessageDialog(null,"LA CANCION SE MODIFICO CON EXITO A LA BD");
        }
        catch (SQLException SQLE)
        {
            JOptionPane.showMessageDialog(null,"ERROR AL MODIFICAR LA CANCION DE LA BD \n ERROR : " + SQLE.getMessage());
        }
    }

    public void DeleteEliminar(String SentenciaSQL)
    {
        this.SentenciaSQL = SentenciaSQL;

        try
        {
            this.Instruccion.executeUpdate(this.SentenciaSQL);
            JOptionPane.showMessageDialog(null,"LA CANCION SE ELIMINO CON EXITO A LA BD");
        }
        catch (SQLException SQLE)
        {
            JOptionPane.showMessageDialog(null,"ERROR AL ELIMINAR LA CANCION DE LA BD \n ERROR : " + SQLE.getMessage());
        }
    }

    //-- ESTE METODO DEVUELVE UNA TABLA PARA MOSTRAR
    //-- PERO SI QUIERES LO PUEDES MODIFICAR PARA QUE
    //-- TE DEVUELVA UNA MATRIZ, O LO QUE QUIERAS
    public DefaultTableModel SelectConsultar(String SentenciaSQL)
    {
        //-- ESTO PUEDE VARIAR VARIAR SEGUN A LA BD CON LA QUE TRABAJAS

        this.SentenciaSQL = SentenciaSQL;

        String[] TITULOS = {"ID CANCION","NOMBRE","AUTOR","ALBUM"};
        String[] REGISTRO = new String[4];

        DefaultTableModel TABLA = new DefaultTableModel(null,TITULOS);

        try
        {
            this.Resultado = Instruccion.executeQuery(this.SentenciaSQL);

            while(Resultado.next())
            {
                REGISTRO[0] = Resultado.getString("Id_cancion");
                REGISTRO[1] = Resultado.getString("Nombre");
                REGISTRO[2] = Resultado.getString("Autor");
                REGISTRO[3] = Resultado.getString("Album");

                TABLA.addRow(REGISTRO);
            }
        }
        catch (SQLException SQLE)
        {
            JOptionPane.showMessageDialog(null,"ERROR AL CARGAR LOS DATOS DE LA BD \n ERROR : " + SQLE.getMessage());
        }

        return TABLA;
    }
}

Para que vean mejor como funciona les dejo el proyecto que interactua con la base de datos, ya no necesitan crear la base de datos ya esta todo en la carpeta.

DALE CLICK EN LA IMAGEN PARA BAJARTE EL PROYECTO CON EL EJERCICIO


IMPORTANTE : "TODOS LOS CODIGOS INDICADOS AQUI SON ESCRITOS POR MI, ASI QUE CUALQUIER DUDA O EJERCICIO QUE NO PUEDAN RESOLVER, NO DUDEN EN MANDARME UN E-MAIL A MI CORREO"
shamirdhc31@gmail.com

3 comentarios:

  1. Hola! Disculpa mi ignorancia jaja estoy cursando el tercer semestre de preparatoria y estoy un poco confundida... Entonces SQL ¿Es el lenguaje de Access? Oh mas bien, de los gestores de bases de datos?

    ResponderEliminar
  2. alguien ya descargó el programa que nos lo pase. (y)

    ResponderEliminar