Conectar a base de datos MySQL con Java

En todo proceso de desarrollo de una aplicación se requiere usualmente conectar a base de datos MySQL, es el servidor de datos que utilizaremos en este caso será MySQL aunque el mismo puede variar, pero el proceso es bastante similar, solo deberemos cambiar los datos de conexión, en este tutorial nos conectaremos a la base de datos usando la API JDBC del lenguaje de programación Java, como IDE haremos uso de NetBeans 8.x.

Lo primero que haremos será preparar el servidor y los datos de prueba, debes descargar e instalar en servidor MySQL, también requieres a la aplicación MySQL Workbench, esta última no es necesaria pero nos facilitará el trabajo.

Para crear la base de datos de prueba abre el Workbench y ejecuta la siguiente consulta:

drop database if exists prueba;
create database prueba;

use prueba;

create table persona (
    id int primary key,
    nombre varchar(64),
    apellido varchar(64),
    fecha date );
    
insert into persona value(1, 'Juan', 'Perez', '2017-08-17');
insert into persona value(2, 'Ana', 'Maria', '2017-01-10');
insert into persona value(3, 'Elena', 'Ortiz', '2010-01-01');
insert into persona value(4, 'Ivan', 'Valdes', '2015-11-11');

Ahora creamos el proyecto con Netbeans IDE, seleccionamos el tipo Java | Java Application.

Conectar a base de datos MySQL con aplicación Java

Una vez tengamos el proyecto damos clic derecho sobre Libraries y seleccionamos Add Library...

Agregar librería para conectar a MySQL

En las siguiente ventana buscamos el driver necesario para conectarnos al servidor de datos que estemos utilizando, para nosotros MySQL JDBC Driver, lo seleccionamos y presionamos Add Library.

Agregar driver MySQL JDBC

Conectar a base de datos MySQL

Ahora ya podemos empezar ha escribir el código Java requerido para realizar la conexión y consultar los datos.

Lo primero que veremos es un pequeño fragmento de código que nos permitirá saber si el driver está correctamente instalado, cuando no se pueda encontrar el driver se lanzará la excepción y mostramos el mensaje indicado.

try {
    Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (Exception ex) {
    System.out.println("Error, no se ha podido cargar MySQL JDBC Driver");
}

Para conectarnos y consultar la base de datos MySQL requerimos el siguiente código Java:

try {

    String url = "jdbc:mysql://localhost:3306/prueba";
    String username = "root";
    String password = "123456";

    Connection connection = DriverManager.getConnection(url, username, password);

    Statement statement = connection.createStatement();
    ResultSet rs = statement.executeQuery("SELECT * FROM persona");

    while (rs.next()) {

        int id = rs.getInt("id");
        String nombre = rs.getString("nombre");
        String apellido = rs.getString("apellido");
        Date fecha = rs.getDate("fecha");

        System.out.println(String.format("%d, %s %s, %s", id, nombre, apellido, fecha));
    }

    rs.close();
    statement.close();
    connection.close();

} catch (SQLException ex) {
    System.out.println(ex);
}

Este código consta de las siguientes partes:

Primero indicamos la URL de conexión, para ello utilizamos una cadena de texto que tendrá la siguiente forma: jdbc:mysql://hostname:portNumber/databaseName, en donde hostname es el nombre del servidor, como estamos usando un servidor local indicaremos localhost, lo siguiente que debemos indicar es el puerto portNumber, en mi caso instale MySQL server en el puerto por defecto, este es 3306, y al final databaseName indica el nombre de la base de datos a la que nos conectaremos, para nosotros prueba, nuestra URL de conexión queda del siguiente modo:

jdbc:mysql://localhost:3306/prueba

Además también debemos indicar el usuario y la contraseña con la que nos conectaremos:

String url = "jdbc:mysql://localhost:3306/prueba";
String username = "root";
String password = "123456";

Connection connection = DriverManager.getConnection(url, username, password);

Lo que sigue es crear un objeto Statement que nos permitirá lanzar consultas contra la base de datos, para ello usamos el método createStatement() de la clase Connection.

Statement statement = connection.createStatement();
ResultSet rs = statement.executeQuery("SELECT * FROM persona");

El objeto ResultSet nos permite obtener los resultados de la consulta que ejecutamos con el método executeQuery(), en nuestro caso la misma selecciona todos los datos de la tabla persona.

Para obtener todos los resultado debemos recorrer la variable rs, el método next() avanza a la siguiente fila de resultados y devolverá false si no existen más datos.

while (rs.next()) {

    int id = rs.getInt("id");
    String nombre = rs.getString("nombre");
    String apellido = rs.getString("apellido");
    Date fecha = rs.getDate("fecha");

    System.out.println(String.format("%d, %s %s, %s", id, nombre, apellido, fecha));
}

En cada iteración obtenemos la columna correspondiente usando lis diversos métodos getXXX("..."), estos dependerá del tipo de la columna, por ejemplo, getInt("...") para obtener un entero o getString("...") para una cadena de texto, debemos indicarle el nombre de la columna que deseamos leer o también podemos usar su índice.

Al finalizar cerramos la conexión:

rs.close();
statement.close();
connection.close();

Si ejecutamos la aplicación veremos el siguiente resultado, si todo está correcto.

run:
1, Juan Perez, 2017-08-17
2, Ana Maria, 2017-01-10
3, Elena Ortiz, 2010-01-01
4, Ivan Valdes, 2015-11-11
BUILD SUCCESSFUL (total time: 0 seconds)

En el próximo tutorial mostraremos el proceso para ejecutar otros tipos de consultas como: inserción, modificación, eliminación, etc., de momento terminamos aquí.

Descargar proyecto: conectar-mysql-java.zip

Comentarios

  1. como le hago para que en una tvview me imprima todos los elementos y no solo uno

    ResponderEliminar
    Respuestas
    1. nota con ese codigo me imprime solo el ultimo, pero en el system.out si me imprime todos

      Eliminar
    2. ObservableList materiales = FXCollections.observableArrayList();
      int codmaterial= rs.getInt(1);
      String nombre=rs.getString(2);
      int cantidad=rs.getInt(3);
      Material m= new Material(codmaterial,nombre,cantidad);
      materiales.add(m);
      System.out.println(String.format("%s,%s,%s",codmaterial,nombre,cantidad));---aqui me imprime todos los elementos en el compilador
      tvMaterial.setItems(materiales); aqui me imprime solo 1

      Eliminar

Publicar un comentario

Temas relacionados

Entradas populares de este blog

tkinter Grid

Histogramas OpenCV Python

tkinter Canvas

Conectar SQL Server con Java