Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Problemas con JDBC

Estas en el tema de Problemas con JDBC en el foro de PostgreSQL en Foros del Web. Tengo una Function en Postgres que me retorna dos Cursores pero no se como recuperar los valores que me devuelven desde la aplicacion en java. ...
  #1 (permalink)  
Antiguo 01/06/2007, 20:29
 
Fecha de Ingreso: junio-2007
Mensajes: 4
Antigüedad: 16 años, 10 meses
Puntos: 0
De acuerdo Problemas con JDBC

Tengo una Function en Postgres que me retorna dos Cursores pero no se como recuperar los valores que me devuelven desde la aplicacion en java.

Alguien me podria ayudar con eso????
  #2 (permalink)  
Antiguo 02/06/2007, 23:09
 
Fecha de Ingreso: junio-2007
Mensajes: 4
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Problemas con JDBC

Lo que tengo es esta funcion:

CREATE FUNCTION _getdatos_persona_cursor (id1 integer, id2 integer) RETURNS SETOF refcursor AS
declare
ref1 refcursor;
ref2 refcursor;

begin

open ref1 for select * from persona where persona.id = $1;
return next ref1;

open ref2 for select * from persona where persona.id = $2;
return next ref2;
return;
end

Ahora en la aplicacion java cuando quiero obtener los valores de ref1 y ref2 y lo que me retorna es:
org.postgresql.jdbc3.Jdbc3ResultSet@125844f
org.postgresql.jdbc3.Jdbc3ResultSet@49d67c


CrearConeccion();
con.setAutoCommit(false);

pst = con.prepareStatement("Select * from _getdatos_persona_cursor(?,?)", ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

pst.setObject(1, id1);
pst.setObject(2, id2);
pst.execute();
rs = pst.getResultSet();
while(rs.next()){
System.out.println(rs.getObject(1));
}
CerrarConeccion();

Me pudieran decir que hago mal aqui.....
  #3 (permalink)  
Antiguo 04/06/2007, 02:10
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: Problemas con JDBC

Esto es lo que haces mal:

System.out.println(rs.getObject(1));
Estan mostrando por pantalla un objeto.
Accede a los campos del registro de la forma rs.getString(1), etc..
esto es un problema de java no de postgre y tampoco es un probema de JDBC....

Un saludo
  #4 (permalink)  
Antiguo 04/06/2007, 08:54
 
Fecha de Ingreso: junio-2007
Mensajes: 4
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Problemas con JDBC

Si mira seyko, eso era uno de los problemas pero lo que me devuelve la funcion son 2 cursores por lo que System.out.println(rs.getString(1)); lo que me imprime es:
<unnamed portal 1>
<unnamed portal 2>

que son los nombre de los cursores, ahora lo que no se es como capturar cada uno de estos cursores y mostrar lo que ellos tienen.
  #5 (permalink)  
Antiguo 05/06/2007, 07:58
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: Problemas con JDBC

Pues ya está tienes dos cursores, vuelvelos a abrir como has abierto el cursor principal (el que te devuelve la consulta).

Un saludo
  #6 (permalink)  
Antiguo 05/06/2007, 11:31
 
Fecha de Ingreso: junio-2007
Mensajes: 4
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Problemas con JDBC

Ya Seyko, trabajo completo.
gracias era eso mismo, lo probé y lo hizo bien.


Lo que no se es porque tengo que usar:
con.prepareStatement("Select * from _getdatos_persona_cursor(?,?)")
para que me devuelva un ResultSet.
y no un prepareCall.
Si uso este ultimo me devuelve null.
  #7 (permalink)  
Antiguo 05/06/2007, 11:53
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: Problemas con JDBC

Pues porque prepareCall es para llamadas a procedimientos almacenados...

Estos temas se suelen aclarar bastante bien mirando la API!

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:43.