Cómo conectarse a una base de datos en PostgreSQL utilizando JDBC

PostgreSQL es, hoy por hoy, uno de los mejores manejadores de base de datos relacionales libres y, desde mi particular punto de vista, una mejor opción frente a MySQL. Bueno, en esta oportunidad voy a mostrarles la manera de cómo conectarse a una base de datos en PostgreSQL utilizando Java y su biblioteca JDBC. 

Como pre-requisito debemos tener creada nuestra base de datos utilizando Pgadmin llamada 'test' luego de lo cual debemos ejecutar el siguiente script:

CREATE TABLE usuarios
(
  nombres text,
  apellidos text,
  id serial NOT NULL,
  CONSTRAINT usuarios_pkey PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE usuarios
  OWNER TO postgres;
Una vez creada nuestra base de datos es momento de relizar la conexión; para esto debemos agregar el conector que nos brinda PostgreSQL en el siguiente enlace: http://jdbc.postgresql.org/ y anexarlo a nuestro proyecto tal como se muestra en la siguiente figura:
Figura. Vista del árbol de dependencias de un proyecto en Netbeans
La clase ConexionSQL debe quedar como se muestra a continuación:

package biz.csti.pg;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 *
 * @author Rolando
 */
public class ConexionSQL {

    static String cadenaConexion = "jdbc:postgresql://127.0.0.1/test?" + "user=postgres&password=admin";

    public static void main(String[] arg) {
        Connection conexion = null;
        Statement sentencia = null;
        ResultSet resultado = null;
        try {
            Class.forName("org.postgresql.Driver");
            conexion = DriverManager.getConnection(cadenaConexion);
            sentencia = conexion.createStatement();
            String consultaSQL = "SELECT * FROM USUARIOS";
            resultado = sentencia.executeQuery(consultaSQL);
            while (resultado.next()) {
                Long id = resultado.getLong("id");
                String nombres = resultado.getString("nombres");
                String apellidos = resultado.getString("apellidos");
                System.out.println(id + "t" + nombres + "t" + apellidos);
            }
        } catch (Exception e) {
            e.printStackTrace();
            conexion = null;
        } finally {
            if (resultado != null) {
                try {
                    resultado.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (sentencia != null) {
                try {
                    sentencia.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (conexion != null) {
                try {
                    conexion.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
Como podemos observar la manera de conectarse es bastante intuitiva, lo único que debemos cambiar es la contraseña en la cadena de conexión siguiente: 'jdbc:postgresql://127.0.0.1/test?" + "user=postgres&password=<contraseña>'. Espero que este ejemplo les sea de utilidad, muy pronto estaré presentando más cosas relacionadas a este gestor de base de datos.

Comentarios

  1. Oe bro tienes exelente Informacion en tu BLog .........

    ResponderBorrar
  2. Hola, la conexión fue un éxito pero quiero saber como se hacen las consultas (select) por ejemplo o si se pueden actualizar datos o eliminar,etc. te agradecería si respondieras gracias

    ResponderBorrar
    Respuestas
    1. Hola Cristian

      En el proyecto publicado muestro la manera de cómo hacer un SELECT.
      Saludos.

      Borrar
  3. como quedaría el código si quisiera insertar,actualizar o eliminar datos? es que no hallo con el chiste, GRACIAS

    ResponderBorrar
  4. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  5. hola hice lo mismo pero me sale este Error
    rg.postgresql.util.PSQLException: ERROR: no existe la relación «pais»
    Position: 15
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:374)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)
    at Prueba.main(Prueba.java:35)

    public class Prueba {

    static String cadenaConexion = "Jdbc:postgresql://localhost:5432/Pais" + "user=postgres&password=mayita";

    public static void main(String[] arg) {
    Connection conexion = null;
    Statement sentencia = null;
    ResultSet resultado = null;
    String url = "Jdbc:postgresql://localhost:5432/Pais";
    try {
    Class.forName("org.postgresql.Driver");
    conexion = DriverManager.getConnection(url,"postgres","mayita" );


    sentencia = conexion.createStatement();
    String consultaSQL = "SELECT * FROM Pais;";
    resultado = sentencia.executeQuery(consultaSQL);
    while (resultado.next()) {
    // Long id = resultado.getLong("Id");
    String apellidos = resultado.getString("Pais");

    String nombres = resultado.getString("codigoP");
    System.out.println( "t" + nombres + "t" + apellidos);
    }
    } catch (Exception e) {
    e.printStackTrace();
    conexion = null;
    } finally {
    if (resultado != null) {
    try {
    resultado.close();
    } catch (Exception e) {
    // e.printStackTrace();
    }
    }
    if (sentencia != null) {
    try {
    sentencia.close();
    } catch (Exception e) {
    //e.printStackTrace();
    }
    }
    if (conexion != null) {
    try {
    conexion.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }

    }
    }

    ResponderBorrar
  6. Excelente, funciona muy bien. Gracias por compartir.

    ResponderBorrar
  7. ERROR: no existe la relación «pais» . Yo tuve el mismo rollo, y al revisar como pgAdmin lo hacia, resulta que requiere comillas sobre la tabla, en ese cso debería ser: "select * from \"pais\""
    y listo funciona

    ResponderBorrar

Publicar un comentario