Explicamos cómo acceder a un servidor de base de datos MySQL o MariaDB de forma nativa (sin instalar software adicional) usando Java como lenguaje de programación y JDBC como método de conexión. No usaremos los métodos de persistencia y serialización de Java, que explicaremos en otro artículo, únicamente la conexión directa con MySQL o MariaDB de nuestra aplicación. Usaremos el IDE IntelliJ IDEA, aunque también explicamos cómo hacer la aplicación en Eclipse.

Descarga del driver JDBC correspondiente para Java

En primer lugar descargaremos el fichero .jar del driver JDBC, será este fichero el que contenga los métodos necesarios para interactuar con la base de datos MySQL o MariaDB. Dicho fichero se puede descargar de la web oficial de MySQL, en la URL:

https://dev.mysql.com/downloads/connector/j/

Para que nuestro programa no dependa del sistema operativo y funcione correctamente en Windows, Linux o MAC OS, seleccionaremos en «Select Operating System» la opción «Platform Independent»:

Descarga del driver JDBC correspondiente para Java

Descargando el fichero mysql-connector-java-8.0.22.zip o el fichero mysql-connector-java-8.0.22.tar.gz. Son el mismo pero comprimido con zip o con gz respectivamente.

Por supuesto, es la versión a la fecha de la realización de este artículo, que puede variar conforme pasen los meses. Descargaremos la versión más reciente, a ser posible, del Connector/J (Driver JDBC de MySQL).

Este driver JDBC de MySQL servirá tanto para bases de datos MySQL como MariaDB, pero si vamos a usar el motor de base de datos MariaDB podemos descargar su driver JDBC específico desde:

https://mariadb.com/kb/en/about-mariadb-connector-j/

Descomprimiremos el fichero JDBC descargado, que contiene lo siguiente:

Descarga del driver JDBC correspondiente para Java

En nuestro caso solo nos interesa el fichero mysql-connector-java-8.0.22.jar, que es el que usaremos en nuestra aplicación, el que contiene todos los métodos de acceso y manipulación de base de datos MySQL o MariaDB.

El servidor de MySQL o de MariaDB

Como es lógico, necesitaremos disponer de un servidor de base de datos con MySQL Server o bien con MariaDB. Y necesitaremos, por supuesto, la dirección de este servidor, el puerto de acceso, un usuario y una contraseña con permisos para acceder a las tablas que necesitemos en la aplicación.

En este ejemplo usaremos un servidor instalado localmente, en el mismo equipo en el que ejecutaremos la aplicación Java. Para instalarlo hemos usado XAMPP, que instala MySQL, Apache, PHP y otros componentes de forma automática. Aunque no es necesario usar XAMPP, puede descargarse el instalador de MySQL Server directamente de su web oficial. Por ejemplo, en este artículo, explicamos cómo instalar MySQL Server en Windows:

Una vez que tengamos el servidor de MySQL o MariaDB, un usuario y una contraseña, estaremos preparados para «atacar» dicha base de datos con nuestra aplicación Java.

Para nuestro ejemplo tendremos creada una tabla llamada «articulos» en una base de datos llamada «lista_compra»:

El servidor de MySQL o de MariaDB

Dicha tabla la hemos creado ejecutando la siguiente sentencia SQL:

Crear aplicación Java con acceso a MySQL o MariaDB de forma nativa con JDBC y con el IDE IntelliJ IDEA

En nuestro caso usaremos el IDE de desarrollo IntelliJ IDEA, pero por supuesto podremos usar cualquier otro como Eclipse o NetBeans, el código de acceso a MySQL será el mismo.

Crearemos un nuevo proyecto Java

Crear aplicación Java con acceso a MySQL o MariaDB de forma nativa con JDBC y con el IDE IntelliJ IDEA

Seleccionaremos «Java» en la parte izquierda y pulsaremos «Next»:

Crear aplicación Java con acceso a MySQL o MariaDB de forma nativa con JDBC y con el IDE IntelliJ IDEA

Crearemos una aplicación de consola, por lo que marcaremos «Create project from template» y elegiremos «Command Line App»:

Crear aplicación Java con acceso a MySQL o MariaDB de forma nativa con JDBC y con el IDE IntelliJ IDEA

Introduciremos un nombre para nuestro proyecto, por ejemplo «JavaAccesoMySQL» y una ubicación en una carpeta. Pulsaremos «Finish»:

Crear aplicación Java con acceso a MySQL o MariaDB de forma nativa con JDBC y con el IDE IntelliJ IDEA

El código que usaremos para acceder al servidor de MySQL o MariaDB, para ejecutar una consulta SQL sobre una tabla y mostrar los valores devueltos por la consulta SQL por consola, será el siguiente (es importante añadir los import correspondientes para usar el driver JDBC):

