Hace tiempo tuve la necesidad de conectarme a Postgres desde Java. En esa ocasión tuve algunos problemas para hacerlo, por lo que hago esta pequeña guía para todos aquellos que se inicien en JDBC. El código mas o menos puede funcionar con cualquier base de datos.
1 package prueba; 2 3 import java.sql.*; 4 5 public class ConexionPostgres { 6 7 public void consultar() { 8 String cc = "jdbc:postgresql://127.0.0.1/prueba?" + 9 "user=postgres&password=eureka"; 10 try { 11 Class.forName("org.postgresql.Driver"); 12 Connection conexion = DriverManager.getConnection(cc); 13 Statement comando = conexion.createStatement(); 14 String sql = 15 "SELECT nombre, apellido FROM clientes ORDER BY apellido"; 16 ResultSet resultado = comando.executeQuery(sql); 17 while(resultado.next()) { 18 String n = resultado.getString("nombre"); 19 String a = resultado.getString("apellido"); 20 System.out.println(n + " " + a); 21 } 22 resultado.close(); 23 comando.close(); 24 conexion.close(); 25 } catch(Exception e) { 26 System.out.println(e.getMessage()); 27 } 28 } 29 30 public static void main(String[] args) { 31 ConexionPostgres cp = new ConexionPostgres(); 32 cp.consultar(); 33 } 34 }
La línea 7 define un método llamado consultar. Dentro de esta función está el código para realizar la conexión a la tabla dentro de una base de datos Postgres.
La línea 8 define la cadena de conexión a la base de datos llamada prueba.
En la línea 11 se carga el controlador JDBC para postgres. Lo puedes descargar aquí.
La línea 12 inicia la conexión a la base de datos “prueba” del servidor postgres.
En la línea 13 se crea un objeto llamado conexion, el cual modela una conexión a un origen de datos. En la siguiente línea se crea un objeto String con la consulta a realizar.
La línea 16 ejecuta la consulta y almacena el resultado en un objeto de tipo ResultSet. Los objetos de este tipo, son unas estructuras dinámicas para almacenar resultados de consultas. En la siguiente línea se define un while que evalúa el resultado de la llamada al método “next” del objeto resultado. Los objetos de tipo ResultSet cuentan con una especie de cursor para seleccionar una fila del resultado de una consulta. Al realizar una llamada a “next”, el cursor se mueve a un registro. De esa manera se va accediendo uno a uno de los registros retornados. El método “next” retornará falso en caso de no haber un registro siguiente al cual apuntar. Por defecto, el cursor de registros apunta a ningún registro, por lo que por lo menos hay que ejecutar una vez el método “next” para obtener si quiera 1 registro. De esta manera, el while se encarga de ir moviendo el cursor de registros de manera automática. Dentro del while simplemente se accede a cada campo de la fila del registro seleccionado y se imprime en pantalla.
Las líneas 22, 23 y 24 liberan los recursos utilizados por los objetos Connection, Statement y ResultSet.
Para compilar, crear un directorio llamado prueba y almacenar dentro de él el archivo ConexionPostgres.java.
$ javac prueba/*.java
Para ejecutar, configurar el classpath de acuerdo a la ubicación del driver JDBC de postgres. En mi caso, he creado un directorio llamado lib dentro del directorio de mi aplicación. Dentro del directorio lib he puesto el archivo jar que contiene el controlador de jdbc. Ejemplo:
$ java -classpath ./prueba/lib/postgresql-8.2.jdbc4.jar:. prueba.ConexionPostgres
Hasta la próxima.
...
No hay comentarios:
Publicar un comentario