miércoles, 27 de abril de 2011

Conectar Java con bases de datos (derby y mysql)

Del libro de Deitel vienen varios ejemplos de como hacerlo (conectar java con mysql o con derby), pero en la práctica esto puede resultar no tan evidente.

Voy a basar esta entrada en el tema 25.10 del libr de Como programar en Java (7a. edición) de Deitel & Deitel.

En linux debemos tener instalados los siguientes paquetes: (esos son los que tengo en mi sistema)

sun-java6-bin
sun-java6-jdk
sun-java6-jre
sun-java6-javadb --> este nos instala el derby.
libmysql-java
mysql-server-5.1
mysql-server-core-5.1

Sin modificar nada de los codigos que vienen en el CDROM, puedes crear la base de datos con el comando "ij", todo compila muy bien, pero al ejecutarlo marca errores, de que no sabe nada del conector sql ..

java.sql.SQLException: No suitable driver found for jdbc:derby:LibretaDirecciones
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at ConsultasPersona.(ConsultasPersona.java:29)
at MostrarLibretaDirecciones.(MostrarLibretaDirecciones.java:59)
at MostrarLibretaDirecciones.main(MostrarLibretaDirecciones.java:357)

para corregir este error ejecutamos :
java -cp /usr/lib/jvm/java-6-sun/db/lib/derby.jar:/usr/lib/jvm/java-6-sun/db/lib/derbytools.jar:. MostrarLibretaDirecciones

y con esto funciona perfectamente.

Para el caso de hacerlo funcionar con MySQL, hay que modificar unas cuantas lineas:

En el archivo direccion.sql
linea 5: IDDireccion INT NOT NULL AUTO_INCREMENT,
agregamos la linea 10: key(IDDireccion)

Luego de esto creamos la base de datos y asignamos permisos a los usuarios, y ejecutamos el codigo sql sobre la base de datos.

En el código del archivo ConsultaPersona.java, modificamos 2 lineas:

linea 14: private static final String URL = "jdbc:mysql://localhost/LibretaDirecciones";
cambiamos el controlador de derby a mysql.

linea 29: DriverManager.getConnection( URL+"?user="+NOMBREUSUARIO+"&password="+CONTRASENIA );
el parametro que se le pasa es un poco diferente, tiene forma de url para agregarle el user / password al manejador.

compilamos todo con javac *java.

para ejecutarlo :

java -cp /usr/share/java/mysql-connector-java.jar:. MostrarLibretaDirecciones

y con eso podemos tener la aplicación funcionando.