ServletOutputStream out = response.getOutputStream();
BFILE photo = null;
Connection connection = CacheConnection.checkOut();
Statement statement = null;
ResultSet resultSet = null;
String sql =
"select picture " +
"from person p, person_picture i " +
"where p.person_id = i.person_id " +
"and last_name = " +
formatWithTicks(request.getParameter("last_name")) + " " +
"and first_name = " +
formatWithTicks(request.getParameter("first_name"));
try {
statement = connection.createStatement();
resultSet = statement.executeQuery(sql);
if (resultSet.next()) {
photo = ((OracleResultSet)resultSet).getBFILE(1);
}
else {
response.setContentType("text/html");
out.println("<html><head><title>Person Photo</title></head>");
out.println("<body><h1>No data found</h1></body></html>");
return;
}
response.setContentType("image/gif");
photo.openFile();
InputStream in = photo.getBinaryStream();
System.out.println("after getBinaryStream");
int length = (int)photo.length();
System.out.println("lenght of the blob is " + length);
byte[] buffer = new byte[1024];
while ((length = in.read(buffer)) != -1) {
System.out.println("writing " + length + " bytes");
out.write(buffer, 0, length);
}
System.out.println("written");
in.close();
in = null;
photo.closeFile();
out.flush();
}
catch (SQLException e) {
System.out.println("TestBFILEServlet.doGet() SQLException: " +
e.getMessage() + "executing ");
System.out.println(sql);
}
finally {
if (resultSet != null)
try { resultSet.close(); } catch (SQLException ignore) { }
if (statement != null)
try { statement.close(); } catch (SQLException ignore) { }
}
// let's return the conection
CacheConnection.checkIn(connection);