Received: from babylon-5.ec-group.com (babylon-5.ec-group.com [209.96.10.3]) by hub.org (8.9.3/8.9.3) with ESMTP id LAA65944 for ; Thu, 13 May 1999 11:27:41 -0400 (EDT) (envelope-from bpm@ec-group.com) Received: from ec-group.com ([192.168.250.70]) by babylon-5.ec-group.com (Netscape Messaging Server 3.6) with ESMTP id AAAE25; Thu, 13 May 1999 10:27:37 -0500 Sender: bpm Message-ID: <373AEF3B.7310BE9E@ec-group.com> Date: Thu, 13 May 1999 10:26:51 -0500 From: Brian P Millett Organization: Enterprise Consulting Group X-Mailer: Mozilla 4.51 [en] (X11; I; SunOS 5.7 sun4u) X-Accept-Language: en MIME-Version: 1.0 To: Henri-Pierre CHARLES CC: pgsql-interfaces@hub.org Subject: Re: [INTERFACES] Trouble with large objets and jdbc References: <19990512133557.A24315@gibet.prism.uvsq.fr> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit 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 use the 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 = "UPDATE item SET item_picture = ?, item_descr = ?"+ " WHERE item_num = ?"; // Create a PreparedStatement object & use it to 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