Conectar MySQL desde JAVA

26 06 2008

Bueno aprovechando lo aprendido en mis aplicaciones de escritorio, en esta oportunidad mostrare, una forma simple y segura de conectar una Base de Datos MySQL atravez de aplicaciones JAVA

Para empesar tenemos q tener creada o crear nuestra DB. Aqui es script

CREATE DATABASE IF NOT EXISTS DemoConexion;
USE DemoConexion;
DROP TABLE IF EXISTS `DemoConexion`.`MiTabla`;
CREATE TABLE  `DemoConexion`.`MiTabla` ( `campo1` varchar(40) NOT NULL)
ENGINE=InnoDB DEFAULT CHARSET=latin1;

La idea es tener una clase solamente para nuestra Conexion(Conexion), y otra clase(WindowConexion) q sirva para ingresar los datos, asi la clase Conexion podremos utilizarla por el resto de la aplicacion, con una simple llamado.

1.- Implementamos la clase donde podremos ingresar el usuario y contrase;a, es decir la ventana…jje esta ventana tendra 2 jTextFile, y un boton aceptar, este mismo se le agrega un objeto de la clase ActionListener, para q siempre este escuchando, la interaccion con el usuario. aqui el fuente:

import java.awt.event.*;
import javax.swing.*;
class WindowConexion extends javax.swing.JFrame implements ActionListener
{
    java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    public WindowConexion()/*metodo constructor*/
    {
         initComponents();
         centrar();
    }

     public void centrar(){/*metodo para centrar la ventana*/
          this.setBounds((screenSize.width/2)-(this.getWidth()/2),
            (screenSize.height/2)-(this.getHeight()/2), this.getWidth(),
            this.getHeight());
    }

    private void initComponents() {
        setTitle("Demostracion MySQL - JAVA");
        jLabel1 = new JLabel();
        jLabel2 = new JLabel();
        jTFUsuario = new JTextField();
        jLabel4 = new JLabel();
        jButton1 = new JButton();
        jPFContraseña = new JPasswordField();
        jLError = new JLabel();
        jlSalida=new JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setResizable(false);
        getContentPane().setLayout(null);

        jLabel1.setForeground(new java.awt.Color(102, 102, 102));
        jLabel1.setText("Demo por Inforux");
        jLabel1.setToolTipText("Demo Conexion MySQL by inforux");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(30, 40, 150, 20);

        jLabel2.setText("User");
        getContentPane().add(jLabel2);
        jLabel2.setBounds(40, 100, 38, 14);

        getContentPane().add(jTFUsuario);
        jTFUsuario.setBounds(110, 100, 100, 18);

        jLabel4.setText("Password");
        getContentPane().add(jLabel4);
        jLabel4.setBounds(40, 120, 100, 14);

        jlSalida.setText("");
        getContentPane().add(jlSalida);
        jlSalida.setBounds(40, 140, 150, 14);

        jButton1.setText("Aceptar");
        getContentPane().add(jButton1);
        jButton1.setBounds(80, 180, 100, 24);
        getContentPane().add(jPFContraseña);
        jPFContraseña.setBounds(110, 120, 80, 18);

        jLError.setForeground(java.awt.Color.gray);
        getContentPane().add(jLError);
        jLError.setBounds(50, 150, 130, 0);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-255)/2, (screenSize.height-255)/2, 290, 255);

        jButton1.addActionListener(this);//agrego mi objeto escucha
    }
    public void actionPerformed(ActionEvent evento)  //programos los eventos
    {
        if (evento.getSource()== jButton1){//pregunto si la accion viene del boton aceptar
                try {
                    if (Conexion.conectar()) 
                    jlSalida.setText("Conexion Exitosa");}
                catch (Exception ex){System.out.println(ex);}
        }                 
    }

    public static void main(String args[])
    {
                new WindowConexion().setVisible(true);    
    }

    public static javax.swing.JButton jButton1;
    public static javax.swing.JLabel jLError;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel4;
    public static javax.swing.JPasswordField jPFContraseña;
    public static javax.swing.JTextField jTFUsuario;
    public static javax.swing.JLabel jlSalida;

}

2.- si compilamos en este momento nos dira error, porq no existe la conexion, trankilos…jeje ahora iplementemos lo q nos interesa la clase Conexion.java,

Esta clase, declara variables para obtener el nombre del driver, el nombre de la base de datos, login(para capturar lo q escribas en la caja de texto), password(igual, captura la contrase;a ingresada),y sobre todo el importantisimo, el objeto “conn” de la clase Connection(este se podra llamar desde cualquier clase, ya sea para hacer consultas), aqui les va el fuente.

 import java.sql.*;

    public class Conexion{

        public final static String bd = "DemoConexion";
        public final static String url="jdbc:mysql://localhost/"+bd;
        public final static String driver="com.mysql.jdbc.Driver"; 
        public static Connection  conn = null;
        public static String login=WindowConexion.jTFUsuario.getText();       
        public static String password =WindowConexion.jPFContraseña.getText();

    //metodo para conectar con la BD
    public static boolean conectar() throws Exception{
    login=WindowConexion.jTFUsuario.getText();       
    password =WindowConexion.jPFContraseña.getText();
    try
    {
       Class.forName(driver).newInstance();
       conn = DriverManager.getConnection(url,login,password);
       if (conn != null)
       System.out.println("Conexión a DB..."+url+"...Ok"+"...Usuario:..."+login);       

       return true;
    }

    catch(SQLException ex)
    {

    System.out.println("Error al conectar con la DB..."+url+"...Usuario:..." +login );
    return false;
    }
}//fin del metodo conectar
}//fin de la clase

3.- Compilar( $ javac .*java) aparecera esta ventana:

Como ve, no es nada del otro mundo, el asunto es crear una clase independiente delresto, la cual nos conectara, y a su vez nos dara la conecion(el objeto conn) en el momento oportuno, ya sea para realizar consultas.

Espero le sirva a mas de uno, ya que personalmente, en un principio me hizo sufrir muchoo.

Saludos.


Acciones

Information

7 responses

30 06 2008
alexdor

muy buen post…

10 08 2008
SMRH

Muchas Gracias!! excelente post… me servirá de mucho.

Saludos!

8 11 2008
ADRIANO

Excelente post la verdad me servira de mucha ayuda en la escuela. Estaba sufriendo mucho por esa razon jeje.

11 09 2009
chaloween

gracias por el post enserio me sacaste de un mega apuro gracias muy bien

22 02 2010
juangui

compañeros me pueden ayudar…me sale esto:

D:\mysqldos>javac Conexion.java
Note: Conexion.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

D:\mysqldos>javac WindowConexion.java

D:\mysqldos>javac Conexion.java
Note: Conexion.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

..que sera?…gracias…..si me aparece el frame para ingresar el usuario y pasword pero me sale lo anterios….

11 05 2011
6 10 2011
jaime

muy bueno saludooos muchas gracias por el aporte

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: