sábado, 16 de junio de 2012

JDBC: Java y las bases de datos

votar
JDBC  es el nombre de una librería Java que posee un conjunto de interfaces y clases utilizadas para escribir programas Java que pueden acceder y manipular bases de datos relacionales. Al utilizarla, las aplicaciones escritas en Java pueden ejecutar sentencias SQL, presentar los datos en interfaces amigables para los usuarios y cambiar datos en la base de datos.

JDBC puede ser utilizada tanto con bases de datos MySQL, como bases de datos Oracle o con Access de Microsoft. Pero para poder utilizar esta librería y acceder a las bases de datos en los programas hay que instalar los drivers correspondientes. Puesto que un driver JDBC es la interfaz que facilita las comuncaciones entre JDBC y la base de datos, es un driver específico de la base de datos. Así pues, hace falta un MySQL JDBC Driver para acceder a una base de datos MySQL, un Oracle JDBC Driver para acceder a una base de datos Oracle, pero para acceder a una base de datos Access, el JDK incluido trae un puente o Bridge JDBC-ODBC. ODBC es una tecnología desarrollada por Microsoft para el acceso a las bases de datos en la plataforma Windows. A su vez, un driver ODBC viene preinstalado en Windows, así que el puente JDBC-ODBC permite el acceso a cualquier base de datos ODBC de un programa Java.

Los drivers de MySQL y Oracle son:
   MySQL: com.mysql.jdbc.Driver
   Oracle: oracle.jdbc.driver.OracleDriver
que se pueden descargar de las compañías correspondientes. En concreto, el driver de MySQLestá en el archivo jar mysqljdbc.jar. Una vez descargado el driver, hay que añadirlo al classpath, ya sabéis: Equipo>>Propiedades>>Opciones avanzadas>>Variables del entorno...si lo habéis hecho al instalar Java, ya os lo sabéis de memoria.

Y ahora, ¿cómo se usa?. Bueno vamos a ver un ejemplo muy sencillito para que os hagáis una idea. Lo voy a hacer con MySQL, que es la base de datos que uso yo, pero también vale para cualquiera de las otras. Suponed que tenéis una base de datos de un colegio, y en ella una tabla con los datos personales de los estudiantes. Como este blog no es sobre SQL, vamos a hacerlo sin muchas explicaciones: 

CREATE DATABASE colegio;
USE colegio;
CREATE TABLE alumnos(
     nombre varchar(15),
     primer_apellido varchar(15),
     segundo_apellido varchar(15),
     nacimiento date,
     teléfono char(10),
     dirección varchar(20),
     );

Y a continuación la pobláis con los datos de alumnos imaginarios. Ahora vamos a crear un programa que se conecte a la base de datos y de como salida solo los nombres y los apellidos de los alumnos.



import java.sql.*; //no olvidéis esto
public class EjemploJdbc{
   public static void main(String[] args)throws SQLException, ClassNotFoundException{ //podemos usar try-catch, pero así el ejemplo es más simple
      Class.forName("com.mysql.jdbc.Driver"); //se carga el driver
      System.out.println("Driver cargado"); 

      //Ahora vamos a establecer una conexión
      Connection conexión = DriverManager.getConnection
       ("jdbc:mysql://localhost/colegio","usuario","contraseña");
     //Hemos puesto la base de datos con la que queremos conectar y el nombre de usuario y contraseña que usamos con ella
      System.out.println("Base de datos conectada");

      Statement st = conexión.createStatement();
      ResultSet resultado = st.executeQuery
         ("select nombre,primer_apellido,segundo_apellido from alumnos");

      //iteramos
      while(resultado.next()){
         System.out.println(resultado.getString(1)+ "\t"+ resultado.getString(2) + "\t" + resultado.getString(3));
      }
      conexión.close(); //cerramos la conexión
   }
}


La salida serán los nombres de los alumnos que hayáis introducido en la tabla. Ya véis que es muy sencillo. Se pueden usar cualquier sentencia SQL dentro del método executeQuery(String sql). El resultado será adjudicado a ResultSet. 


Por supuesto JDBC es mucho más amplio, y en otra ocasión veremos alguna de sus interfaces y sus clases. Por ahora, espero que esto os haya servido para poder conectar vuestros programas Java a vuestras bases de datos.

2 comentarios: