RE: Displaying/Pulling Images using JDBC ...

From: "Ho, Khanh" <Khanh(dot)Ho(at)team(dot)telstra(dot)com>
To: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
Cc: The Hermit Hacker <scrappy(at)hub(dot)org>, pgsql-jdbc(at)postgresql(dot)org
Subject: RE: Displaying/Pulling Images using JDBC ...
Date: 2001-05-14 04:51:04
Message-ID: 73388857A695D31197EF00508B08F29804F4D1AB@ntmsg0131.corpmail.telstra.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Yes!! Thank you. That did the trick.
Khanh Ho.

> -----Original Message-----
> From: Bruce Momjian [mailto:pgman(at)candle(dot)pha(dot)pa(dot)us]
> Sent: Monday, 14 May 2001 11:13 AM
> To: Ho, Khanh
> Cc: The Hermit Hacker; pgsql-jdbc(at)postgresql(dot)org
> Subject: Re: [JDBC] Displaying/Pulling Images using JDBC ...
>
>
>
> I am attaching a JDBC patch that is about to be applied for 7.2.
> Perhaps this fixes the problem because it deals with BLOBS.
>
>
> > Hi Marc,
> >
> > I seem to be having the same problem as you when trying to insert
> > audio files into the database. They are inserted OK using
> > PreparedStatement.setBinaryStream(), but the data is truncated
> > when retrieved using PreparedStatement.getBinaryStream().
> > This occurs using the jdbc7.1beta5 driver.
> >
> > Interestingly, when I try to use an older JDBC driver
> (jdbc7.1beta4), it
> > manages to correctly read back the object stored by the
> jdbc7.1beta5 driver.
> > However, the jdbc7.1beta4 driver itself can't write the
> large object to the
> > database. It keeps throwing an exception: InputStream as
> parameter not
> > supported.
> >
> > Can you let me know if you find out the cause of the problem, or
> > better still a solution?
> >
> > Thanks,
> > Khanh Ho.
> >
> >
> > > -----Original Message-----
> > > From: The Hermit Hacker [mailto:scrappy(at)hub(dot)org]
> > > Sent: Sunday, 13 May 2001 2:45 AM
> > > To: pgsql-jdbc(at)postgresql(dot)org
> > > Cc: peter(at)retep(dot)org(dot)uk
> > > Subject: [JDBC] Displaying/Pulling Images using JDBC ...
> > >
> > >
> > >
> > >
> > > Morning folks ...
> > >
> > > Been wracking our brains on this one for too long now ... have a
> > > client that is trying to use JDBC to pull images stored in
> > > the database,
> > > and, from what we can gather, the images are coming out
> > > 'truncated' ...
> > >
> > > If the client stores the images as ASCII (uuencoded) and pulls
> > > those out, all works well, but if he stores them as
> > > binary/raw images, the
> > > images don't come out ...
> > >
> > > If he retrieves that image using psql and stores it to a file,
> > > that file is fine, so apparently the backend is storing it
> > > properly ...
> > >
> > > According to the table schema that we have, the image is being
> > > stored as an 'oid' type ...
> > >
> > > In relation to the image settings, they are
> counting the bytes
> > > that the stream is going to send to the client and
> verifying it on the
> > > clients side, the numbers are not matching unless it is
> an ascii based
> > > file....
> > >
> > > Both the backend server and the JDBC drivers are v7.1 ...
> > >
> > > Now, my thought on this is that it *sounds* like the JDBC is
> > > hitting some sort of control character is the stream that
> > > tells it to stop
> > > sending the image ... is this possible? Some binary
> > > character that needs
> > > to somehow be trapped?
> > >
> > > Image content is a mostly a faxed document saved as .tif format.
> > > But it could be anything and we derive it from the file name.
> > > We upload
> > > the document to the database. Please See the source
> > >
> > > Sample of the source they are using is as follows, is
> > > there something
> > > that we are seeing:
> > >
> > > PreparedStatement prepStmt =
> con.prepareStatement(selectstatement);
> > > prepStmt.setString(1, medicalRecordId);
> > > ResultSet rs = prepStmt.executeQuery();
> > > if (rs.next()) {
> > > medicalRecordId = rs.getString(1);
> > > typeSOAP = rs.getString(2);
> > > code = rs.getString(3);
> > > String datetimetemp = rs.getString(4);
> > > datetime = Timestamp.valueOf(datetimetemp);
> > > testObject = rs.getString(5);
> > > testResult = rs.getString(6);
> > > note = rs.getString(7);
> > > appointmentId = rs.getString(8);
> > > patientId = rs.getString(9);
> > > test = rs.getString(10);
> > > category = rs.getString(11);
> > >
> > > //if(imageName == null){
> > > if(imageNametemp != null){
> > > imageName = rs.getString(12);
> > >
> > >
> > > BufferedInputStream bis = new
> > > BufferedInputStream(rs.getBinaryStream(13));
> > > System.out.println("value of bis"+bis.toString());
> > > //InputStream is = rs.getBinaryStream(13);
> > >
> > > //System.out.println("vale of inputstream"+is.toString());
> > >
> > > int TotLen=0;
> > >
> > > ByteArrayOutputStream imageOutputStream = new
> > > ByteArrayOutputStream(8164);
> > >
> > > byte[] b = new byte[8164];
> > > int len=0;
> > >
> > > try {
> > > while( (len = bis.read(b,0,8164)) != -1 ) {
> > > imageOutputStream.write(b,0,len);
> > >
> > > TotLen += len;
> > > }
> > > bis.close();
> > > imageAsBytes = imageOutputStream.toByteArray();
> > >
> > > System.out.println("value of
> baoslenght"+imageAsBytes.length);
> > > System.out.println("value of totlenght"+TotLen);
> > >
> > > System.out.println("vale of
> > > baos"+imageOutputStream.toString());
> > > }
> > > catch(IOException e) {
> > > }
> > > }
> > > prepStmt.close();
> > >
> > >
> > > Marc G. Fournier ICQ#7615664
> > > IRC Nick: Scrappy
> > > Systems Administrator @ hub.org
> > > primary: scrappy(at)hub(dot)org secondary:
> > > scrappy(at){freebsd|postgresql}.org
> > >
> > >
> > > ---------------------------(end of
> > > broadcast)---------------------------
> > > TIP 2: you can get off all lists at once with the
> unregister command
> > > (send "unregister YourEmailAddressHere" to
> > > majordomo(at)postgresql(dot)org)
> > >
> >
> > ---------------------------(end of
> broadcast)---------------------------
> > TIP 5: Have you checked our extensive FAQ?
> >
> > http://www.postgresql.org/users-lounge/docs/faq.html
> >
>
> --
> Bruce Momjian | http://candle.pha.pa.us
> pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
> + If your life is a hard drive, | 830 Blythe Avenue
> + Christ can be your backup. | Drexel Hill,
> Pennsylvania 19026
>

Browse pgsql-jdbc by date

  From Date Subject
Next Message Peter Eisentraut 2001-05-14 15:01:11 Re: Compiling JDBC Driver - impossible!
Previous Message The Hermit Hacker 2001-05-14 02:06:13 Pre-compiled drivers ...