Está en la página 1de 6

Master Internacional en Software Libre

Bases de Datos
Ejemplo prctico Java + JDBC + MySQL
Esta gua/ejemplo indica los pasos a seguir para realizar la instalacin del Java SE
Development Kit (JDK) de Sun y del driver JDBC de MySQL, para poder acceder desde los
programas desarrollados en java, a los datos contenidos en dicho SGBD.
Software necesario:
MySQL 5.0 Community: http://dev.mysql.com/downloads/mysql/5.0.html#downloads
JDK 6u1: http://java.sun.com/javase/downloads/index.jsp
Drivers JDBC: http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.0.4.tar.gz/from/http://mysql.rediris.es/
Se deber descargar la versin de cada programa adecuada al entorno y SO utilizado. Durante
las instalaciones es interesante utilizar la ruta de instalacin que proponen los programas por
omisin.
El driver JDBC est desarrollado en java, por lo que es comn para todos los entornos.
Pasos a seguir:
Instalar MySQL 5.0 segn instrucciones (del fabricante o de la comunidad) para el entorno
utilizado.
Instalar JDK 6u1 segn instrucciones, prestando especial atencin a incluir el nombre de los
directorios de instalacin en la variable CLASSPATH del sistema (ver siguiente punto).
Descomprimir el fichero mysql-connector-java-5.0.4.zip (o gz) y copiar el ejecutable mysqlconnector-java-5.0.4-bin.jar en un directorio con una ruta de acceso conocida y sencilla.
Configuracin variables de entorno:
Es imprescindible crear la variable de entorno CLASSPATH para indicar la ruta de acceso al
driver JDBC y colocar en la variable PATH las rutas de acceso del JDK.
En entorno Windows, accederemos a Propiedades del Sistema pulsando con el botn derecho
del ratn sobre Mi Pc.

Master Internacional en Software Libre


Bases de Datos
Desde la opcin Variables de entorno, crearemos la variable CLASSPATH y en valor variable
introduciremos la ruta de acceso al fichero mysql-connector-java-5.0.4-bin.jar, incluyendo el
nombre de este al final, y un punto y coma y un punto adicional.

En el caso de haber guardado el fichero mysql-connector-java-5.0.4-bin.jar en el directorio


c:\UOC\Bases de Datos\JDBC, en contenido de Valor de Variable debera ser:
C:\uoc\Bases de datos\JDBC\mysql-connector-java-5.0.4-bin.jar;.
(atencin a la existencia del punto del final!)
En la zona inferior de la ventana Variables de entorno, deberemos indicar la ruta del java (una
vez verificado que la instalacin no la haya incluido), aadindola al final del todo de la variable
PATH (a continuacin de la ruta existente).
De existir por ejemplo la ruta:
C:\Archivos de programa \PHP\;%SystemRoot%\system32;%SystemRoot%; C:\informix\bin; C:\Archivos
de programa\Java\jdk1.6.0_01\bin

Aadiramos (segn nuestro equipo) la ruta marcada en azul.

Master Internacional en Software Libre


Bases de Datos
Prueba de funcionamiento del compilador Java
Editaremos un fichero con el siguiente contenido:

public class test {


public static void main (String[] args) {
System.out.println("Hello java World!");
}
}

