LiNpOx

Linux y Windows para informáticos

JDBC: Conectar Java con PostgreSQL

Posted by 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

Anuncios

24 comentarios to “JDBC: Conectar Java con PostgreSQL”

  1. killer said

    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 said

    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 said

    donde puedo encontrar el JDBC ????

  4. oftc007 said

    @ 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 said

    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 said

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

  7. alex said

    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 said

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

  9. JoeNatural said

    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 said

    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…

  12. nacho said

    grande!!! Muy bueno!

  13. […] The busiest day of the year was 8 de noviembre with 155 views. The most popular post that day was JDBC: Conectar Java con PostgreSQL. […]

  14. Carlos said

    Que tal, muy buen aporte el que han subido y la explicación esta muy muy bien, solo tengo un problemita y me gustaria saber cual es la posible solucion, en la linea de codigo donde se esta introduciendo la sentencia para ejecutar la consulta de la tabla cabecera_trabajo del ejemplo, observo que es unicamente una sentencia comun y corriente de un select, sin embargo, en el desarrollo que estoy realizando al momento de estar en esa linea, me da un mensaje de error el cual muestro a continuacion:

    ERROR: no existe la relación «estados»
    Position: 15

    Teniendo en cuenta que mi tabla que estoy consultando se llama estado, ¿esto por que ocurre? gracias de antemano, saludos!!!.

  15. Carlos said

    Disculpen mi erro, pero ya vi cual es el problema con esto, simplemente es el nombre de la tabla que en Postgres la habia definido con el nombre de Estados, es decir, con la primer letra en mayuscula, y debe de ser todo en minusculas, solo por ese detallito no daba paso hacia adelante, mil disculpas!!! ya esta solucionado!!!1

  16. Rafeik said

    muy bueno muchas gracias me ha servido mucho espero sigan asi

  17. James said

    muy bien documentado, excelente ejemplo, entraba ya en la desesperación pero este ejemplo me ayudo a aclararme y a lograr la conexión, muchisimas gracias

  18. George said

    Me salen estos errores:

    En la línea de Statement:
    incompatible types. Required: java.beans.Statement. Found: java.sql.Statement

    En la línea de .executeQuery:
    Cannot find symbol. Symbol: method executeQuery (java.lang.String). Location: class java.beans.Statement

  19. rafael said

    Gracias me sirvió mucho

  20. Mario Ruiz said

    Excelente aporte

  21. erick said

    Hola amigo no puedes hacer un videotutorial de esta conexion

  22. Angelica said

    hola !!! soy nueva en esto de las conexiones, quiero saber en que apartado va este de la conexion.java para realizar mi conexion

  23. Angel said

    Hola, pero tengo una duda, el archivo jdbc que descargo de la página de postgreSQL en dónde lo debo de poner

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: