2015-05-20 2 views
0

Я хочу отобразить/распечатать изображение Blob из базы данных. с помощью следующего кода он показывает только это:Показать Blob из базы данных с помощью java

Pic: [email protected] 
Name:Test 
Phone:1234 

правильные данные для имен и телефонных работ, но сгустка не показывают изображения. Что я делаю не так? Любая помощь?

try { 
    Class.forName("com.mysql.jdbc.Driver"); 
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/Test", "root", ""); 
    stmt = conn.createStatement(); 

    String query = "SELECT * FROM Person WHERE email ='"+emailLogin+"'"; 
    ResultSet rs = stmt.executeQuery(query); 
    while (rs.next()) { 
    String name = rs.getString("name"); 
    String telephone = rs.getString("telephone"); 
    Blob pic = rs.getBlob("foto"); 

    out.print("Picture: "+pic + "<br>"); 
    out.print("Name: "+name + "<br>"); 
    out.print("Phone: "+telephone + "<br>"); 

    } 
} catch (SQLException e) { 
    out.println("An error occured while retrieving " + "all results: " 
     + e.toString()); 
} catch (ClassNotFoundException e) { 
    throw (new ServletException(e.toString())); 
} finally { 
    try { 
    if (stmt != null) { 
     stmt.close(); 
    } 
    if (conn != null) { 
     conn.close(); 
    } 
    } catch (SQLException ex) { 
    } 
} 
+0

Возможно, [этот ответ] (http://stackoverflow.com/a/1077103/905488) может помочь (даже если это для Oracle). –

ответ

0

Вы не печатаете объект Blob на выводе. Здесь мой код показывает, как создать поток из него и сохранить его в файле. Вы можете использовать InputStream (is), чтобы что-либо сделать.

File image = new File("/user/eranda/temp/MyImage.png"); 
     FileOutputStream fos = new FileOutputStream(image); 
     byte[] buffer = new byte[1]; 
     InputStream is = resultSet.getBinaryStream("foto"); 
     while (is.read(buffer) > 0) { 
     fos.write(buffer); 
     } 
     fos.close(); 
+0

Почему у вас есть «/user/eranda/temp/MyImage.png»? –

+0

Я сохраняю blob в файл, который называется MyImage.png. – Eranda

+0

Я просто поменял его на свое место, но когда я распечатаю изображение, он показывает URL-адрес «Pic: /Users/John/Downloads/image.jpg Какая переменная используется для получения блоба? Это изображение? –