Re: Postgres JDBC - Mailing list pgsql-jdbc

From Barry Lind
Subject Re: Postgres JDBC
Date
Msg-id 3F0C3966.30705@xythos.com
Whole thread Raw
In response to Postgres JDBC  (Amel Mammar <mammar@iie.cnam.fr>)
List pgsql-jdbc
Arun,

Here are a couple of things I would recommend:

1) Don't include transaction control code in your sql.  Use the JDBC
methods to do this (i.e. setAutocommit()).
2) Don't include more than one statement in a sql string.  (i.e. "FETCH
ALL IN funcursor; CLOSE funcursor;", should be two different calls
"FETCH ALL IN funcursor" and "CLOSE funcursor").  This may work now, but
likely won't work in the future.
3) Turn on SQL statement tracing in the server (set log_statement=ture
in postgresql.conf file).  This will allow you to see the exact
statements being sent to the server from the driver and will likely help
you identifiy how/why this isn't working.
4) The latest driver builds can be found at jdbc.postgresql.org
5) If you have any further questions, please send them to the
pgsql-jdbc@postgresql.org mail list.  That way others can contribute and
everyone benefits from the exchange in information.

thanks,
--Barry


Arun Desai wrote:
> Barry,
>         We are using Postgresql 7.3.3. We are encountering following problems when JDBC is used to access Postgresql
DBfrom a Java application (using JDK1.3.1_06).  
>
> My test program does the following:
> a. get a DB connection from a connection pool. For ex: con
>
> b. Using Connection obtained in a) execute a function that returns a Refcursor.
>     In Java I do the following:
>
>     String str = "begin; select sp_test_select (?, 'funcsursor');"
>     PreparedStatement pstmtTmp = con.prepareStatement(str);
>     pstmtTmp.setInt(1, 1);
>     ResultSet rsTmp = pstmtTmp.executeQuery();
>     PreparedStatement pstmt = conn.prepareStatement("FETCH ALL IN funcursor; CLOSE funcursor;");
>     ResultSet rs = pstmt.executeQuery();
>     // Use rs
>     .
>     .
>     rs.close();
>     pstmt.close();
>     rsTmp.close();
>     pstmtTmp.close();
>
>     This is my Postgresql Function that returns a refcursor.
>
>     CREATE OR REPLACE FUNCTION sp_test_select (numeric, refcursor) returns refcursor as '
>     DECLARE
>         id_no alias for $1;
>         refc alias for $2;
>         BEGIN
>             OPEN refc FOR SELECT * FROM testtable WHERE idno = id_no;
>         RETURN refc;
>     END;
>     ' LANGUAGE 'plpgsql';
>
>
> c. Using the same Connection object obtained in a) execute a function that does not return Refcursor but updates some
table.This step is carried out after executing step     b). This update is failing. No exception but update does not
takeplace. If I skip step b) and carry out only steps a) and c) update works fine. 
>
>
> Am I doing something wrong in step b).
>
>
> Also where do I get the latest JDBC driver patch for Postgresql 7.3.3.
>
>
> Any help will be highly appreciated.
>
>
> Thanks,
> Arun Desai.
>




pgsql-jdbc by date:

Previous
From: Kim Ho
Date:
Subject: UPDATED: registerOutParameter patch
Next
From: Sonjoy Datta
Date:
Subject: Information needed