Ok mira sicario. Te voy a explicar un poquito como funcionan las conexiones a bases de datos en Java.
Primero, necesitas un driver de base de datos, de manera similar a los drivers que se instalan en güindous para tener acceso via ODBC. En java tenes que descargar los drivers para una interface de acceso a base de datos llamada JDBC.
Para el caso en particular, tu necesitas el driver MySQL Connector/J de la gente de MySQL, el cual puedes obtener desde la siguiente dirección:
http://www.mysql.com/products/connector/j/
Para el caso que nos interesa podes descargar la versión 3.1, que es la considerada "estable".
La diferencia entre la estable y la de desarrollo es obviamente la funcionalidad, sin embargo para el tipo de aplicacion que vas a desarrollar es mejor optar por la estable ya que no queremos perdidas de datos a causa de algun bug que pueda aparecer en una versión beta.
¿Como usar el driver JDBC?
Lo primero es instalar la librería en el sistema. Para instalarla lo único que es necesario es copiarla en algun directorio que sea parte del CLASSPATH de Java.
El CLASSPATH de java, es una variable de entorno del sistema en donde se especifican todos los directorios donde Java buscará las librerías.
Para simplificar las cosas, se puede instalar la librería en:
"C:\Archivos de programa\Java\jdk1.5.0_01\jre\lib"
Debes de notar que en el caso anterior, el JDK esta instalado en:
C:\Archivos de programa\Java\jdk1.5.0_01\jre\
El subdirectorio del Runtime se llama JRE, y el directorio donde se guardan las librerias se llama "lib"
Registrando el Driver
Pues bien ahora es que comienza lo interesante, JDBC no posee una interface "directa" para instalar el driver.
Lo que se hace entonces es indicarle a Java, como se llama el driver para que intente cargarlo de entre las librerías.
Esto se debe hacer antes de llamar a cualquier función que haga uso de la conexión a la base de datos. Si no lo hacemos de esta manera, java nos mostrará un error de "No suitable driver", o en español, que no se encuentra un driver adecuado.
La mejor manera de registrar el driver, es haciendolo ya sea en la función main de nuestro programa, o en el constructor del objeto principal de nuestro software.
En este caso se registrará el driver desde la función main:
// DBTest.java
public class DBTest {
public static void main(String args[]) {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch(Exception ex) {
// Manejar el error
}
}
}
Generando una conexion a la DB
Una vez registrado el driver, podemos hacer uso de la api de java SQL, para generar las consultas correspondientes.
Lo primero que tenemos que hacer es conectarnos a la base de datos, para ello se crea un objeto del tipo Connection, el cual representa una conexion a nuestra base de datos.
La conexion se realiza de la siguiente manera:
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");
// Hacer algo con la conexion
} catch (SQLException ex) {
// handle any errors
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
El objeto DriverManager, contiene una funcion para el establecimiento de conexiones a la base de datos.
El formato de la conexion es el siguiente:
jdbc:mysql://<servidor>/<DB>?user=<usuario>&password=<password>
Realizando consultas
En java, las consultas son guardadas en un objeto llamado ResultSet.
Un recordset muestra una fila de la consulta a la vez, para accesar los datos hacemos uso de la funcion next() para accesar al siguiente resultado.
Los valores almacenados en cada columna pueden ser convertidos a una serie de tipos de datos básicos en Java, haciendo uso de las funciones correspondientes del Resultset.
Para poder obtener un resultset, el primer paso es generar nuestro Query, o nuestra consulta.
Existe un objeto en JDBC que representa a las consultas, este objeto se llama Statement.
Podemos realizar una consulta simple de la siguiente manera (asumo que existe una conexion llamada conn y que ha sido previamente inicializada):
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT IDProducto,Nombre,Cantidad FROM ventas");
Statement, tiene una funcion llamada "executeQuery" que nos permite eejecutar la consulta SQL.
Los resultados de la consulta seran almacenados en la variable rs, nuestro ResultSet.
Para poder observar los datos devueltos por la consulta podemos utilizar el siguiente codigo:
while(rs.next()) {
System.out.print("IDProducto: "+rs.getInt("IDProducto")+" ");
System.out.print("Nombr: "+rs.getString("Nombre")+" "):
System.out.println("Cantidad: "+rs.getInt("Cantidad"));
}
Nuestro Resultset posee un cursor que representa la fila actual de nuestro resultado.
Por ejemplo si la consulta nos hubiera devuelto los siguientes datos:
(beforeFirst)
Fila 1
Fila 2
Fila 3
(afterLast)
El cursor siempre se ubica, en la posicion "beforeFirst" justo despues de realizar la consulta. Lo que significa que si llamamos a la funcion "next()", el cursor se pocisionara sobre el primer registro.
Si tratamos de leer los valores, antes de posicionarnos en el primer registro nos lanzara una excepcion.
Como dije antes, Una vez nos hemos posicionado en la fila correspondiente, podemos leer los datos de una columna especifica con las funciones "get", que tienen mas o menos este formato:
get<tipoDato>("<nombreColumna>");
dependiendo del tipo de dato que especifiquemos, el valor almacenado en la columna de la DB sera convertido al valor correspondiente y nos sera devuelto.
La salida para una funcion como la anterior podria ser la siguiente:
56 Churros 15
23 CocaCola 2
45 Jabon 4
Referencias:
Documentacion de MySQL Connector/J
http://grid.tsinghua.edu.cn/docs/mysql-jdbc/
Pueden encontrar una copia de la misma dentro del .zip del driver JDBC de MySQL