lunes, 1 de diciembre de 2008

Conexión a base de datos

Para ello vamos a utlizar tres clases:
  1. Connection -->para realizar la conexión a la base de datos,
  2. PreparedStatement--> que será la que contenga la sentencia SQL.
  3. ResultSet --> que será la que contenga el resultado,es una especie de matriz (filas x columnas) y para acceder a las columnas se utiliza el método getXXX, getString() para cadenas de texto, getDouble() para decimales.getDate() para fechas.......
Vamos a ver los pasos que hay que hacer para la conexión:
  1. Primero tenemos que ver donde se encuentra la base de datos,mediante IP o JDBC-ODBC, por ejemplo dbc:db2:10.0.1.80:50000/BD1 (referencia directa) o jdbc:odbc:BD1 (referencia por ODBC).
  2. Cargar el driver correspondiente mediante Class.forName("driver"), por ejemplo Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
  3. Realizamos la conexión para ello necesitaremos el login ,password y url de la base de datos y lo haremos con la siguiente clase Connection con = DriverManager.getConnection(jdbc:odbc:BD1, "myLogin", "myPassword");
Resumen
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(jdbc:odbc:BD1, "myLogin", "myPassword");

Un objeto Statement es el que envía nuestras sentencias SQL al controlador de la base de datos. Simplemente creamos un objeto Statement y lo ejecutamos, suministrando el método SQL apropiado con la sentencia SQL que queremos enviar. Para una sentencia select el método a ejecutar es executeQuery. Para sentencias que crean o modifican tablas, el método a utilizar es executeUpdate.

Ya tenemos nuestra conexión a la base de datos ahora vamos a ver como se hacen las consultas.
Por ejemplo si queremos crear una tabla seria de la siguiente manera:

Statement stmt = con.createStatement();
String tabla="CREATE TABLE nombretabla " + "(nombreCampo1 tipo, nombreCampo2 tipo nombreCampo3 tipo, ...)";
stmt.executeUpdate(tabla);

Para insertar datos en la tabla seria de la siguiente forma:
stmt.executeUpdate("INSERT INTO nombre_tabla " +"VALUES ('valor1', valor2,valor3,,,,)");

Para sacar datos de la tabla seria:
ResultSet rs = stmt.executeQuery("SELECT campo1,campo2,campo3,... FROM nombre_tabla");
while(rs.next()){
System.out.println(rs.getString(campo1));
}