On 07/10/16 19:24, Thomas Kellerer wrote:
Stephen Davies schrieb am 07.10.2016 um 10:46:
You can store the contents of a file in a bytea using plain JDBC no lo_import() 
required

    String sql = "insert into images (id, image_data) values (?,?)";
    Connection con = ....;
    File uploaded = new File("...");
    InputStream in = new FileInputStream(uploaded);
    PreparedStatement pstmt = con.prepareStatement(sql);
    pstmt.setInt(1, 42);
    pstmt.setBinaryStream(in, (int)uploaded.length());
    pstmt.executeUpdate();

This *only* works with bytea column, not with "large objects".

In production code you obviously need to close all resources and handle errors.
I left that out for simplicity.

That looks reasonable but I need to update rather than insert and my similar
code with sql="update part set pic=? where id=3" did not work.

That *will* work (using that myself for updates as well).

What exactly is your problem? What was the error/exception?





I will have to regenerate that code to get the exact error message text but it basically said that the parameter substitution was invalid.

A follow-up question.
Once the bytea column is populated, how best to display the content in a web page?

I have :

byte [] imgB;
ResultSet rs = st1.executeQuery("select pic from part where pno='" + p + "'");
      if(rs.next()){
          imgB = rs.getBytes(1);
          if (imgB != null){
            out.write("Content-type: image/jpeg");
            out.write("Content-length: " + (int)imgB.length);
            out.write(imgB.toString());
          }
      }

but this does not work.
The toString() looks wrong but removing it makes the write fail.

Cheers and thanks,
Stephen


--
=============================================================================
Stephen Davies Consulting P/L                             Phone: 08-8177 1595
Adelaide, South Australia.                                Mobile:040 304 0583


--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to