Conexión de Java Con MySQL

6
Conexión de Java con MySQL. Lo primero que necesitamos es el driver para que java se pueda entender con Mysql, ese driver lo pueden descargar desde este enlace: http://dev.mysql.com/downloads/connector/j/ Al descomprimir el paquete notaran varios archivos pero el que realmente nos interesa es este .jar mysql-connector-java-x.xx.x- bin.jar dependiendo del directorio de instalación de java ese archivo se debe guardar en una carpeta parecida a esta: C:\ Program Files (x86)\Java\jdk1.6.0_21\jre\lib\ext en esa carpeta ya hay otros .jar El siguiente paso será crear una pequeña base en mysql utilizando APPServ, mi base de ejemplo se llama java y contiene una sola tabla llamada usuario que a su vez solo tiene 3 campos, usuario, contra y status. Le agregué un registro y quedó de esta manera: Primero se debe crear la clase para conectarnos, yo le he llamado conexión . Su árbol de archivos debe quedar más o menos así: y el codigo es el siguiente: package conexion; import java.sql.*; public class conexion { public String bd = "java"; //asegurate de cambiar esto por el nombre tu usuario en mysql public String login = "root"; //aqui escribe la contraseña de ese usuario public String password = "root"; public String url = "jdbc:mysql://localhost/"+bd;

description

xxxxx

Transcript of Conexión de Java Con MySQL

Conexin de Java con MySQL.Lo primero que necesitamos es el driver para que java se pueda entender con Mysql, ese driver lo pueden descargar desde este enlace: http://dev.mysql.com/downloads/connector/j/Al descomprimir el paquete notaran varios archivos pero el que realmente nos interesa es este .jarmysql-connector-java-x.xx.x-bin.jardependiendo del directorio de instalacin de java ese archivo se debe guardar en una carpeta parecida a esta: C:\Program Files (x86)\Java\jdk1.6.0_21\jre\lib\ext en esa carpeta ya hay otros .jarEl siguiente paso ser crear una pequea base en mysql utilizando APPServ, mi base de ejemplo se llamajavay contiene una sola tabla llamadausuarioque a su vez solo tiene 3 campos, usuario, contra y status. Le agregu un registro y qued de esta manera:

Primero se debe crear la clase para conectarnos, yo le he llamadoconexin. Su rbol de archivos debe quedar ms o menos as:

y el codigo es el siguiente: package conexion;

import java.sql.*;public class conexion {public String bd = "java"; //asegurate de cambiar esto por el nombre tu usuario en mysqlpublic String login = "root"; //aqui escribe la contrasea de ese usuariopublic String password = "root";public String url = "jdbc:mysql://localhost/"+bd;public Statement conectar() {Connection conn = null;Statement st=null;try {Class.forName("org.gjt.mm.mysql.Driver");conn = DriverManager.getConnection(url, login, password);if (conn != null){ System.out.println("Yeah, hemos conectado con "+url+" ... Ok"); st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

//conn.close();}}catch(SQLException ex) {System.out.println("Rayos!!! Hubo un problema al conectar con la base "+url);}catch(ClassNotFoundException ex) {System.out.println(ex);} return st;}}La primera lneapackage conexion;puede variar segn el nombre que le hayan dado a su proyecto. En trminos generales el cdigo es fcil de comprender y como esta clase es sencilla solo nos devolver una variableStatementque es la que se encargara de enviar las consultas a mysql la lnea ms importante aqu es: st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);Con esto creamos la variable Statement, aunque puede utilizarse sin enviarle parmetros, para este ejemplo es necesario enviarle estos dos:ResultSet.TYPE_SCROLL_INSENSITIVETYPE_SCROLL_INSENSITIVE le indica al resulset que los cambios que se hagan mientras la conexion est abierta no se reflejen, adems nos servir para detectar el numero de registros que nos arroje como resultado la consulta.ResultSet.CONCUR_READ_ONLYCONCUR_READ_ONLY establece que los datos que se devuelven sern de solo lectura.Regresamos al formulario principal y hacemos visible el componente dialog y damos doble clic en el botn ingresar para ver su mtodo ActionPerformed

El cdigo que se agregar en el mtodo Ingresar; cuando se introduzcan los datos de usuario y contrasea ser este://creamos una instancia de la clase conexionconexion conectar = new conexion();//se llama a la funcion conectar que nos devuelve un statementStatement st =conectar.conectar();

try{ //realizamos la consulta ResultSet rs = st.executeQuery("SELECT * FROM usuario WHERE usuario='"+usuario+"' AND contra ='"+password+"'"); //hay que posicionarse en el ultimo registro rs.last();

//recuperamos el numero de registros del Resulsetint encontrado=rs.getRow();

if(encontrado==1) // si nos devuelve un registro significa que la autenticacion es correcta y mostramos el formulario{ this.setVisible(true); dialog_login.setVisible(false);}else{ JOptionPane.showMessageDialog(null, "Sus datos son incorrectos, reviselos");} //cerramos la conexion rs.close(); st.close();}catch (Exception e){e.printStackTrace();}Como vemos el cdigo tampoco es tan complicado de entender. Aqu pongo el cdigo completo del mtodo ActionPerformedprivate void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String usuario=tusuario.getText(); String password=tcontra.getText(); if((usuario.isEmpty())||(password.isEmpty())) { JOptionPane.showMessageDialog(null, "Ingrese su nombre de usuario y contrasea"); } else { conexion conectar = new conexion(); Statement st =conectar.conectar();

try {

ResultSet rs = st.executeQuery("SELECT * FROM usuario WHERE usuario='"+usuario+"' AND contra ='"+password+"'"); rs.last();

int encontrado=rs.getRow(); System.out.println(String.valueOf(encontrado)); if(encontrado==1) { this.setVisible(true); dialog_login.setVisible(false); } else { JOptionPane.showMessageDialog(null, "Sus datos son incorrectos, reviselos"); }

rs.close(); st.close(); } catch (Exception e) { e.printStackTrace(); }

} }