Conexion con base de datos MySQL


Vamos a realizar una conexión a una base de datos en MySQL. Nosotros utilizamos el ide de Netbeans y wamp para MySQL. El link al ide de netbeans ya lo dejamos en otro post y ahora les dejamos el link para que se descarguen wamp, también es de código libre.

Link de descarga wamp: Wamp Server

Tenemos dos formas de conectarnos a una base de datos, la mas recomendable es generar una clase que se llame "Conexion" o "Conectar" o cualquier nombre que uds quieran para denominar a esta clase que solo va a contener el código para conectarnos y no tener que escribirlo cada vez que lo necesitemos, la otra es conectarnos "manualmente" escribiendo el codigo correspondiente cada vez que lo necesitemos, por las dudas vamos a ver las dos, nuevamente repito es recomendable que utilicen la primera.

Recordatorio: Siempre debemos importar el jar de mysql para poder efectuar este tipo de conexiones.

La forma recomendable:

1) Primer paso: Creamos la clase "Conexion.java"



/**Le puse al paquete "ejemploMySQL" en el caso de uds sería el nombre del paquete de su proyecto */

package ejemploMySQL;

import java.sql.*;

public class Conexion {
   static String login = "root";
   static String password = "";
   static String basededatos = "ACA PONEMOS EL NOMBRE DE LA BASE";
   static String url = "jdbc:mysql://localhost/"+basededatos;

   Connection conn = null;

   /** Constructor de DbConexion */
   public Conexion() {
      try{
         //obtenemos el driver de para mysql
         Class.forName("com.mysql.jdbc.Driver");
         //obtenemos la conexión
         conn = DriverManager.getConnection(url,login,password);
         if (conn!=null){
            System.out.println("Conección a base de datos NOMBRE_DE_LA_BASE. listo");
         }
      }catch(SQLException e){
         System.out.println(e);
      }catch(ClassNotFoundException e){
         System.out.println(e);
      }
   }
   /**Permite retornar la conexión*/
   public Connection getConnection(){
      return conn;
   }

   public void desconectar(){
      conn = null;
      System.out.println("La conexion a la  base de datos
NOMBRE_DE_LA_BASE a terminado");
   }
}

Si instalamos wamp, el usuario por defecto es "root" y no tiene contraseña, por lo que ponemos "" (en blanco), ahora si modificamos el usuario y contraseña debemos modificar esos datos, tambien tengan en cuenta que la parte de:


static String basededatos = "ACA PONEMOS EL NOMBRE DE LA BASE";
static String url = "jdbc:mysql://localhost/"+basededatos;

Podemos poner directamente el nombre de la base en el url, asi:

static String url = "jdbc:mysql://localhost/nombre_de_la_bd";

Y borramos la línea:

static String basededatos = "ACA PONEMOS EL NOMBRE DE LA BASE";

Porque ya no nos sirve.

2) Creamos una clase "Principal.java" para probar la conexión, en este caso hicimos un combobox de prueba que nos lista datos de alguna tabla que creemos de ejemplo:


package ejemploMySQL;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author JP Blanco
 */
public class Principal extends javax.swing.JFrame {

    /**
     * Creates new form Principal
     */
    public Principal() {
        initComponents();
        jComboBox1();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        jComboBox1 = new javax.swing.JComboBox();
        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Principal");

        jLabel1.setText("Traemos algun dato:");
        jLabel1.setToolTipText("");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(25, 25, 25)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 279, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(41, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(50, 50, 50)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(50, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                       

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Principal().setVisible(true);
            }
        });
    }
public void jComboBox1 () {
   
     Conexion con = new Conexion();
    try {
            Statement st=con.getConnection().createStatement();
          
            /** en el ResultSet ponemos el nombre de la tabla de la que nos vamos a conectar
            en nuestro caso es "persona".*/
            ResultSet rs=st.executeQuery("Select * from persona");
            jComboBox1.removeAllItems();
           
            while(rs.next()){
               
            /** lo que está dentro de los parentesis en el getString es el número de la columna
             * de la cual vamos a ver la información, en nuestro caso elegimos que nos muestre el
             * combobox que creamos los datos de la columna 3.
             */   
               
            jComboBox1.addItem(rs.getString(3));
            }
           
      
          rs.close();
          con.desconectar();
         
              } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
       }         
}
   
   
    // Variables declaration - do not modify                    
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration                  
}


Les dejo también directamente para que copien y peguen dentro de la clase que uds tengan la conexión con un combobox, mas adelante iremos haciendo las conexiones con cada uno de los componentes para que copien y peguen rapidamente:


 public void jComboBox1 () {
  
     Conexion con = new Conexion();
    try {
            Statement st=con.getConnection().createStatement();
         
            /** en el ResultSet ponemos el nombre de la tabla de la que nos vamos a conectar
            en nuestro caso es "persona".*/
            ResultSet rs=st.executeQuery("Select * from persona");
            jComboBox1.removeAllItems();
          
            while(rs.next()){
              
            /** lo que está dentro de los parentesis en el getString es el número de la columna
             * de la cual vamos a ver la información, en nuestro caso elegimos que nos muestre el
             * combobox que creamos los datos de la columna 3.
             */  
              
            jComboBox1.addItem(rs.getString(3));
            }
          
     
          rs.close();
          con.desconectar();
        
              } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
       }         

}

Lo importante que queremos resaltar es simplemente el llamado a nuestra clase de conexion que creamos anteriormente escribiendo:

Conexion con = new Conexion ();

try {

Statement st=con.getConnection().createStatement();

y terminando la conexión hacemos:

con.desconectar();

Ahora veamos la otra forma realizando la conexión directamente en nuestra clase, la cual no es la que recomiendo:



     public void jComboBox2(){
    Connection con=null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con=DriverManager.getConnection("jdbc:mysql://localhost/dbcontactos", "root", "");
            Statement st=con.createStatement();
            ResultSet rs=st.executeQuery("Select * from persona");
            jComboBox2.removeAllItems();
          
            while(rs.next()){
            jComboBox2.addItem(rs.getString(3));
            }
          rs.close();
          con.close();
        
              } catch (ClassNotFoundException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
              } catch (SQLException ex) {
            Logger.getLogger(Principal.class.getName()).log(Level.SEVERE, null, ex);
        }
  
    }


Eso es todo, cualquier duda que tengan me pueden preguntar desde los comentarios! Ah antes de que me olvide, para que apenas ejecuten el programa este combobox que hicimos de prueba les muestre los datos tienen que poner:

jComboBox1();

De esta forma:

    public Principal() {
        initComponents();
        jComboBox1();
}


1 comentario:

  1. Wynn casino app review: Get $20 free with no deposit needed
    Wynn's 군산 출장안마 $20 casino app review – get $20 free with no deposit needed. 광주광역 출장안마 - 2021 Updated on December 7, 2021. Rating: 충주 출장샵 4 · 부천 출장안마 ‎Review 전라남도 출장샵 by TJ Hub

    ResponderEliminar