HOWTO · MySQL

Cómo conectarse a una base de datos MySQL usando JDBC

Cree una URL de conexión JDBC de MySQL y use Java con MySQL Connector/J para conectarse, comprobar la conexión y cerrar los recursos.

En esta página

Una URL de conexión JDBC de MySQL tiene la forma jdbc:mysql://host:port/database. En Java, pase esa URL, el nombre de usuario de la base de datos y la contraseña por separado a DriverManager.getConnection. JDBC es la API de Java que una aplicación utiliza para trabajar con una base de datos a través de un controlador.

Requisitos de conexión JDBC y MySQL

Necesita un kit de desarrollo de Java (JDK), un servidor MySQL que acepte conexiones de su aplicación y MySQL Connector/J. Connector/J es el controlador que implementa la compatibilidad de JDBC con MySQL. Agregue su dependencia a su herramienta de compilación o agregue el JAR de Connector/J al classpath de la aplicación. La versión exacta de la dependencia depende del proyecto y de las versiones de Java y MySQL que admite; este ejemplo no presupone una versión concreta.

Un IDE puede ayudarle a escribir y ejecutar Java, pero es opcional. No copie el controlador en un directorio de extensiones de JRE: configúrelo como una dependencia de la aplicación para que la compilación y el tiempo de ejecución utilicen el mismo controlador. Consulte la documentación de Connector/J o la configuración de dependencias de su herramienta de compilación al seleccionar y agregar el controlador.

Crear la URL de conexión JDBC de MySQL

La URL comienza con el prefijo exacto jdbc:mysql://, seguido del host del servidor MySQL, el puerto y el nombre de la base de datos. Para un servidor local que usa el puerto predeterminado de MySQL y una base de datos llamada new, la URL es jdbc:mysql://localhost:3306/new.

Reemplace localhost por el nombre o la dirección del servidor cuando MySQL se ejecute en otro lugar. El puerto habitual de MySQL es 3306, pero use el puerto configurado para su servidor. Reemplace new por la base de datos a la que desea acceder. La base de datos debe existir y la cuenta de MySQL debe tener permiso para conectarse a ella. Las opciones de la URL pueden agregarse después de ? cuando una conexión necesita ajustes adicionales de Connector/J; use las opciones compatibles con la versión de Connector/J de su proyecto.

La URL identifica el servidor y la base de datos; en este ejemplo no contiene las credenciales de la cuenta. Mantenga el nombre de usuario y la contraseña separados y proporciónelos como argumentos a DriverManager.getConnection. En una aplicación, cargue las credenciales desde una configuración o un almacén de secretos, en lugar de guardar las contraseñas en el control de código fuente.

Conectarse a MySQL con Java

El siguiente programa completo lee la URL y las credenciales de variables de entorno, carga el nombre de la clase del controlador indicado, abre una conexión y ejecuta SELECT 1. Defina MYSQL_URL, MYSQL_USER y MYSQL_PASSWORD antes de ejecutarlo. MYSQL_URL debe contener la URL de su servidor y base de datos, como jdbc:mysql://localhost:3306/new. Agregue MySQL Connector/J al classpath de tiempo de ejecución y asegúrese de que el servidor sea accesible. Este ejemplo respaldado por un servicio no se ha verificado aquí contra una instancia de MySQL configurada, por lo que no se muestra ningún resultado de conexión.

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

public class MySQLJDBC {
    public static void main(String[] args) {
        String url = System.getenv("MYSQL_URL");
        String username = System.getenv("MYSQL_USER");
        String password = System.getenv("MYSQL_PASSWORD");

        if (url == null || url.isBlank() || username == null || username.isBlank()
                || password == null || password.isBlank()) {
            System.out.println("Set MYSQL_URL, MYSQL_USER, and MYSQL_PASSWORD before connecting.");
            return;
        }

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            try (Connection connection = DriverManager.getConnection(url, username, password);
                 Statement statement = connection.createStatement();
                 ResultSet result = statement.executeQuery("SELECT 1")) {
                if (result.next()) {
                    System.out.println("Connected; SELECT 1 returned " + result.getInt(1) + ".");
                }
            }
        } catch (ClassNotFoundException | SQLException error) {
            System.out.println("Connection failed (" + error.getClass().getSimpleName() + ").");
        }
    }
}

Class.forName("com.mysql.cj.jdbc.Driver") nombra la clase de controlador usada en este ejemplo; asegúrese de que la dependencia configurada de Connector/J la proporcione. DriverManager.getConnection acepta la URL, el nombre de usuario y la contraseña como argumentos distintos. La instrucción try-with-resources cierra el conjunto de resultados, la instrucción y la conexión cuando la ejecución sale del bloque, incluso cuando una consulta informa de un error. El mensaje informa solo del tipo de excepción y omite los detalles de la conexión y las credenciales.

Verificar y cerrar la conexión

Cuando una conexión tiene éxito, el programa lee la primera columna devuelta por SELECT 1 y escribe una confirmación que contiene ese valor. Esta comprobación muestra que la aplicación obtuvo una conexión y ejecutó una consulta. Si el controlador no puede cargarse o el servidor rechaza o no puede recibir la conexión, el programa informa del tipo de excepción sin imprimir el mensaje de la excepción, que podría contener detalles de la conexión.

Compruebe que el servidor esté en ejecución y sea accesible en el host y el puerto de MYSQL_URL, que la base de datos indicada exista y que la cuenta tenga los permisos necesarios. Confirme también que Connector/J esté incluido en el classpath de tiempo de ejecución de la aplicación. Una conexión y una consulta correctas requieren las tres variables de entorno, una dependencia de Connector/J y un servidor MySQL accesible. Cuando falta configuración o el controlador o la conexión fallan, el programa imprime un mensaje y regresa sin establecer un estado de salida distinto de cero; esas rutas no demuestran una consulta exitosa.

Para adaptar la conexión, defina la URL y las credenciales para el entorno de destino y luego mantenga la consulta o reemplácela con la operación de base de datos que su aplicación necesite. La URL es la cadena de conexión JDBC de MySQL, mientras que DriverManager.getConnection la combina con las credenciales de la cuenta para crear la conexión. El ejemplo usa try-with-resources para que los recursos JDBC se cierren una vez completada la comprobación.