Thread: JDBC: HELP!!! Can't Upload BLOBS on 6.5.3

JDBC: HELP!!! Can't Upload BLOBS on 6.5.3

From
pgsql-bugs@postgresql.org
Date:
Angel Leon (anleon@ucab.edu.ve) reports a bug with a severity of 1
The lower the number the more severe it is.

Short Description
JDBC: HELP!!! Can't Upload BLOBS on 6.5.3

Long Description
At First I tried the PreparedStatement "setBinaryStream" to upload a jpeg.. but it turned out to be, they hadn't
implementedthat method... then I tried using the "setBytes" method... They both worked on SQL Server 7.0... but the
lastone (setBytes) returns the following Exception: 

FastPath protocol error: Z
It just won't upload bytes... do I have to use the "lo_import" function within my SQL statement... I'm programming in
JavaI guess I  don't need dat. Is it that the driver is too old? Can I use a 7.x JDBC Driver? 

PLEASE POSTGRESQL PEOPLE I NEED AN ANSWER!!! I COULD LOOSE MY JOB OVER THIS.

Sample Code
  /** This works perfectly on SQL Server JTurbo JDBC Driver...*/
  public boolean uploadImage(File file,int picId)
  {
    try
    {
      FileInputStream fis = new FileInputStream(file);

      byte[] b = new byte[fis.available()];
      fis.read(b);

      PreparedStatement ps = rut._con.prepareStatement(
      "insert into PICS values (?,?)");
      ps.setInt(1,picId);
      ps.setBytes(2,b);
      ps.executeUpdate();
      ps.close();
      fis.close();
    }
    catch(IOException ioexx)
    {
        System.out.println("=========IOException=================");
        System.out.println(ioexx + "//\n");
        out2.println(ioexx + "//\n");
        ioexx.toString();
        System.out.println("=====================================");
        return false;
    }
    catch(SQLException e)
    {
      System.out.println("File Upload Exception: " + e.getMessage());
      out2.println("<font color=red>SQL Upload Exception:</font> " +  e.getMessage());
      return false;
    };
    return true;
  }

No file was uploaded with this report

Re: JDBC: HELP!!! Can't Upload BLOBS on 6.5.3

From
Peter Mount
Date:
On Tue, 3 Oct 2000 pgsql-bugs@postgresql.org wrote:

> Angel Leon (anleon@ucab.edu.ve) reports a bug with a severity of 1
> The lower the number the more severe it is.
>
> Short Description
> JDBC: HELP!!! Can't Upload BLOBS on 6.5.3
>
> Long Description At First I tried the PreparedStatement
> "setBinaryStream" to upload a jpeg.. but it turned out to be, they
> hadn't implemented that method... then I tried using the "setBytes"
> method... They both worked on SQL Server 7.0... but the last one
> (setBytes) returns the following Exception:
>
> FastPath protocol error: Z It just won't upload bytes... do I have to
> use the "lo_import" function within my SQL statement... I'm
> programming in Java I guess I don't need dat. Is it that the driver is
> too old? Can I use a 7.x JDBC Driver?

Does the ImageViewer example included with the source work? It shows two
methods of loading an image into a BLOB.

Here's from the source:

// fetch the large object manager
LargeObjectManager lom = ((org.postgresql.Connection)db).getLargeObjectAPI();

db.setAutoCommit(false);

// A temporary buffer - this can be as large as you like
byte buf[] = new byte[2048];

// Open the file
FileInputStream fis = new FileInputStream(new File(dir,name));

// Now create the large object
int oid = lom.create();
LargeObject blob = lom.open(oid);

// Now copy the file into the object.
//
// Note: we dont use write(buf), as the last block is rarely the same
// size as our buffer, so we have to use the amount read.
int s,t=0;
while((s=fis.read(buf,0,buf.length))>0) {
  t+=s;
  blob.write(buf,0,s);
}

// Close the object
blob.close();

The 7.x Driver should work. If not, the 7.0 source does include the
correct 6.5.3 source (it didn't get released with 6.5.3 due to me messing
up the cvs commit :-( )

> PLEASE POSTGRESQL PEOPLE I NEED AN ANSWER!!! I COULD LOOSE MY
> JOB OVER THIS.

Also, you are using transactions (see the setAutoCommit(false) above)?

Peter

--
Peter T Mount peter@retep.org.uk http://www.retep.org.uk
PostgreSQL JDBC Driver http://www.retep.org.uk/postgres/
Java PDF Generator http://www.retep.org.uk/pdf/