-
Notifications
You must be signed in to change notification settings - Fork 3
08. 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.
- JDBC Driver Manager → Carga el driver de la base de datos y gestiona la conexión.
- 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.
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.
En Maven, en pom.xml:
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>9.2.0</version>
</dependency>✅ 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.
Este capítulo explora cómo conectar y manipular bases de datos en Java usando la API JDBC.
- 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);
}-
ResultSetalmacena 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- 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 consultaNote
-
Statementes útil para consultas simples. -
ResultSetpermite recorrer los datos obtenidos. -
PreparedStatementmejora eficiencia y seguridad en consultas dinámicas.