9.b.1 - Conexiones con Gestores de Bases de Datos

Objetivo

Programar conexiones con bases de datos.

1. Contenidos

1.1 Idea general

De todos los métodos de acceso a bases de datos que ya vimos vamos a trabajar con JDBC - Java Database Connectivity.

El primer paso para poder acceder a una base de datos y poder ejecutar consultas en ella es disponer de una conexión válida. Para ello necesitaremos:

  1. Disponer de un driver adecuado para el SGBDR que queremos utilizar.
  2. Conocer los parámetros de conexión (dirección IP, nombre de la base de datos, usuario de acceso, clave...)

Driver de Base de Datos: Es el software que permite la comunicación entre la aplicación y la base de datos. Actúa como un traductor o intermediario entre el programa y la base de datos: la aplicación usa una interfaz estándar, como JDBC en Java, y el driver se encarga de convertir esas instrucciones en llamadas que entiende el SGBD específico.

1.2 Ejemplo

Empezaremos creando una conexión con SQLite:

Descarga el Driver

Una vez hayas creado la carpeta para tu proyecto, conéctate al repositorio de maven y busca "SQLite JDBC driver". Los drivers JDBC son librerías de Java, así que puedes descargar el archivo .jar y copiarlo a tu directorio de proyecto. Elige bien el driver, pues hay varias organizaciones que los desarrollan. Para este ejemplo he elegido la versión 3.51.3.0 de org.xerial.

Crea la base de datos

Utiliza el programa DB Browser for SQLite para crear la base de datos con el siguiente script SQL:


	-- Tabla principal: Autor
	CREATE TABLE Autor (
		id INTEGER PRIMARY KEY AUTOINCREMENT,
		nombre TEXT NOT NULL,
		nacionalidad TEXT
	);

	-- Tabla relacionada: Obras (1 autor puede tener muchas obras)
	CREATE TABLE Obra (
		id INTEGER PRIMARY KEY AUTOINCREMENT,
		id_autor INTEGER NOT NULL,
		titulo TEXT NOT NULL,
		ano_publicacion INTEGER,
		FOREIGN KEY (id_autor) REFERENCES Autor(id)
	);
				

Guarda el fichero en el directorio de proyecto con el nombre "autores.sqlite".

Escribe el código

Programamos una prueba de concepto para realizar la conexión.


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

	public class ConexionSQLite {

		public static void main(String[] args) {
			String url = "jdbc:sqlite:autores.sqlite";

			try (Connection conexion = DriverManager.getConnection(url)) {
				System.out.println("Conexión establecida correctamente.");
			} catch (SQLException e) {
				System.out.println("Error al conectar con la base de datos.");
				System.out.println(e.getMessage());
			}
		}
	}
				

Una vez hecho, tu directorio de proyecto será así:


.
├── autores.sqlite
├── ConexionSQLite.java
└── sqlite-jdbc-3.51.3.0.jar
				

Compila y Ejecuta

Compila el programa con:


	javac ConexionSQLite.java
				

Ejecuta enlazando la librería:


	(en linux) java -cp sqlite-jdbc-3.51.3.0.jar:. ConexionSQLite
	(en windows) java -cp sqlite-jdbc-3.51.3.0.jar;. ConexionSQLite
				

Debes ver en la consola el mensaje "Conexión establecida correctamente."

Compruébalo

Haz algunas pruebas: escribe mal el nombre de la base de datos, quita el driver, etc. para comprobar que todo funciona como debe.

2 Ejercicios

2.1 Conectar con MySQL

Prueba ahora a conectarte con una base de datos MySQL que requiera nombre de usuario y contraseña. Para ello necesitarás, además del driver adecuado, modificar la URL de conexión para que incluya toda la información necesaria. Consulta la documentación del driver para conseguirlo.

Reto

¿Puedes conectarte con una base de datos que no use JDBC? ¿Eres capaz de hacer una conexión con MongoDB?

¡Demuéstralo!

Bibliografía