CREATE TABLE IF NOT EXISTS `zdjecie` ( `ID_Zdjecia` int(11) NOT NULL AUTO_INCREMENT, `Opis` varchar(150) COLLATE utf8_polish_ci NOT NULL DEFAULT '-', `Zdjecie` blob NOT NULL, PRIMARY KEY (`ID_Zdjecia`), ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci
A teraz do operowania na bazie danych będziemy posługiwać się 2 metodami:
//Wstawienie zdjęcia public void InsertZdjecie(int ID_Osoba,String Opis,FileInputStream fotos); //pobranie z bazy zdjęcia public BufferedImage getMySqlPhoto(int ID_Zdjecie);
I ich definicja:
public BufferedImage getMySqlPhoto(int ID_Zdjecie){ BufferedImage BI = null; Statement S; ResultSet rs; String sqlStatement = "SELECT zdjecie FROM zdjecie WHERE ID_Zdjecia = '"+ID_Zdjecie+"'"; try { S = con.createStatement(); rs = S.executeQuery(sqlStatement); if (rs.next()){ Blob image = rs.getBlob("Zdjecie"); InputStream input = image.getBinaryStream(); BI=ImageIO.read(input); // set read buffer size input.close(); } } catch (SQLException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } return BI; } public void InsertIntoZdjecie(String Opis,FileInputStream fotos) { String INSERT = "INSERT INTO ZDJECIE(Opis,Zdjecie) VALUES (?,?)"; System.out.println(INSERT); PreparedStatement ps1; try { ps1 = con.prepareStatement(INSERT); ps1.setString(1, Opis); ps1.setBinaryStream(2, fotos); ps1.executeUpdate(); } catch (SQLException ex) { ex.printStackTrace(); } }
Prawda, że proste ? :-)