Conectar Java con MySQL

Buenas gente, ya termine mis examenes y estoy tratando de ponerme al dia con mis blogs. Hoy quiero explicarles algo muy simple y es como conectar MySQL con Java y realizar las operaciones basicas (borrar,insertar,actualizar y consultar). Esto lo haremos solo en modo consola, no hare una interfaz grafica ya que en primer lugar jamas explique en este blog como hacer un interfaz grafica.

Lo que vamos a hacer sera de gran interes tambien para todos aquellos que estaban o estan siguiendo mi tutorial de javafx, que se quedo en la parte 5, pues pronto explicare como conectar una base de datos MySQL con JavaFX.

Bueno empecemos, primero he de aclarar que estoy usando el IDE NetBeans 6.7.1 y supondre que todos lo usan, si usan Eclipse deberan agregar el driver MySQL-Connector a las librerias de su proyecto. En cambio si usan NetBeans este ya viene listo para usar.

Abrimos NetBeans y creamos un nuevo proyecto (File->New Proyect->Java->Java aplication), y le ponemos un nombre cualquiera, en mi caso se llama "ejemplo".

Ahora antes de empezar debemos agregar el Driver MySQL-Connector a las librerias del proyecto, esto se hace super sencillo. El proyecto recien creado en NetBeans se ve asi:

Conectar Java con MySQL

Ahora solo tienen que hacer boton derecho en Libraries->Add Library y les aparecera una venta como esta:

Conectar Java con MySQL

Busquen el que se llama MySQL JDBC Driver y hagan click en Add Library. Bien ahora volvamos a nuestro Main.java, sera necesario que hagamos unos imports.

Les voy a copiar todo el codigo he intetare explicarselos mas abajo:

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Main {

    static String bd = "javafx";
    static String login = "root";
    static String password = "songoku";
    static String url = "jdbc:mysql://localhost/"+bd;

    public static void main(String[] args) {
//Primera parte - conexion a la base de datos
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Connection");
            conn = (Connection) DriverManager.getConnection(url, login, password);
            if (conn != null) {
                System.out.println("Conexión a base de datos "+url+" ... Ok");
            }
        }
        catch(SQLException ex) {
            System.out.println("Hubo un problema al intentar conectarse con la base de datos "+url);
        }
        catch(ClassNotFoundException ex) {
            System.out.println(ex);
        }

//Segunda parte - iteraccion con la base de datos
        Statement s;
        try {
            s =(Statement) conn.createStatement();
            //aqui la sentencia con codigo SQL
            {
                System.out.println (rs.getInt (1) + " " + rs.getString (2)+ " " + rs.getString(3)+ " " + rs.getString(4));
            }
        } catch (SQLException ex) {
            System.out.println("Hubo un problema al intentar obetener lo datos");
        }

    }

}


Enlace para descargar la clase completa.
Como veran todo esta dentro de unos try-catch, esto es asi porque java obliga a que sea asi para evitar errores. De todas maneras supongo que todo el mundo sabe como funciona el try-catch. Ademas quiero que vean lo facil que es conectar Java con MySQL pues las unicas 3 lineas que debemos recordar son las que estan resaltadas.

La sentencia Class.forName nos sirve para asegurarnos que el Driver se inicializa y se registra, es similar a instanciarlo con un new, pero hacerlo con forName tiene una ventaja y es que solo usaremos un Driver si lo usamos, si no lo usamos pues no hara falta tener el .jar con el Driver. Les sera util cuando trabajen con distintos motores de base de datos, por ahora no le den bolilla, es asi y punto.

Como el Driver ya esta cargado ahora solo pediremos una conexion a la clase DriverManager mediante su metodo getConnection. El metodo getConection puede recibir varios parametros pero estos 3 son sufientes para nuestro ejemplo: url, login y password. Yo los puse como variables, estas variables deben ser Strings. Veran que la variable url es una concatenacion de una cadena que es siempre la misma mas el nombre de la base de datos. En esta cadena se podria poner tambien el numero de puesto por el cual conectar pero no creo que necesiten cambiar eso

La linea if (conn != null) solo la usamos para que muestre un mensaje de que la conexion a sido establecida correctamente, eso sucedera siempre que la variable conn sea distinto de null. Bueno luego solo hay un par de catch que todo el mundo sabe lo que hacen.

Eso es todo en cuanto a la conexion, ejecuten y veran el cartel de que la conexion se establece correctamente. Ahora vamos a ver como ejecutar sentencias SQL basicas.

