Bilgisayarınızdan veritabanına binary data türünden (resim,ses,video) veriler ekleyebilmek ve tekrar bu verileri çekip kullanmak için Java'nın io paketindeki File, FileInputStream(veri okumak için), FileOutputStream(veriyi yazmak için) sınıflarından yararlanılır.
Veritabanına nasıl kayıt yapılır veya veritabanından nasıl veri çekilir bildiğinizi varsayıyorum.
PostgreSQL veritabanında personel adında bir tablom var. Bu tabloda ad ve resim adında kolonlar mevcut. Resim kolonu bytea tipinde.
Aşağıda yapılan işlemler bir resim dosyası için gerçekleştirilecek fakat bu işlemleri bir ses dosyası, text dosyası, pdf dosyası gibi binary data işlemlerinde kullanabilirsiniz.
File.length() : İlgili dosyanın byte değerini verir.
Aşağıdaki örnekte bilgisayardaki bir resmin veritabanına nasıl kaydedileceği gösterilmektedir.
Aşağıdaki örnekte veritabanından nasıl binary data çekileceği ve resim verisinin dosyaya nasıl yazdırılacağı gösterilmektedir.
Devamı.. »
Veritabanına nasıl kayıt yapılır veya veritabanından nasıl veri çekilir bildiğinizi varsayıyorum.
PostgreSQL veritabanında personel adında bir tablom var. Bu tabloda ad ve resim adında kolonlar mevcut. Resim kolonu bytea tipinde.
Aşağıda yapılan işlemler bir resim dosyası için gerçekleştirilecek fakat bu işlemleri bir ses dosyası, text dosyası, pdf dosyası gibi binary data işlemlerinde kullanabilirsiniz.
File.length() : İlgili dosyanın byte değerini verir.
Aşağıdaki örnekte bilgisayardaki bir resmin veritabanına nasıl kaydedileceği gösterilmektedir.
public void kaydet() throws SQLException, IOException { PreparedStatement pre = null; FileInputStream fis = null; try { File resim = new File("C:\\test.jpg"); fis = new FileInputStream(resim); pre = baglanti.prepareStatement("INSERT INTO personel (ad,resim) VALUES (?,?)"); pre.setString(1, "Zeynep"); pre.setBinaryStream(2, fis, resim.length()); pre.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { if(pre != null) pre.close(); if(fis != null) fis.close(); } }FileOutputStream.write(byte[] b) : Verilen byte dizisini daha önceden belirlenen dosyaya yazar
Aşağıdaki örnekte veritabanından nasıl binary data çekileceği ve resim verisinin dosyaya nasıl yazdırılacağı gösterilmektedir.
public void verileriAl() throws SQLException, IOException { PreparedStatement pre = null; FileOutputStream fos = null; try { pre = baglanti.prepareStatement("SELECT * FROM personel WHERE id = 1"); ResultSet results = pre.executeQuery(); if(results.next()) { byte[] resimData = results.getBytes("resim"); fos = new FileOutputStream(new File("C:\\yeni.jpg")); fos.write(resimData); } } catch (Exception e) { e.printStackTrace(); } finally { if(pre != null) pre.close(); if(fos != null) fos.close(); } }