RE: Displaying/Pulling Images using JDBC ... - Mailing list pgsql-jdbc
From | Ho, Khanh |
---|---|
Subject | RE: Displaying/Pulling Images using JDBC ... |
Date | |
Msg-id | 73388857A695D31197EF00508B08F29804F4D1AB@ntmsg0131.corpmail.telstra.com.au Whole thread Raw |
In response to | Displaying/Pulling Images using JDBC ... (The Hermit Hacker <scrappy@hub.org>) |
List | pgsql-jdbc |
Yes!! Thank you. That did the trick. Khanh Ho. > -----Original Message----- > From: Bruce Momjian [mailto:pgman@candle.pha.pa.us] > Sent: Monday, 14 May 2001 11:13 AM > To: Ho, Khanh > Cc: The Hermit Hacker; pgsql-jdbc@postgresql.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@hub.org] > > > Sent: Sunday, 13 May 2001 2:45 AM > > > To: pgsql-jdbc@postgresql.org > > > Cc: peter@retep.org.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@hub.org secondary: > > > scrappy@{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@postgresql.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@candle.pha.pa.us | (610) 853-3000 > + If your life is a hard drive, | 830 Blythe Avenue > + Christ can be your backup. | Drexel Hill, > Pennsylvania 19026 >
pgsql-jdbc by date: