Skip to content

08. JDBC (Java Database Connectivity)

Melissa Diaz edited this page Jan 29, 2025 · 3 revisions

JDBC (Java Database Connectivity)

¿Qué es JDBC?

JDBC es una API estándar de Java que permite conectar aplicaciones Java con bases de datos relacionales. Proporciona una forma unificada de ejecutar consultas SQL y procesar resultados sin depender de un DBMS específico, siempre que se disponga del driver adecuado.

Componentes principales de JDBC

  1. JDBC Driver Manager → Carga el driver de la base de datos y gestiona la conexión.
  2. API JDBC → Proporciona las interfaces y clases necesarias para interactuar con bases de datos.

📌 Paquetes importantes

  • java.sql.* (uso general de JDBC)
  • javax.sql.* (soporte avanzado, como pooling de conexiones)

📌 Clases e interfaces clave

  • DriverManager → Administra los drivers JDBC.
  • Connection → Representa la conexión con la base de datos.
  • Statement → Ejecuta consultas SQL.
  • PreparedStatement → Mejora seguridad y rendimiento en consultas parametrizadas.
  • ResultSet → Almacena y gestiona los resultados de una consulta SQL.
  • DataSource → Alternativa para manejar conexiones en aplicaciones empresariales.

Conexión a la Base de Datos con JDBC

Para conectarse a una base de datos, se necesita:
Driver JDBC específico para el DBMS.
URL de conexión (jdbc:mysql://host:puerto/base_de_datos).
Credenciales de acceso (usuario y contraseña).

📌 Ejemplo de conexión a MySQL

Connection connection = null;
try {
    Class.forName("com.mysql.cj.jdbc.Driver"); // Carga el driver
    String url = "jdbc:mysql://localhost:3306/biblioteca"; // URL de conexión
    connection = DriverManager.getConnection(url, "user", "password"); // Conectar
} catch (SQLException ex) {
    ex.printStackTrace();
} 

🔹 Class.forName("com.mysql.cj.jdbc.Driver") → Carga el driver de MySQL.
🔹 DriverManager.getConnection(url, usuario, contraseña) → Establece la conexión.


Uso de JDBC en Maven

En Maven, en pom.xml:

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>9.2.0</version>
</dependency>

Puntos Claves: Componentes de una Conexión JDBC

URL de Conexión (JDBC URL): Define la dirección del servidor, puerto y base de datos. Ejemplo para MySQL:

jdbc:mysql://<host>:<puerto>/<nombre_base_datos>?<opciones>

Credenciales de acceso: Usuario y contraseña necesarios para autenticar la conexión.

Controlador JDBC: Permite la comunicación entre Java y la base de datos. Ejemplo para MySQL:

com.mysql.cj.jdbc.Driver

Configuración de la zona horaria (opcional): Se requiere en algunas bases de datos para evitar errores con fechas y horas.

Manejo de errores y excepciones: Uso de try-catch para manejar SQLException y otros posibles fallos de conexión.

Cierre de la conexión: Importante liberar recursos con close() después de usar la conexión.

Interacción con bases de datos en Java con JDBC

Este capítulo explora cómo conectar y manipular bases de datos en Java usando la API JDBC.

1. Uso del objeto Statement

  • Se crea a partir de una conexión (Connection).
  • Permite ejecutar consultas SQL con métodos como:
    • executeQuery(): Para recuperar datos (SELECT).
    • executeUpdate(): Para modificar datos (INSERT, UPDATE, DELETE).
  • Ejemplo de ejecución de una consulta:
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) {
	int x = rs.getInt("a");
	String s = rs.getString("b");
	double d = rs.getDouble("c");
	System.out.println("Fila = " + x + " " + s + " " + d);
}

2. Recuperación de datos con ResultSet

  • ResultSet almacena los resultados de una consulta SQL.
  • Se recorre fila por fila con next().
  • Se obtienen valores con métodos como: getInt(), getString(), getDouble(), getDate(), entre otros.
  • Se puede acceder a una columna por nombre o número:
String nombre = rs.getString("nombre");
String nombre2 = rs.getString(2); // Segunda columna

3. Optimización con PreparedStatement

  • Mejora el rendimiento en consultas repetitivas.
  • Permite el uso de parámetros (?) para evitar concatenaciones inseguras.
  • Ejemplo:
PreparedStatement ps = connection.prepareStatement(
	"UPDATE nombreTabla SET campo1 = 'valor' WHERE campo2 > ? AND campo2 < ?"
);
ps.setInt(1, 1200);
ps.setInt(2, 1300);
int n = ps.executeUpdate(); // Ejecuta la consulta

Note

  • Statement es útil para consultas simples.
  • ResultSet permite recorrer los datos obtenidos.
  • PreparedStatement mejora eficiencia y seguridad en consultas dinámicas.

Clone this wiki locally