Re: cursor "jdbc_curs_1" does not exist

From: Kris Jurka <books(at)ejurka(dot)com>
To: tmp(at)nitwit(dot)de
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: cursor "jdbc_curs_1" does not exist
Date: 2004-06-15 17:38:26
Message-ID: Pine.BSO.4.56.0406151234060.10395@leary.csoft.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On Tue, 15 Jun 2004 tmp(at)nitwit(dot)de wrote:

> On Tuesday 15 June 2004 18:06, you wrote:
> > The problem here is that you commit every 100 rows. A commit closes any
> > open cursors, so the next time you try to call next the cursor isn't there
> > any more.
>
> Hmm. And why does this code work then:

It is unclear what the differences here are. You haven't shown the
Statement creation and/or execution, so it's possible that you haven't
used setFetchSize or you've specified a scrollable ResultSet. Maybe auto
commit is on. Any of these will cause a cursor not to be used and the
results will be fetched in bulk, so an intermediate commit won't cause any
problems. Maybe the query doesn't retrieve 100 rows, so it doesn't get to
the commit part.

Kris Jurka

>
> for( int j = 1; row.next(); j++ )
> {
> String id = row.getString( "id" );
> URL url = new URL( row.getString( "url" ) );
> Timestamp time = row.getTimestamp( "timestamp" );
>
> try
> {
> insertUrls.setString( 1, id );
> insertUrls.setString( 2, url.toString() );
> insertUrls.setString( 3, resp.getText() );
> insertUrls.execute();
> }
> catch( Exception e )
> {
> System.err.println( e );
> }
> finally
> {
> if( j % 100 == 0 )
> {
> System.out.println();
> f4t.commit();
> }
> }
> }
>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Kris Jurka 2004-06-15 18:00:00 Re: Prepare Statement
Previous Message tmp 2004-06-15 16:53:58 Re: cursor "jdbc_curs_1" does not exist