Re: PreparedStatement.executeBatch() error? 7.3

From: Barry Lind <blind(at)xythos(dot)com>
To: Jeremiah Jahn <jeremiah(at)cs(dot)earlham(dot)edu>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: PreparedStatement.executeBatch() error? 7.3
Date: 2003-02-08 03:34:27
Message-ID: 3E447AC3.2020101@xythos.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Jeremiah,

I am a bit confused. You mention two different errors in your email the
"ERROR: parser:...." and the stack trace. Do both get produced at
the same time, or are they happening at different times?

Also the parse error looks like an error coming from the database. Can
you turn on query logging on the server to see the text of the statement
that the error is occuring in? That should provide a clue as to why the
sql statement is invalid.

To log the sql statements on the server you want to set the parameter
log_statement=true in your postgresql.conf file. Also it might help to
turn on debug logging in the jdbc driver. Can you add ?loglevel=2 to
the jdbc connection url? (both of the above suggestions are for 7.3,
the details on doing this on 7.2 are a bit different).

thanks,
--Barry

Jeremiah Jahn wrote:
> The following code doesn't work, but if in place of doing an addBatch
> loop with an executeBatch(), I do an executeUpdate each time it does
> work. I get a parse error from the db server:
>
> ERROR: parser: parse error at or near "'1998CF43'" at character 4202
>
> this corresponds to the first value. I'm using the jdbc3 jar for this.
>
> PreparedStatement pStatement = connection.prepareStatement("insert into case_data_store values (?,?,?,?)");
> ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
>
> for (int current_chunk = 0; current_chunk < chunk_count; current_chunk++){
>
> pStatement.setString(1,values.get("CASENUMBER").toString());
> pStatement.setString(2,values.get("NCIC").toString());
> pStatement.setInt(3,current_chunk);
> pStatement.setBytes(4,baos.toByteArray());
> pStatement.addBatch();
> //pStatement.executeUpdate();
>
> }
>
> pStatement.executeBatch();
>
>
>
> This is the stack trace:
> java.lang.ArrayIndexOutOfBoundsException: 1
> at
> org.postgresql.core.QueryExecutor.sendQuery(QueryExecutor.java:143)
> at
> org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:65)
> at
> org.postgresql.jdbc1.AbstractJdbc1Connection.ExecSQL(AbstractJdbc1Connection.java:451)
> at
> org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:281)
> at
> org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:48)
> at
> org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:179)
> at
> org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:165)
> at
> org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:80)
>
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Michael Adler 2003-02-08 14:57:23 Re: patch for COPY
Previous Message Barry Lind 2003-02-08 03:25:45 Re: examples of SQL Arrays and jdbc?