Modelo de conexión

La conexión a bases de datos relacionales a través de JDBC es muy simple, como habrás podido comprobar en las explicaciones previas. El objetivo de esta entrada es proporcionar (o intentarlo al menos) una plantilla que se pueda reutilizar y personalizar para aprender a manipular bases de datos con Java.

De todas las cosas que hay que tener en cuenta (que son muchas, lo sé), la conexión de Java con la base de datos relacional es la primera de las preocupaciones. En el ejemplo explicado en esta entrada y en esta otra, se muestra como se crea y establece una conexión. También contiene varios métodos que procesan sentencias SQL habituales de una forma simple y segura: las conexiones son abiertas y cerradas en cada sentencia SQL. Si estamos construyendo aplicaciones en las que se prevean grandes flujos de transacciones, tendremos que establecer una estrategia más adecuada; por ejemplo, si se pretenden realizar actualizaciones sobre un registro una vez que se haya accedido a él, probablemente sea mejor mantener abierta la conexión a la base de datos hasta que hayan concluido todas las actualizaciones.

Como la conexión a una base de datos es un objeto, se puede mantener en una variable tanto tiempo como se necesite; con lo cual la aplicación será capaz de procesar las acciones mucho más rápidamente, pero corriendo el riesgo de que otros usuarios tengan bloqueado el acceso hasta las conexiones que estén bloqueadas concluyan.

En el ejemplo que se va a exponer en esta entrada, se asume que hay una base de datos disponible para usar y su esquema es sencillo, utilizando la base de datos de este ejemplo.

La parte cliente del ejemplo anterior es la que se ha codificado con el ejemplo JavaEjemplo2.java, implementando como applet, que permite introducir una consulta en el campo de texto y enviarlo al servidor implementado en este ejemplo, que a su vez, enviará la consulta a la base de datos y devolverá el resultado al applet, el cual mostrará la información resultante de su consulta en la parte inferior.

En estos dos ejemplos se muestran los fundamentos de la interacción con bases de datos, de forma un poco más complicada, de tal modo que no se ataca a la base de datos desde el mismo programa sino que nos proporciona una visión más amplia de la capacidad y potencia que se encuentra bajo la conjunción de Java y las bases de datos.

package Applets;

import java.applet.Applet;
import java.awt.Button;
import java.awt.Component;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author GORKA ELORDUY
*/
public class JavaEjemplo2 extends Applet {

static final int PUERTO = 6700;
String cadenaConsulta = “No hay consultas aun”;
String cadenaResultados = “No hay resultados”;
Button boton;
TextArea texto;
List lista;

@Override
public void init() {
setLayout(new GridLayout(5, 1));
texto = new TextArea(40, 60);
lista = new ArrayList();
boton = new Button(“Ejecutar consulta”);
boton.addActionListener(new MiActionListener());
add(new Label(“Escribir consulta aqui, gracias”));
add(texto);
add(boton);
add(new Label(“Examinar resultados aquí, por favor”));
add((Component) lista);
resize(800, 800);
}

void abreSocket() {

Socket s = null;

try {

s = new Socket(getCodeBase().getHost(), PUERTO);
BufferedReader sinStream = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintStream soutStream = new PrintStream(s.getOutputStream());
soutStream.println(texto.getText());
cadenaResultados = sinStream.readLine();
while (cadenaResultados != null) {

lista.add(cadenaResultados);
cadenaResultados = sinStream.readLine();

}

} catch (IOException ex) {

System.out.println(ex.getMessage());

} finally {
if (s != null) {

try {
s.close();
} catch (IOException ex) {
Logger.getLogger(JavaEjemplo2.class.getName()).log(Level.SEVERE, null, ex);
}

}

}

}

class MiActionListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent e) {
abreSocket();
}

}

}

Una vez comprendidas las ideas básicas que he presentado en esta entrada y en las anteriores relacionadas con JDBC, creo que ya será fácil atreverse a escribir programas  que manejen esquemas de bases de datos mucho más complicados. Estoy preparando una aplicación web completa, a modo de ejemplo, que reúna todo lo explicado en este tema, en de servlets y en el de JSP. Lleva su tiempo, pero os prometo que os la explicaré. Gracias por seguir el blog, seguro que sois ya unos superjavatos.

Anuncios

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 )

Google photo

Estás comentando usando tu cuenta de Google. 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 )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.