Usaremos la clase Statement de java para enviar consultas. Statement tiene 2 metodos interesantes: executeUpdate y executeQuery. El primero nos permitira enviar consultas que modifiquen la base de datos y el segundo nos permitira hacer consultas. Su uso es muy sencillo pero otra vez java nos pide que todo esto este dentro de un try-catch.

En la linea 35 es donde va a ir la sentencia a ejecutar, si vamos a realizar un executeQuery vamos a guardar el resultado en una variable tipo ResultSet que luego nos servira para recorrer los resultados.

Aqui viene un problema, no con java, sino con mi blog, no me dejaba escribir el codigo, luego quise poner una imagen y tampoco me dejo, luego quise poner un video, pero ni asi. Para ver las sentencias basicas van a tener que bajar la clase completa y fijarse alli. En enlace esta mas arriba.

Una vez que terminemos de hacer lo que deseamos hacer tenemos que cerrar todas las conexiones que abrimos.

Eso lo hacemos facil asi:

conn.close();

Eso es todo, tal vez lo vean un poco largo pero no lo es realmente, una vez que se lo aprendan es super sencillo. Ademas recuerden que esto les servira a los que estan siguiendo el tutorial de JavaFX.
Cualquier cosa me preguntan :penguin:

Info del articulo
Etiquetas:
Comentarios
  • http://latingeeks.net perro

    Este post me tomo casi todo el fin de semana no porque fuera dificil sino porque no lo podia postear, no se porque…me dejo asi :vangry:

  • skandelabro

    Hola men … Muchas gracias por el ejemplo..peorla verdad es que no me corre
    me tira un error

    Hubo un problema al intentar conectarse con la base de datos jdbc:mysql://localhost/javafx
    Exception in thread “main” java.lang.NullPointerException
    at ejemplo.Main.main(Main.java:35)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 0 seconds)

    nose que será

    ojala me puedas ayudar.. saludos

  • http://latingeeks.net perro

    @skandelabro: primero necesito que me respondas un par de preguntas.
    1- has instalado apache y mysql? si no lo has hecho aqui explico como hacerlo en Linux http://paraisolinux.com.ar/como-instalar-un-servidor-apache-con-php-y-mysql-en-linux/
    2-tienes una base de datos llamada ‘javafx’?

  • Gabriel

    Hola! a mi tmb me tira error en esa linea, tengo winXP SP3 con MySQL server. Saludos y muy bueno todo igual.

  • nuck

    :up: Perfecto, muchas gracias por tu post, uso Linux y tenia dos dias encima tratando de conectar a java con mysql sin resultados…hasta que ya , pero ahora surgen otros problemas, aclaro que que no uso netbeans para implementar mis codigos. Cuando corro por consola el main ubicado en la carpeta build/classes// , me sale este error acompanado de otros comentarios …java.lang.NoClassDefFoundError: Main (wrong name: conexion/Main), acaso hay que crear un jar? no se.
    Por otra parte(me disculparas si estoy abusando) sabrias como hacer esta coneccion sin netbeans?, ya descarge el driver JDBC y al buscar por el sistema, me encontre con varios directorio donde nose cual es mi JAVAHOME, (hernan@laptop-jaunty:/usr/lib/jvm$ ls
    default-java java-6-openjdk java-6-sun java-6-sun-1.6.0.16), pues pegue el driver en cada /lib y cada /bin de estas carpetas, asi como en el /lib y el /bin de sus /jre. Tambien lo exporte al classpath(export CLASSPATH=.:/usr/lib/jvm/java-6-openjdk/lib/mysql-java-connector-5.1.jar:.hernan).
    Si lleguaste hasta aqui, muchas gracias por tu tiempo, si me pudieras ayudar te lo agradeceria 3 millones de veces mas

    • http://latingeeks.net perro

      Perdoname nuck pero me mataste…yo sin netbeans no se que hacer…es justamente por cosas como esta que uso netbeans…que el se encargue de esas cosas que yo me ocupo de programas

  • http://www.perdidoenlinux.com.ar perdido en linux

    Que grande perro

    Me salvaste la vida :up:

    Y de ya te digo quisas esto se convierta en fuente para uno de mis post.

    • http://geeks.paraisolinux.com perro

      Si? que bueno, es la segunda vez que le salvo la vida a alguien
      Por cierto…no tienes avatar :roll: es raro ver un blogger sin avatar
      http://paraisolinux.com/gravatar-que-son-y-como-los-uso/

      • http://www.perdidoenlinux.com.ar perdido en linux

        ¿Será por que soy nuevo blogueando o por que me resisto a las costumbres del mundo virtual?

        En fin, no sé.

  • juan

    no me aparece la libreria de mysql jdc cdriver como la creo

  • Pingback: Conectar JavaFX y MySQL | Paraiso Linux()

  • enrique

    Muchas gracias excelente tutorial, despues de estar intentando instalar el driver en xp no mas no se dejaba no sabia que con netbeans seria tan rapido, lo unico malo es mi maquina ya que apenas puede con el nb. saludos y gracias.

  • pain_777

    me sirvio mucho ya puedo hacer la conexion a la BD pero no puedo extraer datos de una tabla q alguien me ayude !!!!!!!!!!!!!!!!!!!!!!!gracias

    • http://blogjapon.com.ar perro

      No te sale la segunda parte? que error te da?

  • Felipe

    hola…. pues sucede que soy nuevo en esto de la programacion y tengo q aser una interface para Mysql ya tengo la bd con dos usuarios, triggers,claves primarias y foraneas son 5 tablas en total pero necesito aser la interface que pida desde nombre de usuario y contraseña para poder acceder a sus tablas esto por la seguridad de las tablas lo estoy asiendo en ned.. pero lo unico q e logrado es crear una interface para una sola tabla… que puedo aser? espero me puedas ayudar con esto de antemano muchas grasias que estes muy bien..

    • http://blogjapon.com.ar perro

      No entiendo….una interface con una sola tabla? No entiendo lo que pides. Si es obtener datos de 2 tablas distintas lo unico que debes hacer es usar la sentencia SQL adecuada

  • cristiam gonzalez vergara

    amigo he leido mucho sobre como conectar pero ninguno ha solucionado ps mis dudas ayudame y gracias de antemano!

    yo utilizo netbeans 6.9.1 porque me parece un excelente IDE para toda esta gestión.

    primero: creo un proyecto nuevo y en el agrego la libre de mysql!! es realmente sencillo. lo explicas muy bien.

    si tengo agregado a mi libreria este driver-mysql-conection no es necesario agregar un archivo .jar? a mis archivos del proyecto porque en los demás lugares donde he leido ps siempre lo mencionan.

    segundo: respecto a la base de datos mysql en este momento tengo creada la base de datos con un programa que se llama mamp en mi macbook ps esta aplicación me brinda los servicios de apache y mysql. Administro una base sencilla con phpmyadmin.

    como tal la pregunta es que yo quiero crear la aplicación y no se donde debo tener mi base de datos si quiero por ejemplo mover todo mi proyecto para ser ejecutado en otro computador…

    debe ir con los archivos del proyecto?? o debe instalarse en el otro pc apache y mysql y en la carpeta de localhost anexar la base de datos??

    gracias

  • kev

    Tan sencillo, esta de poca!!!
    Muy bien!!!

  • Will

    Compañero, estoy desarrollando una aplicacion en netbeans 6.9.1, ya tengo hecha la conexion con mysql, el problema es que en la aplicacion estoy desarrollando los servicios CRUD, desde cada clase que corresponde a una tabla de la base de datos.
    me gustaria saber como puedo utilizar la conexion ya establecida en cada una de esta clases, sin necesidad de escribir nuevamente todo el codigo de la conexion en la clase que la necesite, lo que quiero es silplemente invocar un metodo, o algo asi que me permita ejecutar una sentencia SQL, en donde la necesite.
    Le agredeceria su colaboracion.

    Gracias.

  • Jantonio Zu

    Donde consigo el plugin y como lo instalo estoy usando netbeans 6.8. megustaria saber ayuda gracias.

  • Oscar

    hola perro HP

  • Yape

    donde declaras el rs del resultset

  • falcon

    hola amigo.. gracias por tu aporte me sirvio de mucho. no tenia ni idea de como conectarme con mysql pero luego de leer tu pot.. se me conecto sin ningun problea..gracias. y para el amigo que dice que no se le conecta y le sale un erro en porq en la parte que dice. static String bd = “javafx”; el javafx es el nombre tu base de datos. asi que tienes que poner el nombre de la base que tu creaste. espero poder ayudar en algo. asi como me fue de ayuda para mi este tutorial.. saludos.. gracias..

    • http://paraisolinux.com/ sefsinalas

      Gracias por pasar para ayudar a otros