Conexión a base de datos con JDBC en Java

En este ejemplo nos conectaremos a una base de datos MariaDB con JDBC para hacer obtener los datos de un query SELECT a una tabla de «Usuarios».  Antes que nada debes saber que existen prácticas para hacer más eficiente la conexión recurrente a una base de datos, una de las más comúnmente usadas son el uso de spools de conexiones, que te permiten optimizar las conexiones y son el método estándar en aplicaciones empresariales. 

» Ver más ejemplos de Java

Este ejemplo es para que aprendas a hacer la conexión a base de datos con JDBC de forma básica y no necesariamente es la forma óptima ya que puedes hacer uso de frameworks más robustos en proyectos grandes, esto dependerá de las necesidades de tu proyecto.

Crear la base de datos y una tabla Usuarios

Hemos creado una base de datos de ejemplo llamada «Pruebas» con una sola tabla.

Conexión a base de datos con JDBC en Java

Esta es la tabla que creamos:

CREATE TABLE Usuarios (
  ID int(11) NOT NULL AUTO_INCREMENT,
  USERNAME varchar(100) NOT NULL,
  PASSWORD varchar(100) NOT NULL,
  NOMBRE varchar(100) DEFAULT NULL,
  PRIMARY KEY (ID)
)

Agregamos algunos datos:

Conexión a base de datos con JDBC en Java


Para el código en Java esta es la dependencia de Maven para el driver de MariaDB:

<dependency>
 <groupId>org.mariadb.jdbc</groupId>
 <artifactId>mariadb-java-client</artifactId>
 <version>2.2.3</version>
</dependency>

Vamos al código

El código es sencillo y te explicaremos rápidamente como funciona:

package com.decodigo.ejemplos;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author decodigo
 */
public class ConexionMariaDB {

    private static final String DRIVER = "org.mariadb.jdbc.Driver";
    private static final String URL_CONEXION = "jdbc:mariadb://localhost:3306/Pruebas";

    public static void main(String args[]) throws SQLException {
        final String usuario = "user_db";
        final String password = "password_db";
        Connection dbConnection = null;
        Statement statement = null;
        try {
            Class.forName(DRIVER);

            Connection conn = DriverManager.getConnection(URL_CONEXION, usuario, password);
            String selectTableSQL = "SELECT ID,USERNAME,PASSWORD,NOMBRE FROM Usuarios";
            statement = conn.createStatement();
            ResultSet rs = statement.executeQuery(selectTableSQL);
            while (rs.next()) {
                String id = rs.getString("ID");
                String usr = rs.getString("USERNAME");
                String psw = rs.getString("PASSWORD");
                String nombre = rs.getString("NOMBRE");
                System.out.println("userid : " + id);
                System.out.println("usr : " + usr);
                System.out.println("psw : " + psw);
                System.out.println("nombre : " + nombre);
            }
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        } catch (ClassNotFoundException e) {
            System.out.println(e.getMessage());
        } finally {
            if (statement != null) {
                statement.close();
            }
            if (dbConnection != null) {
                dbConnection.close();
            }
        }
    }   
}

Hay varias cosas que debes entender de este código.  La primera es que deberás cargar en el ambiente de Java, el driver que será el encargado de gestionar la conexión con la base de datos y existe uno para cada base de datos.

private static final String DRIVER = «org.mariadb.jdbc.Driver»;

Class.forName(DRIVER);

Los segundo es la URL de conexión.  Esta también se forma dependiendo de la base de datos, aunque el formato es similar para bases de datos distintas.

private static final String URL_CONEXION = «jdbc:mariadb://localhost:3306/Pruebas»;

Con la url, el usuario y el password, creamos una conexión.

Connection conn = DriverManager.getConnection(URL_CONEXION, usuario, password);

Con la conexión, creamos una sentencia y es esta sentencia la que nos permite especificar la forma que tendrá nuestra consulta SQL.

String selectTableSQL = «SELECT ID,USERNAME,PASSWORD,NOMBRE FROM Usuarios»;

statement = conn.createStatement();

ResultSet rs = statement.executeQuery(selectTableSQL);

El resultado es un objeto ResultSet que contiene los datos de nuestra consulta.

while (rs.next()) {…}

Debes ser cuidadoso al recuperar en variables de Java los datos de tu consulta, usando los nombres de las columnas que has incluido en el query.

String id = rs.getString("ID");
tring usr = rs.getString("USERNAME");
String psw = rs.getString("PASSWORD");
String nombre = rs.getString("NOMBRE");

Al ejecutar el código obtendrás los datos de la tabla Usuarios.

Conexión a base de datos con JDBC en Java

Una observación importante: Debes cerrar la sentencia y la conexión una vez que has dejado de usarlas, esto evitará que dejes conexiones abiertas y el acceso al BD quede bloqueado.

if (statement != null) { statement.close(); }

if (dbConnection != null) { dbConnection.close(); }

Es un ejemplo muy sencillo para realizar una conexión a base de datos con JDBC, puedes actualizar o insertar registros nuevos.  Puedes eliminar o crear tablas nuevas, pero ya las veremos en otro ejemplo próximamente.

Mas sobre Java JDBC: https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/

Más información en inglés: https://geekole.com/database-connection-with-jdbc-java/

Deja un comentario

− three = 1