Lo guardaremos con el nombre test.java (es muy importante respetar las


maysculas/minsculas del nombre (debe de coincidir con el nombre que se declara en la
primera lnea del programa java).
Para compilar el programa abriremos una consola del Smbolo del sistema, nos ubicaremos en el
directorio donde se ha almacenado dicho programa y ejecutaremos el comando:
javac test.java
Si no se indica ningn error, deberamos revisar el directorio donde nos encontramos para
verificar que se ha generado el fichero test.class
Si todo es correcto, podemos pasar a ejecutar dicho programa.
java test
Nos tendra que aparecer en pantalla:

Hello java World!


Con esta prueba hemos verificado el correcto funcionamiento del compilador y de la maquina
virtual de java.

Prueba completa de funcionamiento, con acceso a datos mediante JDBC


Como aplicacin de ejemplo crearemos un programa bsico que preguntar por consola un
nombre y una fecha de nacimiento. El programa realizar una consulta a las bases de datos que
se habrn cargado, a efectos de indicarnos da de la semana de nacimiento, signo del zodiaco, y
personalidades famosas con las que coincide la fecha de nacimiento.
Empezaremos creaando las tablas necesarias. Abriremos el editor SQL estndar de MySQL y
ejecutaremos;

CREATE TABLE ZODIACO (


ID INT PRIMARY KEY,

Master Internacional en Software Libre


Bases de Datos
NOMBRE VARCHAR(15),
FECHA_INICIO DATE,
FECHA_FIN DATE
);

CREATE TABLE DIASSEMANA (


ID INT PRIMARY KEY,
NOMBRE VARCHAR(10)
);

CREATE TABLE NACIMIENTO (


ID INTEGER PRIMARY KEY,
FECHA_NACIMIENTO DATE,
NOMBRE VARCHAR(40)
);

Realizaremos la carga de datos de los ficheros adjuntos; diassemana.csv, zodiaco.csv y


nacimientos.csv, ejecutando las siguientes instrucciones;
LOAD DATA INFILE 'c:/nacimientos.csv' INTO TABLE nacimiento FIELDS TERMINATED
BY ';' LINES TERMINATED BY '\r\n';

LOAD DATA INFILE 'c:/zodiacos.csv' INTO TABLE zodiaco FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\r\n';

LOAD DATA INFILE 'c:/diassemana.csv' INTO TABLE diassemana FIELDS TERMINATED BY


';' LINES TERMINATED BY '\r\n';

(adaptando la ruta de carga al sistema operativo utilizado y eliminando el \r en el caso de utilizar Linux) .

Copiaremos el fichero miinfo.java en el directorio de trabajo que utilicemos.


El contenido del fichero es:

//
// Ejemplo acceso a datos a una base de datos MySQL, desde Java mediante JDBC.
//
// Han de existir las tablas y los datos cargados segn gua ejemplo
// 20070502
//
import
import
import
public
public

java.io.*;
java.lang.*;
java.sql.*;
class miinfo {
static void main(String[] args) throws Exception {

Master Internacional en Software Libre


Bases de Datos
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String passwd = "1234";
Class.forName(driver);
Connection conexion = DriverManager.getConnection(url, user, passwd);
// Pedimos desde consola se introduzca ao nacimiento (tenemos en cuenta el tratamiento de
errores)
String lsNombre = null;
String lsFecha = null;
BufferedReader dis = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("Introduce tu nombre: ");
while ((lsNombre = dis.readLine()) == null);
System.out.println("Introduce la fecha nacimiento en formato (AAAA/MM/DD): ");
while ((lsFecha = dis.readLine()) == null);
}
catch (Exception ex) {System.err.println("ERROR I/O");}
// Consultamos da de la semana
Statement dia = conexion.createStatement();
ResultSet rsdia = dia.executeQuery ("select * from diassemana where id = dayofweek('"+lsFecha+
String diaSemana = null;
// Recogemos el da de la semana de la consulta realizada
while (rsdia.next()) {
diaSemana = rsdia.getString(2);
}
// Consultamos signo del zodiaco
Statement zoo = conexion.createStatement();
ResultSet rszoo = zoo.executeQuery ("select * from zodiaco where dayofyear('"+lsFecha+"')
between String nombreSigno = null;
// Recogemos el signo del zodiaco desde la consulta realizada
while (rszoo.next()) {
nombreSigno = rszoo.getString(2);
}
System.out.println("\nHola " + lsNombre + ". Naciste un " + diaSemana + " y eres " + nombreSigno
// Comprobamos si existen personas que hayan nacido el mismo da del ao
Statement cumple = conexion.createStatement();
ResultSet rscumple = cumple.executeQuery ("select count(*) from nacimiento where
dayofyear(fecha_String numCumple = null;
// Recogemos el signo del zodiaco desde la consulta realizada
while (rscumple.next()) {
numCumple = rscumple.getString(1);
}
if (numCumple == "0") {
System.out.println("\nNo encontrados famosos que cumplan aos el mismo da que tu, prueba con
}
else {
System.out.println("\n-Encontrados " + numCumple + " famosos que cumplen aos el mismo da!"
// Recorremos los aniversarios para mostrar los famosos coincidentes
Statement famo = conexion.createStatement();
ResultSet rsfamo = famo.executeQuery ("select nombre, EXTRACT(YEAR FROM fecha_nacimiento),
abs(miinfo.java 02/05/2007 13:51
// Recogemos el signo del zodiaco desde la consulta realizada
while (rsfamo.next()) {
System.out.println(rsfamo.getString(1) + " naci en " + rsfamo.getString(2) + " y os llev }
}
// Cerramos la conexin a la base de datos.
conexion.close();
}
}

Para compilarlo (una vez modificadas las lneas donde se indica el usuario y la contrasea de
acceso a la base de datos), abriremos una consola de Smbolo del sistema, nos situaremos en el
directorio de trabajo, y ejecutaremos la instruccin de compilacin javac miinfo.java (segn
imagen):

Master Internacional en Software Libre


Bases de Datos

Para ejecutarlo utilizaremos la instruccin java miinfo


Ejemplo del funcionamiento del programa:

(a efectos de simplificacin no se realiza la comprobaciones de correccin de fecha, ni la verificacin de todos los


posibles errores que pueden ocurrir en tiempo de ejecucin).

También podría gustarte