El objetivo de nuestro ejemplo es el de ver qué tenemos que hacer para crear una conexión JDBC con Java sobre una base de datos y ejecutar una consulta.
Las tres clases que manejaremos en nuestro ejemplo serán Connection para realizar la conexión a la base de datos, PreparedStatement que será la que contenga la sentencia SQL y ResultSet que será la que contenga el resultado.
Lo primero que tenemos que saber para realizar la conexión a la base de datos es donde se encuentra dicha base de datos. Para hacer referencia a la base de datos lo podemos hacer directamente mediante la IP o, por ejemplo, mediante una referencia ODBC.
Así, podríamos tener referencias como:
jdbc:db2:10.0.1.10:50000/BD1 (referencia directa) jdbc:odbc:BD1 (referencia por ODBC)
Una vez conocemos la localización de nuestra base de datos debemos de saber el nombre de la clase que tiene implementada la conexión a la base de datos. Es lo que llamamos driver. Dependiendo de la forma en la que este implementado el driver, este, recibirá el apelativo de driver tipo1, tipo2, tipo3 o tipo4.
Si nos ponemos a escribir código, lo primero que debemos de hacer es instanciar la clase del driver.
Class.forName(sDriver).newInstance();
Dicha clase será la que nos proporcione una conexión a la base de datos, y como bien hemos dicho, la conexión la guardaremos en una instancia de la clase Connection.
con = DriverManager.getConnection(sURL);
Un vez que hemos conseguido una conexión a la base de datos lo siguiente será el preparar una sentencia SQL en un PreparedStatement. No haremos nada complicado con el SQL, algo así como…
stmt = con.prepareStatement("SELECT titulo FROM libros");
Construida nuestra sentencia, realizamos la ejecución de la misma. Y el resultado al ResultSet.
rs = stmt.executeQuery();
Un ResultSet no deja de ser una especie de matriz (filas x columnas) que deberemos de recorrer mediante el movimiento de un cursor. Y la forma más fácil en Java es mediante un bucle while. Y para acceder a las columnas bastará con utilizar los métodos getXXX del ResultSet: getString() para las cadenas de texto, getDouble() para los decimales, getDate() para las fechas,……
while (rs.next())
System.out.println (rs.getString("titulo"));
Una vez que hemos finalizado el cometido de nuestro ejercicio deberemos de cerrar las conexiones a la base de datos. Para ello invocaremos el método close() sobre los tres objetos mencionados.
Y en todo este proceso, las excepciones. No nos debemos de olvidar de ellas. A tal respecto deberemos de ejecutar nuestro código en un bloque try-catch que controle la SQLException. Excepción común que se produce en el acceso a la base de datos.
El código podría quedar como el que sigue:
try {
Class.forName(sDriver).newInstance();
con = DriverManager.getConnection(sURL);
try {
// La Query
stmt = con.prepareStatement("SELECT titulo FROM libros");
rs = stmt.executeQuery();
// Recorremos el resultado
while (rs.next())
System.out.println (rs.getString("titulo"));
} catch (SQLException sqle) {
System.out.println("Error en la ejecución:"
+ sqle.getErrorCode() + " " + sqle.getMessage());
}