Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta
>

Bases de Datos

 

Archivos necesarios:

En este trial aprenderemos un poco sobre cómo utilizar bases de datos en Java. Las bases de datos nos permiten guardar una gran cantidad de datos y acceder a ellos de una manera rápida y segura. Se utilizan bases de datos sobre todo en programas que van a manejar una gran cantidad de información y que necesiten acceder como un programa de expediente médico. Utilizar una base de datos no es algo trivial y a menos que su solución necesite una base de datos es más recomendable utilizar otras opciones (por ejemplo archivos binarios)

Para hacer un programa que tenga acceso a bases de datos necesitamos incluir el J/Connector del manejador de bases de datos que queramos utilizar y después cambiar el classpath de nuestra aplicación para que utilice el conector por lo que probar los programas es algo complicado en un IDE que no permita establecer el classpath. La versión del J/Connector que utilizamos en este trial es 3.1.12 pero los comandos deben ser iguales para versiones más nuevas.

Main.java
MySQL J/Connector

 

¿Cómo utilizar bases de datos?

Base de Datos

Una base de datos es un conjunto de archivos de datos interrelacionados entre si. Es fácil imaginarse una base de datos como un grupo de hojas de cálculo. En la base de datos de la izquierda podemos ver que las dos hojas están relacionadas por la columna "Ciudad".

Si guardaramos el nombre de la ciudad en la columna ciudad de la primera tabla entonces gastaríamos espacio porque se repetiría varias veces el mismo nombre mientras que guardar un número hace que se ocupe muy poco espacio.

Utilizar bases de datos es algo sencillo una vez que se entienden las bases. Primero que nada necesitamos saber un poco de SQL, después necesitamos saber cómo montar y desmontar servidores y una vez que ya tengamos el servidor corriendo con una base de datos podemos utilizarla en Java. El alcance de este trial se limita únicamente a hacer un programa en Java.

 

Open

Lo primero para podernos conectar a una base de datos es crear la conexión. Para crear la conexión tenemos que utilizar un objeto Connection que se encuentra en el paquete java.sql. Este objeto nos sirve para crear la conexión, la conexión la creamos mediante dos métodos.

Primero debemos utilizar el método newInstance() de la clase del driver para crear una nueva instancia del conector. Esto lo hacemos mediante el método Class.forName(nombreDriver).newInstance(). Para saber el nombre del driver hay que consultar la documentación del conector que utilizamos, en el caso del JConnector que se incluye en este trial es com.mysql.jdbc.Driver

Después tenemos que encontrar el connection string para nuestro manejador de bases de datos. En el caso de MySQL el connection string es jdbc:mysql://direccionBD/schema, login, pass y utilizando este string de conexión debemos llamar el método getConnection() de DrvierManager que nos regresa una conexión.

 

El siguiente paso para trabajar con bases de datos es realizar un query. Para realizar un query tenemos que crear un Statement y un ResultSet. El Statement se encarga de comunicarse con la base de datos mientras que el ResultSet se encarga de guardar los datos y permitirnos acceder a ellos de manera sencilla. query
Para crear el statement debemos utilizar el método createStatement() de nuestra conexión. Este método recibe dos parámetros, el primero nos indica si los ResultSet creados con este Statement pueden ser recorridos en una sola dirección o en dos direcciones (es más rápido en una sola dirección pero para volver a un registro anterior tenemos que empezar desde el primero) y el segundo parámetros nos dice si podemos actualizar la base de datos con datos nuevos. Una vez que ya tenemos un Statement debemos utilizar el método executeQuery() que recibe un query para obtener un ResultSet con los datos que regrese la base de datos.
get

Un ResultSet siempre empieza en la fila -1 de datos por lo que hay que utilizar el método next() para irnos a la primera fila con información. Una vez ahí podemos utilizar varios métodos para obtener datos, los cuatro principales son:

  • rs.getInt()
  • rs.getDouble()
  • rs.getBoolean()
  • rs.getString()

Estos cuatro métodos reciben ya sea un String que representa el nombre de la columna o un Integer que representa el índice de la columna. Estos no son los únicos métodos que podemos utilizar para leer datos pero si son los más importantes.

 

Para obtener información sobre las columnas de un ResultSet es necesario utilizar un objeto de tipo ResultSetMetaData. Este objeto tiene dos métodos muy útiles para saber las propiedades de las columnas. DML

El primero es getColumnCount() que nos permite saber cuántas columnas tenemos en un ResultSet y el otro es getColumnName() que recibe un Integer que representa el índice de la columna de la que queremos el nombre.

 

DML Para ejecutar un comando DML debemos utilizar el método execute de nuestro objeto Statement Con este método podemos insertar, modificar o eliminar registros en la base de datos.
Cuando ya no utilicemos la conexión con la base de datos debemos recordar cerrarla. Para hacer esto utilizamos el método close() de nuestro objeto de conexión. Close

 

Una vez que ya tenemos nuestro programa debemos compilarlo. Para correrlo utilizamos el comando:

java -classpath rutaDelConnector; nombreDelPrograma.class

por ejemplo, para una clase que se llama Main cuando el conector está en un directorio llamado lib utilizamos el comando:

java -classpath ./lib/mysql-connector-java-3.1.12-bin.jar; Main.class

si ya convertimos nuestro programa a un .jar podemos utilizar el comando

java -classpath ./lib/mysql-connector-java-3.1.12-bin.jar; -jar Programa.jar

 

Las bases de datos son muy poderosas pero es complicado su mantenimiento y su uso. A menos que estén totalmente seguros de que su programa requiere una base de datos no la utilicen, utilicen archivos de texto o archivos binarios.

RegresarRegresar

                 
Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta