Está en la página 1de 6

JDBC: acceso a bases de datos en Java

No se hace necesariamente siempre desde web, es una librería


aparte
Independiza en gran medida nuestro código de la B.D. empleada
Pasos:
– Cargar el driver de la B.D. (normalmente una clase en un
fichero .jar)
• Tenemos que disponer del driver para nuestra B.D. y conocer el
nombre de la clase a cargar
– Establecer la conexión con la URL de la B.D. (Connection)
• Cada driver utiliza un tipo de URL distinto
– Crear una sentencia SQL (Statement)
– Ejecutar la sentencia
– Procesar los resultados (ResultSet) si es SELECT
– Cerrar la conexión
JDBC: ejemplo (I)
/* Cargar el driver. */
Class.forName("com.mysql.jdbc.Driver");
/* abrir la conexión */
Connection con;
con = DriverManager.getConnection("jdbc:mysql://localhost/ejemplotw");
/* crear la sentencia */
Statement sentencia = con.createStatement();
JDBC: ejemplo (II)
Ejecutar la sentencia
– Si es un SELECT, método executeQuery. Devuelve un objeto
de tipo ResultSet con los registros

ResultSet datos = sentencia.executeQuery("select * from clientes");

– Si es un INSERT, UPDATE o DELETE, método executeUpdate.


Devuelve un entero indicando el número de registros afectados

int filas = sentencia.executeUpdate(“delete from clientes where cod=1");


JDBC: ejemplo (III)
Recorrer registros (para consultas SELECT)
– método next() de ResultSet.
• Devuelve true si hay siguiente registro y avanza a él.
• Inicialmente hay que hacer next() para apuntar al 1er registro. Si devuelve
false es que no hay registros.
– Métodos getXXX(nombre_campo) de ResultSet. Obtienen el valor del
campo nombre_campo del registro actual
• getString(…), getInt(…), getFloat(…), getBoolean()

ResultSet datos = sentencia.executeQuery("select * from clientes");


while (datos.next()) {
out.println(datos.getString("apellidos"));
out.println(datos.getInt("edad"));
}
DataSources
Abrir una conexión con la B.D. es costoso en tiempo
En general, un porcentaje muy pequeño de los usuarios
que navegan por la web están simultáneamente haciendo
operaciones con la B.D.
Pool de conexiones: mantener un conjunto de
conexiones abiertas, y dárselas ya abiertas a aquellos
procesos que las soliciten. Cuando el proceso “cierra” la
conexión en realidad simplemente se devuelve al pool
DataSource: clase que implementa pool de conexiones,
entre otras mejoras.
– Algunos drivers incorporan ya su DataSource
– Hay DataSources ya hechos que pueden funcionar con
cualquier driver (ej. DBCP de Apache)
JDBC: ejemplo (y IV)
DBCP: Apache Commons Database Connection Pool, una
implementación de un DataSource para cualquier driver
JDBC (http://jakarta.apache.org/commons/dbcp/)

import org.apache.commons.dbcp.*;

ds = new BasicDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost/subastastw");
Connection con = ds.getConnection()
/* a partir de aquí, todo igual */

También podría gustarte