Re: PreparedStatement.executeBatch() error? 7.3

From: Kris Jurka <books(at)ejurka(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-09 09:10:46
Message-ID: Pine.LNX.4.33.0302090407170.29526-100000@leary.csoft.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

I've been unable to reproduce this with the current 7.3 driver and the
following code. You will need to provide a some more detail if you're
still experiencing this problem.

Kris Jurka

import java.sql.*;

public class BatchPstmt {

// CREATE TABLE batchstmt(a text, b varchar(50), c int, d bytea);

public static void main(String args[]) throws Exception {
Class.forName("org.postgresql.Driver");
Connection conn =
DriverManager.getConnection("jdbc:postgresql://localhost:5432/jurka","jurka","");
PreparedStatement pstmt = conn.prepareStatement("insert into batchpstmt values (?,?,?,?)");
byte bytes[] = new byte[0];
for (int i=0; i<5; i++) {
pstmt.setString(1,"CASENUMBER");
pstmt.setString(2,"NCIC");
pstmt.setInt(3,i);
pstmt.setBytes(4,bytes);
pstmt.addBatch();
}
pstmt.executeBatch();
pstmt.close();
conn.close();
}
}

On 7 Feb 2003, 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)
>
>
> --
> Jeremiah Jahn <jeremiah(at)cs(dot)earlham(dot)edu>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo(at)postgresql(dot)org
>

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Kris Jurka 2003-02-09 09:21:29 Re: patch for COPY
Previous Message Peter Katzmann 2003-02-08 15:42:55 Re: Timestamp problems