2
Tem
2009

ACCESS Veritabanına Resim Kaydetmek

Author    Category Bilgisayar, Genel     Tags , , , ,     Okunma Sayısı Bu Yazı 9.927 kere okundu.

 Bu Makalemizde Access Veritabanına Nasıl Resim Kaydedilir Onu İnceleyeceğiz,Gerçi Veritabanına,
 Direkt Resim Kaydetmek Hernekadar Tavsiye Edilmeyen Bir Yöntem Olsada,Google’da Dolaştığım Zaman,
 Bazı Arkadaşların Ben Veritabanıma Resim Kaydetmek İstiyorum Soruları Doğrultusunda Böyle Bir Makale,
 Yayınlamaya Karar Verdim,Hiç Zaman Kaybetmeden Access 2007 Projemizi Açıyoruz Ve Calisan.mdb Adında Bir,
 Veritabanı Oluşturuyoruz Ardından Tablomuzu Aşağıdaki Gibi Tasarlıyoruz.

 tablo1

 CalisanID OtomatikSayi
 Ad Metin (40)
 Soyad Metin (40)
 Yas Sayi
 Resim OleNesnesi
 Cinsiyet Metin (5)

 Resim Kolonunu OleNesnesi Olarak Seçiyoruz Ki Kaydedeceğimiz Resimleri Byte Düzeyinde İkili Veri Olarak Kaydedebilelim.
 Cinsiyet Kısmını İse Metin Olarak Seçiyoruz Ve Alan Boyutunu 5 Olarak Ayarlıyoruz ki Buraya Sadece  Bay ve Bayan Olarak,
 Kayıt Ettireceğiz.Evet Oluşturduğumuz Access Veritabanımızı 2003 Olarak Kaydediyoruz.
 Visual Studio İle Yeni Bir Form Projesi Oluşturuyoruz,İlk Olarak Solution Hemen Üstünde Yer Alan ShowAllFiles Seçeneğini,
 Seçiyoruz Daha Sonra bin->Debug Klasörü İçerisine Calisan.mdb Veritabanımızı Kopyala Yapıştır Yaparak İçerisine Koyuyoruz,
 Biraz Bekledikten Sonra Karşımıza Aşağıdaki Gibi Bir Yapı Çıkacaktır Resimdeki Gibi Tasarlıyoruz Ve Finish Diyerek Devam,
 Ediyoruz.

 mdbolustur

 Hemen Tasarım Kısmına Geçiyoruz Ve Resimdeki Gibi Tasarımımızı Gerçekleştiriyoruz.Butonlarımızın FlatStyle Özelliğini,
 Flat Yaparsak Daha Güzel Ve Kibar Bi Görünüm Kazanacaktır.
 Evet Projemize SağClik AddNewItem CalisanE.cs Adında Yeni Bir Class Ekliyoruz Ve Kodlarımızı Aşağıdaki Gibi Yazıyoruz.

 
 tasarim

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace Access_Resim_Kaydetmek
{
    public class CalisanE
    {
        private int _calisanid;
        public int CalisanID
        { get { return this._calisanid; } set { this._calisanid = value; } }

        private string _ad;
        public string Ad
        { get { return this._ad; } set { this._ad = value; } }

        private string _soyad;
        public string Soyad
        { get { return this._soyad; } set { this._soyad = value; } }

        private int _yas;
        public int Yas
        { get { return this._yas; } set { this._yas = value; } }

        private Image _resim;
        public Image Resin
        { get { return this._resim; } set { this._resim = value; } }

        private Cinsiyet _cinsiyet;
        public Cinsiyet Cinsiyet
        { get { return this._cinsiyet; } set { this._cinsiyet = value; } }

        public CalisanE()
        {
        }

        public override string ToString()
        { return this._ad + ” ” + this._soyad; }
    }
}
 Hemen AddNewItem CalisanF.cs Adında İkinci Bir Class Daha Ekiyoruz Ve Kod Kısmını Aşağıdaki Gibi Yazıyoruz
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Data.OleDb;
using System.Collections;
using System.Data;
using System.IO;
using System.Drawing;

namespace Access_Resim_Kaydetmek
{

    public enum Cinsiyet : byte
    { Bay,Bayan }
    public class CalisanF
    {
        private static string connectionString =
            “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Application.StartupPath + “\Calisan.mdb“;
        public static void CalisanKaydet(CalisanE calis)
        {
           string strInsert = “Insert Into Calisanlar(Ad,Soyad,Yas,Resim,Cinsiyet)Values(@ad,@soyad,@yas,@resim,@cinsiyet)”;

            OleDbConnection cn = new OleDbConnection(connectionString);
            OleDbCommand com = new OleDbCommand(strInsert,cn);

            com.Parameters.AddWithValue(“@ad”, calis.Ad);
            com.Parameters.AddWithValue(“@soyad”, calis.Soyad);
            com.Parameters.AddWithValue(“@yas”, calis.Yas);

            MemoryStream ms = new MemoryStream();
            calis.Resin.Save(ms, calis.Resin.RawFormat);
            byte[] resimDizim = ms.GetBuffer();

            com.Parameters.AddWithValue(“@resim”, resimDizim);
            com.Parameters.AddWithValue(“@cinsiyet”, (Cinsiyet)Enum.Parse(typeof(Cinsiyet), calis.Cinsiyet.ToString()));

            cn.Open();
            com.ExecuteNonQuery();
            cn.Close();
        }
        public static void CalisanGetir(ComboBox Liste)
        {
            string strSelect = “SELECT CalisanID,Ad,Soyad FROM Calisanlar”;

            OleDbConnection cn = new OleDbConnection(connectionString);
            OleDbCommand com = new OleDbCommand(strSelect, cn);
            OleDbDataAdapter da = new OleDbDataAdapter(com);
            DataSet ds = new DataSet();

            if (com.Connection.State == System.Data.ConnectionState.Closed)
                com.Connection.Open();
           
            da.Fill(ds);

            Liste.DisplayMember = “Ad”;
            Liste.ValueMember = “CalisanID”;
            Liste.DataSource = ds.Tables[0];
        }

