LiNpOx

Linux y Windows para informáticos

JDBC: Conectar Java con PostgreSQL

Publicado por oftc007 en 23 Mayo 2008

JDBC (Java Data Base Connectivity), es el API para la conexión a bases de datos desde el lenguaje Java, lo que nos permite ejecutar operaciones sobre bases de datos, realizando estas operaciones con lenguaje SQL de la base de datos.

Para realizar esta conexion aparte de conocer el lenguaje Java y tener todo lo necesario para compilar y ejecutar programas en este lenguaje, necesitamos tener instalado del driver JDBC en nuestra PC, para eso vamos al gestor de paquetes synaptic y descargamos el paquete

libpg-java

Luego que tenemos el driver instalado, creamos un archivo con nuestro editor de texto preferido y pegamos el siguiente codigo:

import java.sql.*;

class conexion{
public static void main(String[] args)
{
String driver = “org.postgresql.Driver”;
String connectString = “jdbc:postgresql://localhost:5432/Taller”;
String user = “of”;
String password = “1234″;

try{
Class.forName(driver);
Connection con = DriverManager.getConnection(connectString, user , password);
Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery(“SELECT * FROM cabecera_trabajo”);

while (rs.next()){
System.out.println(“CEDULA ” + rs.getString(“cedula_cliente”));
}

stmt.close();
con.close();

}

catch ( Exception e ){
System.out.println(e.getMessage());
}
}
}

Luego de eso guardamos el archivo con el nombre de “conexion.java”, o el nombre que quieran, pero siempre poniendo al final “.java”.

Pasemos a explicar las partes mas resaltantes del codigo para entender que estamos haciendo.

Lo primero que hacemos es darle un nombre a nuestra clase, que debe coincidir con el nombre del archivo, luego de eso agregamos el codigo en el main.

String driver = "org.postgresql.Driver";
String connectString = "jdbc:postgresql://localhost:5432/Taller";
String user = "of";
String password = "1234";

En esta parte del codigo estamos declarando e inicializando variables del tipo string con toda la informacion necesaria para la conexion a la base de datos, primero tenemos el nombre del driver que es “org.postgresql.Driver”, luego un string donde colocamos la base de datos donde nos queremos conectar, siguiendo el formato:

jdbc:postgreslq://ubicacion_de_BD:puerto/nombre_BD

Luego tenemos el string con el username y password necesarios para conectarnos a la base de datos.

Class.forName(driver);
Connection con = DriverManager.getConnection(connectString, user , password);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM cabecera_trabajo");

Cargamos el driver en memoria con la funcion “Class.forName”, pasandole como parametro el string donde asignamos el nombre del driver que queremos usar.

Luego de eso definimos un objeto del tipo “connection” para realizar la conexion con la base de datos, la funcion encargada de hacer la conexion es “DriverManager.getConnection”, que recibe como parametros el string con la informacion de la base de datos, y los string de username y password.

Luego de eso definimos un objeto del tipo Statement, el cual nos permitira realizar las diferentes operaciones sobre nuestra base de datos mediante sentencias SQL.

Posteriormente definimos un objeto del tipo “ResultSet” (hoja de resultados), donde almacenaremos el resultado del query que ejecutemos. Para ejecutar el query usamos la funcion “executeQuery”, que recibe como parametros un string que contenga la setencia del query que queremos ejecutar.

while (rs.next()){
System.out.println("CEDULA " + rs.getString("cedula_cliente"));
}

Ya que tenemos el resultado que arrojo el query en nuestro objeto del tipo “ResultSet”, debemos mover el apuntador, para recorrer todas las tuplas que devolvio el query. Para mover el apuntador usamos la funcion “next()”, la cual colocamos como condicion de un while (mientras existan tuplas que mostrar), y vamos imprimiendo en pantalla el campo o campos que queremos mostrar.

La funcion para obtener los datos de la hoja de resultados es “getString”, que recibe como parametro un string con el nombre del campo que queremos mostrar, este nombre debe ser identico (respetando mayusculas y minisculas) a como esta definido en nuestra base de datos.

