Mini Entrada: JDBC Parte 2 – JDBC en la práctica

Si bien ya hablamos de algunas de las características que consideramos más destacables de JDBC, ahora es momento de que expliquemos como está dividido un programa  java con JDBC, es decir, poner todo en la práctica.  Los pasos para que un programa de este tipo se comunique con la base de datos son:

  1. Cargar el driver necesario para comprender el protocolo que usa la base de datos concreta
  2. Establecer una conexión con la base de datos
  3. Enviar consultas SQL y procesar el resultado
  4. Liberar los recursos al terminar
  5. Manejar los errores que se puedan producir

A continuación veremos algo más de código.

 

Paso 1: Carga del Controlador (Driver)

Antes de poder conectarse a la base de datos es necesario cargar el driver JDBC. Sólo hay que hacerlo una vez al comienzo de la aplicación.

loadDriver

carga del driver

El nombre del driver debe venir especificado en la documentación de la base de datos. Se puede elevar la excepción ClassNotFoundException si hay un error en el nombre del driver o si el fichero .jar no está correctamente configurado en el CLASSPATH o en el proyecto.

 

Paso 2: Establecer una conexión.

Las gestores de bases de datos actúan como servidores y las aplicaciones como clientes que se comunican a través de la red. Un objeto Connection representa una conexión física entre el cliente y el servidor. Para crear una conexión se usa la clase DriverManager y se especifica la URL, el nombre y la contraseña, como se muestra abajo:

url

El formato de la URL debe especificarse en el manual de la base de datos. Ejemplo de MySQL:

url

Donde el host es el equipo o nombre del servidor donde este la base de datos, el puerto utilizado por MySQL es el 3306 y el esquema es el nombre de la base de datos.

 

3.- Ejecutar una sentencia SQL.

Una vez que tenemos una conexión puedes ejecutar sentencias SQL. Primero se crea el objeto Statement desde la conexión y después se ejecuta la consulta y su resultado se devuelve mediante un ResultSet.

statement

Para las sentencias  actualizar, insertar y borrar en SQL, debemos utilizar statement.executeUpdate().

 

Desde JDBC 2.0 podemos utilizar otra forma para realizar las sentencias  actualizar, insertar y borrar, si requiere obtener mayor información sobre esto por favor diríjase a la segunda parte en los Anexos de este documento.

 

3.1.-Acceso al conjunto de resultados

El ResultSet es el objeto que representa el resultado. No carga toda la información en memoria, por lo que, internamente tiene un cursor que apunta a un fila concreta del resultado en la base de datos. Hay que posicionar el cursor en cada fila y obtener la información de la misma.

rs

El cursor apuntará, la primera vez que lo usemos, a la posición 0 así es que, debemos usar la función next() del ResultSet, que nos posicionara en la primera fila. Con el código de ejemplo evitamos obtener una excepción en caso de que no haya resultado alguno a nuestra sentencia.

rs1

Cuando el ResultSet se encuentra en una fila concreta se pueden usar los métodos de acceso a las columnas.

  • String getString(String columnLabel)
  • String getString(int columnIndex)
  • int getInt(String columnLabel)
  • int getInt(int columnIndex)
  • … (existen dos métodos por cada tipo)

rs2

 

Paso 4: Liberar recursos

Cuando se termina de usar una Connection, un Statement o un ResultSet es necesario liberar los recursos que necesitan. Puesto que la información de un ResultSet no se carga en memoria, existen conexiones de red abiertas. Para ello utilizamos la función Close() de cada uno, como se muestra abajo:

  • ResultSet.close() – Libera los recursos del ResultSet. Se cierran automáticamente al cerrar el Statement que lo creó o al volver a ejecutar el Statement.
  • Statement.close() – Libera los recursos del Statement.
  • Connection.close() – Finaliza la conexión con la base de datos

 

Paso 5: Manejar los errores

Hay que gestionar los errores apropiadamente ya que se pueden producir excepciones ClassNotFoundException si no se encuentra el driver y también se pueden producir excepciones SQLException al interactuar con la base de datos, por alguno de los siguientes motivos:

  • SQL mal formado
  • Conexión de red rota
  • Problemas de integridad al insertar datos (claves duplicadas)
  • Cadena de conexión con errores.

Sin embargo, es todo por ahora, la próxima semana abordaremos más a fondo este punto, y veremos algunas cadenas de conexión para algunos gestores de base de datos.

 

Anuncios
Etiquetado , , ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: