1. Vamos a realizar un programa que acceda a nuestra base de datos de usuarios. Vamos a acceder de dos formas: mediante ODBC y mediante MySQL. La plantilla del fichero que obtiene el listado de usuarios se encuentra en el fichero Ej1.java. Se pide:
a) Acceder al fichero de datos de usuarios mediante ODBC y mostrar el listado de usuarios desde Java. Para ello previamente deberemos instalar una fuente de datos ODBC que tome estos datos de nuestro fichero de texto. Deberemos seguir los siguientes pasos:
Una vez tenemos nuestra fuente de datos podremos conectarnos a ella desde JDBC.
- Ir al Panel de Control y abrir Fuentes de datos ODBC .
- Ahora deberemos añadir una nueva DSN (nombre de fuente de datos) de usuario, que nos permita acceder a nuestra base de datos. Dentro de la pestaña DSN de usuario pulsaremos Agregar.
- Seleccionamos el driver para acceder a ficheros de texto (Microsoft Text Driver) y pulsamos Aceptar.
- Nos pedirá un nombre del origen de datos, al que llamaremos paj, y una descripción. Desmarcamos Usar directorio actual para poder seleccionar el directorio de la BD. Pulsamos Seleccionar directorio y seleccionamos el directorio datos dentro del directorio de ejercicios de la sesión 8, que es donde se encuentra el fichero de datos de usuarios.
- Ahora en Opciones, podemos pulsar Definir formato para especificar el formato de nuestro fichero. Aquí le diremos que queremos utilizar un delimitador de campos personalizado, que será el caracter ':'. Pulsamos sobre Estimar para obtener que la BD tiene dos columnas, por defecto F1 y F2, y ahora deberemos especificar el nombre de cada columna (login y password).
- Con esto tendremos una base de datos con una tabla USUARIOS que es el nombre del fichero, y dos columnas LOGIN y PASSWORD que tomarán los datos de la primera y segunda columna respectivamente de fichero fichero.
Compilar y probar que consiga establecer correctamente la conexión con la fuente de datos sin producirse ninguna excepción.
- Si queremos acceder mediante ODBC necesitaremos cargar el driver del puente JDBC-ODBC. Añadir la carga de este driver al constructor de la clase Ej1.
- Después de cargar el driver, establecer la conexión con la fuente de datos paj. ¿cuál será la url para está base de datos? Establecer la conexión con dicha url sin especificar ni login ni password (null).
- Capturar las excepciones necesarias durante la conexión a la BD.
b) Ahora haremos que nuestro programa obtenga de la base de datos los datos de los usuarios y los muestre por pantalla. Para ello deberemos escribir el código de la función listaUsuarios(). Deberemos crear un objeto Statement sobre el que ejecutaremos nuestra consulta SQL (query), y recorreremos el objeto ResultSet que nos devuelva mostrando el login y password de todos los usuarios.
c) Para finalizar, vamos a cambiar el acceso a una base de datos MySQL. Para ello instalaremos MySQL y crearemos una nueva base de datos llamada paj. Tendrá una tabla USUARIOS con dos columnas login y password de tipo varchar. Para instalar y poner en marcha la base de datos MySQL deberemos:
- Instalar MySQL, por ejemplo en c:\mysql.
- Crear una nueva base de datos. Para esto deberemos crear un subdirectorio con el nombre de la base de datos (paj) en c:\mysql\data.
- Iniciamos la aplicación de administración c:\mysql\bin\winmysqladmin, que nos permitirá conectar y desconectar el servidor de la base de datos y ver su estado.
- La primera vez que arranquemos esta aplicación nos pedirá login y password. Si pulsamos cancelar no hará falta utilizar login y password para acceder a la administración de MySQL.
- Una vez hecho esto, aparecerá como un semáforo en la barra de tareas. Si está en verde el servidor estará conectado. Pinchando sobre el semáforo podremos abrir la aplicación y activar o desactivar el servidor.
- Ahora para mayor comodidad, podemos instalar mysqlfront descomprimiéndolo en cualquier directorio. Se trata de un frontal de la base de datos que nos permitirá manipular tablas y datos de forma visual, en lugar de tener que utilizar comandos SQL. Arrancamos la aplicación y creamos una nueva conexión a base de datos, indicando que nos queremos conectar a la BD paj.
- Una vez conectados podremos crear la tabla USUARIOS con sus campos, e insertar algunos datos de usuarios en ella para las pruebas.
Ahora tendremos que modificar nuestro programa para acceder a esta base de datos. ¿Qué driver tendremos que utilizar ahora? ¿Cuál será la url de la base de datos? Añadir el driver MySQL al CLASSPATH con:
SET CLASSPATH=%CLASSPATH%;<dir. ejercicios sesion 8>\mm.mysql-2.0.4-bin.jarModificar el driver y la url en el programa, compilar y probar, comprobando que accede correctamente a la base de datos que hemos creado.
2. (CHAT) Vamos a seguir ampliando nuestra aplicación de chat. Ahora haremos que tome los datos de los usuarios de la BD MySQL que hemos creado. Para ello tenemos la clase AccesoBDUsuarios en el paquete usuarios, de la cual podemos encontrar una plantilla en usuarios\AccesoBDUsuarios.java. En el fichero Ej2.java tenemos un conductor para probar el módulo de acceso a la BD. Se pide:
a) Insertar el driver y la url de la base de datos en el constructor de la clase AccesoBDUsuarios. Compilar y probar que se conecta y que valida los usuarios correctamente (el registro de usuarios todavía no está implementado).
b) Vuelve a abrir el código de la clase y mira la función valida(login,password). ¿Qué hace esta función? Explica qué hace para comprobar si ha encontrado el login y el password en la base de datos.
c) Por último realizaremos el registro de usuarios, para lo cual la función registro(login,password) deberá hacer una inserción en la BD después de comprobar que el login es válido. La cadena insert contiene la sentencia SQL de la inserción que deberemos ejecutar. Añade la instrucción necesaria para ejecutar esta sentencia. Compilar y probar que registra usuarios correctamente.
d) Como último paso nos queda integrar nuestro módulo de acceso a la BD en el chat. Integrar y hacer los cambios necesarios en el chat para que se utilice como módulo de acceso a los usuarios la clase AccesoBDUsuarios en lugar de AccesoFicheroUsuarios. (NOTA: Sólo es necesario cambiar una línea de código en la clase ServidorChat para adaptarlo). ¿Qué cambios hemos tenido que hacer? ¿Cuál es la ventaja de haber definido la interfaz AccesoUsuarios para los módulos de acceso a los datos de los usuarios? Hacer el cambio necesario y probar que el chat funciona correctamente.