Conexión a postgres desde Java

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.

5 Respuestas a “Conexión a postgres desde Java”


  1. 1 Jonatan Octubre 22, 2008 a las 8:13 pm

    mmmm… bueno… me da un error… que es el que no existe la clase no existe, java.lang.ClassNotFoundException: org.postgresql.Driver.

    Alguien que me ofrezca una solución?

  2. 2 gnucesar Octubre 23, 2008 a las 2:16 pm

    ¿Descargaste el driver JDBC para Postgres?

    Si es así, asegúrate de que estés indicando la ruta del driver en la compilación (parámetro classpath.

  3. 3 José Mendoza Marzo 9, 2009 a las 9:00 pm

    Hola, fíjate que necesito conectar una bd de postgres con java, ejecute tu programa y entra a la excepción, ojalá y me puedas ayudar.

  4. 4 Juan D. Duran Mayo 21, 2009 a las 5:47 pm

    eso así funciona, esa Exception la lanza porque no encuentra el driver, tienen que estar pendiente del classpath, ese es el problema..

  5. 5 Carlos Septiembre 7, 2009 a las 12:14 am

    Hola,
    mira estoy intentando conectar desde java a una BD postgres, pero al ejecutar la conexion me sale un error que dice que no encuentra la BD.

    Gracias


Escribe un comentario