JDBC + PostgreSQL + LargeObjects
От | Paulo Delgado |
---|---|
Тема | JDBC + PostgreSQL + LargeObjects |
Дата | |
Msg-id | 20020218093806.73927364.pdelgado@pasaportevip.com обсуждение исходный текст |
Список | pgsql-jdbc |
I'm writing a JSP which instead of generating HTML code, it sends an image to the browser. The image is retrieved from the database, where it is stored as a BLOB (an OID). I read the docs online, this is the URL: http://developer.postgresql.org/docs/postgres/jdbc-binary-data.html And this is the code (still not working) <%@ page import="java.io.*" %> <%@ page import="java.sql.*" %> <%@ page import="org.postgresql.largeobject.*" %> <% response.setContentType("image/jpeg"); out.close(); ServletOutputStream sos = response.getOutputStream(); try { Class.forName("org.postgresql.Driver"); } catch(ClassNotFoundException cnfex) { cnfex.printStackTrace(); } try { Connection mycon; mycon= DriverManager.getConnection("jdbc:postgresql://localhost:5432/database", "userid" , "password"); mycon.setAutoCommit(false); // Get the Large Object Manager to perform operations with LargeObjectManager lobj = ((org.postgresql.Connection)mycon).getLargeObjectAPI(); PreparedStatement ps = mycon.prepareStatement("SELECT pic FROM mytable WHERE month='"+request.getParameter("m")+"' AND year="+request.getParameter("y")); ResultSet rs = ps.executeQuery(); if (rs != null) { while(rs.next()) { //open the large object for reading int oid = rs.getInt(1); LargeObject obj = lobj.open(oid , LargeObjectManager.READ); //read the data byte buf[] = new byte[obj.size()]; obj.read(buf, 0, obj.size()); //do something with the data read here response.setContentLength(obj.size()); int i=0; for(i=0; i<obj.size() ; i++) { sos.write(buf[i]); } // Close the object obj.close(); } rs.close(); } ps.close(); mycon.close(); } catch(SQLException sqex) { out.println(sqex.toString()); } %> the table is created like this: CREATE TABLE mytable( pic oid, month int2 NOT NULL, year int2 NOT NULL, PRIMARY KEY (month, year) ); I've searched all over the docs, asked all over IRC, and still does not work. any ideas?
В списке pgsql-jdbc по дате отправления: