Odd, I am able to put a file into the database like so:

File f = new File("image.jpg");
BufferedInputStream data = new BufferedInputStream(new FileInputStream(f));
PreparedStatement ps = getPreparedStatement("INSERT INTO Files(RowID, Data) VALUES (?,?)");
ps.setString(1, f.getName());
ps.setBinaryStream(2, data);

And then retrieve it like so:

ResultSet rs = Database.executeQuery("SELECT Data FROM Files WHERE RowID='image.jpg'");
BufferedInputStream bi = null;
if (rs.next()) {
    bi = new BufferedInputStream(rs.getBinaryStream("Data"));
//do something with bi

Hope this helps,

On Fri, Feb 12, 2010 at 6:07 PM, Dinesh Bajaj <dinesh.bajaj@ymail.com> wrote:

I am much disappointed that I have not got a single reply to my post. Surely, what I am trying to accomplish is a very simple task. Aren't Blob fields supposed to store binary objects like images; then, why the database can't perform this simple task?


--- On Wed, 10/2/10, Dinesh Bajaj <dinesh.bajaj@ymail.com> wrote:

From: Dinesh Bajaj <dinesh.bajaj@ymail.com>
Subject: Problem storing an image in a Blob field in Java DB.
To: derby-user@db.apache.org
Date: Wednesday, 10 February, 2010, 11:14 PM

Hi All,

I am using Java DB 10.5, and am experiencing problem in storing an image in a Blob field. I am using the below command to insert the image:

preparedStatement.setBinaryStream(5, inputStream, file.length());

The Derby throws the following exception on using the above-mentioned command:

Error code : 0
SQL State = XJ001
Message = Java exception: 'Input stream did not have exact amount of data as the requested length.: org.apache.derby.iapi.services.io.DerbyIOException'.

If I use the method variant of setBinaryStream that doesn't take the 3rd argement, then the command executes without any error, but perhaps no date is stored in the database, as when the data is retrieved in a Blob variable, its length is reported to be zero.

Thanks for any help that you can offer.


The INTERNET now has a personality. YOURS! See your Yahoo! Homepage.

Your Mail works best with the New Yahoo Optimized IE8. Get it NOW!.