in Java

Java ile Veritabanına Görüntü Kaydetmek

Mysql veritabanımızda bulunan tablolarımıza görüntü eklemek için ilgili kolonun veri tipini  BLOB olarak belirliyoruz.

1. Mysql Tablomuzu oluşturuyoruz

İnsan yüzü görüntülerinden oluşan bir tablo oluşturalım. Tablomuzun adı yuz olsun.

CREATE TABLE `zihni`.`yuz` 
( `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `goruntu` longblob NOT NULL, PRIMARY KEY (`id`) USING BTREE ) 
ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

2. Yüz Modelini oluşturuyoruz

Yüz verisini tutacak model sınıfını yaratıyoruz. Görüntü veri tipi byte dizisidir (byte[]).

Yuz.java

package com.zihni.goruntu;
 
public class Yuz {
 
	private Integer id;
	private byte[] goruntu;
 
	public Yuz() {		
	}
 
	public Yuz(byte[] goruntu) {
		this.goruntu = goruntu;
	}
 
	public Integer idAl() {
		return this.id;
	}
 
	public void idVer(Integer id) {
		this.id = id;
	}
 
	public byte[] goruntuAl() {
		return this.goruntu;
	}
 
	public void goruntuVer(byte[] goruntu) {
		this.goruntu = goruntu;
	}
 
}

3. Data Access Object (DAO) sınıfını oluşturuyoruz.

Veritabanı işlemlerini yaptığımız sınıf.

DAO.java

package com.zihni.goruntu;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;
 
public final class DAO {
 
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost/zihni";
 
   static final String USER = "root";
   static final String PASS = "";
 
   Connection conn = null;
   Statement stmt = null;   
 
  public void kaydet(Yuz yuz) {
	   try{
	      Class.forName("com.mysql.jdbc.Driver");
	      conn = DriverManager.getConnection(DB_URL, USER, PASS);
	      PreparedStatement pstmt = conn.prepareStatement("INSERT INTO yuz (goruntu) VALUES (?)", PreparedStatement.RETURN_GENERATED_KEYS);
	      pstmt.setBytes(1, yuz.goruntuAl());
	      pstmt.executeUpdate();	      
	      ResultSet keys = pstmt.getGeneratedKeys(); 
	      keys.next();  
	   }catch(SQLException se){
	      se.printStackTrace();
	   }catch(Exception e){
	      e.printStackTrace();
	   }finally{
	      try{
	         if(stmt!=null)
	            conn.close();
	      }catch(SQLException se){
	      }
	      try{
	         if(conn!=null)
	            conn.close();
	      }catch(SQLException se){
	         se.printStackTrace();
	      }
	   }
	}  
 
}

4.Çalıştırma

Bu adımda, c:\lena.png görüntü dosyasını okuyoruz ve onu veritabanına kaydediyoruz.

App.java

package com.zihni.goruntu;
 
import java.io.File;
import java.io.FileInputStream;
 
public class App 
{
    public static void main( String[] args )
    {
        System.out.println("Veritabanına görüntü kaydetme");
 
    	File dosyaYolu= new File("C:\\lena.png");
        byte[] dosya = new byte[(int) dosyaYolu.length()];
 
        try {
        	FileInputStream fileInputStream = new FileInputStream(dosyaYolu);
        	fileInputStream.read(dosya);
 
        	fileInputStream.close();
        } catch (Exception e) {
        	e.printStackTrace();
        }
 
        Yuz yuz = new Yuz();
        yuz.goruntuVer(ikiliDosya);
        DAO dao = new DAO();
        dao.kaydet(yuz);        
    }
}

 

facebooktwittergoogle_plusredditpinterestlinkedinmail

Write a Comment

Comment