Re: [INTERFACES] Trouble with large objets and jdbc - Mailing list pgsql-interfaces

From Brian P Millett
Subject Re: [INTERFACES] Trouble with large objets and jdbc
Date
Msg-id 373AEF3B.7310BE9E@ec-group.com
Whole thread Raw
In response to Trouble with large objets and jdbc  (Henri-Pierre CHARLES <hpc@prism.uvsq.fr>)
List pgsql-interfaces
Henri-Pierre CHARLES wrote:

> Hello,
>
> I want to use large objets to store images in a database with the jdbc
> interface. I have try to use PreparedStatement which has
> setBinaryStream () but it's not possible with the old version I
> usually use (6.4.2). I have download the 6.5b1 and unfortunately
> setBinaryStream () is still not implemented.

This bug has been fixed as of Monday.  They (Hackers group) have also fixed a big hairy bug with the backend.  If you
usethe anonymous cvs to checkout the latest snapshot, you will
 
find an ImageViewer.java example that works, the blobtest.java works also.

I also use code such as this to work fine:

 // The UPDATE statement to be used for populating the item_picture and // item_descr columns String itemUpdateStmt =
"UPDATEitem SET item_picture = ?, item_descr = ?"+  " WHERE item_num = ?";  // Create a PreparedStatement object & use
itto update the item_picture  // and item_descr columns in the item table  PreparedStatement updateStmt =
conn.prepareStatement(itemUpdateStmt);  // File names for the image & text files   String itemPictureFileName =
("item_"+ new Integer(i).toString()            + ".gif");   String itemDescrFileName = ("item_" + new
Integer(i).toString()         + ".txt");
 
   // java.io.File objects corresponding to the image & text files   File itemPictureFile = new
File(itemPictureFileName);  File itemDescrFile = new File(itemDescrFileName);
 
   // Byte arrays to store text & byte data for the item_picture and   // item_descr columns   byte itemPictureArray []
=new byte[(int)itemPictureFile.length()];   String itemDescrString = "";
 
   // Using java.io.FileInputStream to reading the image & text files   // into byte arrays   FileInputStream
itemPictureInputStream= new    FileInputStream(itemPictureFile);   itemPictureInputStream.read(itemPictureArray, 0,
    (int)itemPictureFile.length());
 
   FileReader fr = new FileReader(itemDescrFile);   BufferedReader br = new BufferedReader(fr);   String lineIn;
while((lineIn = br.readLine()) != null)    itemDescrString += lineIn;
 
   // Set the values of the parameters & execute the statement   updateStmt.setBytes(1, itemPictureArray);
updateStmt.setString(2,itemDescrString);   updateStmt.setInt(3, i);   updateStmt.executeUpdate();
 


Then to read/view the image, I do:
    // read the image from the resultset    byte itemPictureArray [] = queryResults.getBytes(2);     Image img =
Toolkit.getDefaultToolkit().createImage(itemPictureArray);    itemPictureCanvas.setImage(img);
itemPictureCanvas.repaint();


--
Brian Millett
Enterprise Consulting Group     "Heaven can not exist,
(314) 205-9030                     If the family is not eternal"
bpm@ec-group.com                   F. Ballard Washburn




pgsql-interfaces by date:

Previous
From: Byron Nikolaidis
Date:
Subject: Re: [INTERFACES] ODBC Driver updated
Next
From: Peter Harvey
Date:
Subject: Re: [INTERFACES] ODBC Driver updated