        public static void KomboDetay(ComboBox Kombom, ComboBox cinsiyet, TextBox ad, TextBox soyad, TextBox yas, PictureBox resim)
        {
            OleDbConnection cn = new OleDbConnection(connectionString);

            string strSelect = “Select Ad,Soyad,Yas,Resim,Cinsiyet From Calisanlar Where CalisanID=@ID“;

            OleDbCommand com = new OleDbCommand(strSelect, cn);

            int calisanID = int.Parse(Kombom.SelectedValue.ToString());

            com.Parameters.AddWithValue(“@ID”, calisanID);

            if (com.Connection.State == ConnectionState.Closed)
                com.Connection.Open();

            OleDbDataReader dr = com.ExecuteReader(CommandBehavior.CloseConnection);

            bool dogruMu = dr.HasRows ? true : false;

            if (dogruMu)
            {
                while (dr.Read())
                {
                    ad.Text = dr[“Ad”].ToString();
                    soyad.Text = dr[“Soyad”].ToString();
                    yas.Text = dr[“Yas”].ToString();

                    byte[] resimDizi = (byte[])dr[“Resim”];
                    MemoryStream ms = new MemoryStream(resimDizi);
                    resim.Image = Image.FromStream(ms);

                    cinsiyet.Text = Convert.ToString((Cinsiyet)Enum.Parse(typeof(Cinsiyet),dr[“Cinsiyet”].ToString()));

                }
            }
            dr.Close();
        }
    }
}
  Evet Buradaki Kodlarımızda Tamam Olduğuna Göre Artık Form Tarafı Kodlarımıza Geçebiliriz.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Access_Resim_Kaydetmek
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                CalisanE calis = new CalisanE();

                calis.Ad = txtAd.Text;
                calis.Soyad = txtSoyad.Text;
                calis.Yas = Convert.ToInt32(txtYas.Text);
                calis.Resin = pictureBox1.Image;
                calis.Cinsiyet = (Cinsiyet)Enum.Parse(typeof(Cinsiyet),comboBox2.Text.ToString());

                CalisanF.CalisanKaydet(calis);

                MessageBox.Show(“Başarılı Kayıt !”);
            }
            catch (Exception hata)
            {
                MessageBox.Show(“Genel Bir Hata Oluştu !” + hata.Message);
            }

            CalisanF.CalisanGetir(comboBox1);
            comboBox1.SelectedIndex = comboBox1.Items.Count – 1;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = “Sadece Resimler (.jpg.jpeg.bmp.png.gif)|*.jpg;*.jpeg;*.bmp;*.png;*.gif;”;

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                pictureBox1.Image = Image.FromFile(ofd.FileName);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string[] elemanlar = Enum.GetNames(typeof(Cinsiyet));
            comboBox2.Items.AddRange(elemanlar);

            CalisanF.CalisanGetir(comboBox1);
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            CalisanF.KomboDetay(comboBox1, comboBox2, txtAd, txtSoyad, txtYas, pictureBox1);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            comboBox1.Text = “”;
            comboBox2.Text = “”;
            txtAd.Text = “”;
            txtSoyad.Text = “”;
            txtYas.Text = “”;
            pictureBox1.Image = null;
        }
    }
}
  Artık Projemizi Derleyip Sonucunu Görebiliriz.Aşağıdaki Gibi Bir Görüntü Bizi Bekliyor Olacak.
 

  ornek
 NOT : Resimlerimizi Veritabanına Kaydederken Byte[] Dizisi Olarak Kaydettik,Ve Geri Alırken’de Byte[] Dizisi Olarak Geri Aldık.
       Bay,Bayan Uygulaması için Enum Kullandık Enumun Var Sayılan Değeri Int’dir Ama Biz Byte Olarak Ele Aldık Ekstradan Bellekte,
       Yer Kaplamasın Diye.

 Evet Arkadaşlar Bu Makalemizin’de Sonuna Gelmiş Olduk Bir Sonraki Makalemizde Görüşmek Üzere Sağlıcakla Kalın.

Blog Widget by LinkWithin

Yorum Yapın

Lütfen yorumunuzu onaylayın

 

Log In

Facebook

Kategoriler

Arşivler

Son YazIlar

Son Yorumlar

En Çok Okunanlar

Etiket Bulutu

Kimler Çevrimiçi

Şuanda 6 ziyaretçi çevrimiçi
1 ziyaretçi, 5 robot, 0 üye
Yapımcısı Ziyaretçi Haritası

Reklam AlanI

Traffic Exchange with 1,062,000+ members