stmt.close();
con.close();

Por ultimo cerramos el “Statement” y la conexion a la base de datos.

catch ( Exception e ){
System.out.println(e.getMessage());
}

Como un ultimo detalle, observamos en el codigo que tenemos un try, el cual captura una excepcion (error) que suceda tanto al momento de hacer la conexion o ejecutar el query, la cual la capturamos en la variable e, que se imprimira en pantalla.

Ya que tenemos guardado nuestro archivo, desde un terminal vamos al directorio donde lo guardamos y lo compilamos.

javac conexion.java

Para ejecutarlo, debemos especificarle al classpath que queremos usar el driver jdbc por lo que le diremos la ubicacion la cual es: /usr/share/java.

java -cp .:/usr/share/java/postgresql.jar conexion

11 comentarios para “JDBC: Conectar Java con PostgreSQL”

  1. killer escribió

    escapao!!!!!!!!! a mi me funciono perfecto, solo queria aclarar que las comillas me daban bateo, por si le sucede a alguien mas, solo cambien las comillasde acuerdo a la distribucion de su teclado…gracias hombre,me salvaste la vida

  2. Gerardo Vazquez Sanchz escribió


    import java.sql.*;
    class conexion{
    public static void main (String[] args)
    {
    String driver=”org.postgresql.Driver”;
    String connectString=”jdbc:postgrest://localhost:5432/hojas”;
    String user=”postgres”;
    String password=”12345″;

    try {
    Class.forName(driver);
    Connection con= DriverManager.getConnection(connectString,user,password);
    Statement stmt= con.createStatement();

    ResultSet rs= stmt.executeQuery(“Select * from dept”);
    while (rs.next()){
    System.out.println(“deptno”+ rs.getString(“deptno”));

    }
    stmt.close();
    con.close();

    }
    catch(Exception e){
    System.out.println(e.getMessage());
    }
    }
    }

  3. tany escribió

    donde puedo encontrar el JDBC ????

  4. oftc007 escribió

    @ Gerardo Vazquez Sanchz

    Tu codigo se ve bien, en la salida de tu programa no se muestra ningun error?. El unico lugar donde puede haber un posible error, es al momento de traerte el valor, ya que estas usando “getString” y es posible que ese campo sea de otro tipo de dato. Revisa las otras funciones para traer los diferentes tipos de datos.

    @ Tany

    Descargando el paquete “libpg-java” desde Synaptic o un terminal ya tienes JDBC en tu PC.

    Saludos!

  5. Rasputin escribió

    Buen Día …

    Muy buen aporte, pero tengo una duda,
    La base de datos a la que tengo que acceder tiene 4 esquemas, me podrías hechar una mano para saber en que parte debo especificar el esquema que tengo que acceder.

  6. arturo escribió

    ¿FUNCIONA IGUAL EN RED? OSEA ¿NO SE TIENE QUE ESPECIFICAR EL NOMBRE DE LA MAQUINA DONDE ESTA INSTALADA LA BASE DE DATOS?

  7. alex escribió

    en windows hay que colocar el nombre junto con la ruta del driver en el classpath. luego se puede teclear simplemente java conexion para correrlo

  8. klima escribió

    hola,tengo dudas con eso del driver(donde lo encuentro) y configurar el classpath,les agradesco si me aclaran,saludos.

  9. JoeNatural escribió

    hola en el sitio http://jdbc.postgresql.org/download.html exiten varias versiones de el conector como no chapo cual es diferencia entre el jdbc normal y el driver EE enterprise editions

  10. toño escribió

    chido por quien subio el programa me sirvio mucho

  11. doctor.. lo maximo.. se le agradece… usar PostgreSQL y Java es lo maximo…

    la gran dificultad es el poder conectar ambos(Java y PostgreSQL)

    Me ha servido mucho… y se le agradece…

Escribe un comentario

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>