Si intentamos compilar la aplicación para probarla, veremos que nos muestra este error:

Error al cargar el driver JDBC de MySQL: com.mysql.jdbc.Driver
Error al conectar con el servidor MySQL/MariaDB: No suitable driver found for jdbc:mysql://localhost:3306/lista_compra

Crear aplicación Java con acceso a MySQL o MariaDB de forma nativa con JDBC y con el IDE IntelliJ IDEA

Es debido a que no hemos añadido el driver JDBC en su carpeta adecuada. Para solucionar este error solo tendremos que copiar el fichero descargado anteriormente mysql-connector-java-8.0.22.jar a la carpeta lib de nuestra aplicación:

Crear aplicación Java con acceso a MySQL o MariaDB de forma nativa con JDBC y con el IDE IntelliJ IDEA

Y desde el menú «File» – «Project Structure»

Seleccionaremos «Modules» [1] y en la parte derecha pulsaremos en «Dependencies» [2]. Pulsaremos en el botón «+» [3]:

Seleccionaremos «JARs or directories…»:

Seleccionaremos la carpeta lib de nuestro proyecto, donde tenemos copiado el fichero JDBC mysql-connector-java-8.0.22.jar:

Guardaremos los cambios pulsando OK:

Y ya podremos compilar y probar nuestra aplicación Java con acceso a MySQL o MariaDB de forma nativa. Ahora sí, la aplicación se ejecutará, usará el driver JDBC y accederá al servidor MySQL, ejecutando la sentencia SQL, obteniendo los datos de la tabla y mostrándolos en consola:

Agregar JAR de driver JDBC en Eclipse

En el caso de Eclipse, si queremos agregar el fichero .jar del driver JDBC mysql-connector-java-8.0.22.jar a nuestro proyecto, en primer lugar lo copiaremos a la carpeta lib (como hemos hecho anteriormente para IntelliJ IDEA) de nuestro proyecto:

Agregar JAR de driver JDBC en Eclipse

Si no existiera la carpeta «lib» la crearemos, como es lógico. Una vez que tengamos el fichero mysql-connector-java-8.0.22.jar en dicha carpeta, en nuestro caso en:

D:\Mis documentos\Java\JavaAccesoMySQL\lib

Pulsaremos con el botón derecho del ratón sobre la carpeta del proyecto en Eclipse [1] y seleccionaremos «Proporties» [2] en el menú emergente:

Agregar JAR de driver JDBC en Eclipse

Seleccionaremos «Java Build Path» [1], pulsaremos en la pestaña «Libraries» [2] y en el botón «Add JARs…» [3]:

Agregar JAR de driver JDBC en Eclipse

Buscaremos el fichero JAR mysql-connector-java-8.0.22.jar en la carpeta lib de nuestro proyecto y lo seleccionaremos. Pulsaremos «OK»:

Agregar JAR de driver JDBC en Eclipse

Pulsaremos «Apply an close»:

Agregar JAR de driver JDBC en Eclipse

Y ya podremos ejecutar la aplicación desde Eclipse, que funcionará correctamente:

Agregar JAR de driver JDBC en Eclipse

Consideraciones y sugerencias

Por supuesto, esta no es la forma idónea de realizar una aplicación Java con acceso a base de datos. Lo óptimo es usar persistencia y serialización que independicen los métodos de acceso a la base de datos del resto de la lógica de la aplicación. De esta forma no tendremos que cambiar casi nada en nuestra aplicación si decidimos cambiar el motor de base de datos (Oracle, SQL Server, Firebird, MySQL, MariaDB, PosgreSQL, SQLite, Access, MongoDB, XML, etc.).

Además, es recomendable usar una clase separada para la conexión con la base de datos y los métodos de manipulación y tratamiento de tablas y registros.

Este ejemplo es una forma de mostrar que con Java se puede acceder nativamente (sin instalar ODBC ni drivers de terceros) a MySQL, a MariaDB o a cualquier otra base de datos, únicamente necesitaremos el fichero JDBC correspondiente, como hemos explicado anteriormente.

En el ejemplo hemos realizado la conexión con el servidor de MySQL o MariaDB mediante una cadena de conexión establecida en el código: servidor, puerto, usuario y contraseña. Como es lógico, este método no es idóneo porque si el servidor de base de datos está ubicado en otro lugar o bien tiene un usuario y contraseña diferentes siempre habría que cambiar el código y volver a generar el JAR de la aplicación, lo cual no es nada recomendable. Lo ideal es almacenar estos datos de conexión en un fichero XML (o de configuración) y que la aplicación los lea antes de realizar la conexión.

Esta aplicación funcionará perfectamente en cualquier sistema operativo: Windows, Linux o MAC OS.