Re: import_bytea function
От | Stephen Davies |
---|---|
Тема | Re: import_bytea function |
Дата | |
Msg-id | fe5e9880-68da-c3c4-2951-1c5cf2870967@sdc.com.au обсуждение исходный текст |
Ответ на | Re: import_bytea function (Thomas Kellerer <spam_eater@gmx.net>) |
Ответы |
Re: import_bytea function
Re: import_bytea function |
Список | pgsql-general |
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
В списке pgsql-general по дате отправления: