C# C# Windows Form Örnekleri Programlama

C# Veritabanına Resim Yolu Ekleme ve Picturebox’ta Gösterme

Bu yazımızda C# ile Access veritabanı bağlantısı gerçekleştirceğiz. Örneğimizde Veritabanına resim yolu kaydetme işleminin nasıl yapılacağını göreceğiz. OpenFileDialog kullanarak veritabanına resmi değil resim yolunu kaydederek, kaydetmiş olduğumuz bu resim yolunun Picturebox’ta Resim olarak gösterilmesini sağlayacağız.

Örneğimizde kullanacağımız veritabanının ismi “dbPersonel” ve tablomuzun ismi “Kisiler” olacak. “Kisiler” tablosunu aşağıdaki şekilde tasarlayarak projemizin içinde “…/bin/Debug” klasörü altına kopyalıyoruz.
resim_ekleme_21
form tasarımımızı inceleyelim.
resim_ekleme_1
Görüleceği üzere Formumuzda kayıtları görüntülemek için kullanacağımız 1 adet datagridView, resim görüntülemek için kullanacağımız 1 adet Picturebox, Ekleme, Silme ve Güncelleme işlemlerini gerçekleştireceğimiz Butonlar ve Textbox‘ lar bulunuyor.
Formumuzu tasarladıktan sonra Datagridview‘ de tüm satırın seçili olabilmesi için vt_3
S
electionMode özelliğini FullRowSelect olarak ayarlıyoruz. Resim ekleme ve Güncelleme işlemlerini OpenFileDialog ile yapacağız. Bu işlem için Formumuzda bulunan Seç Butonunu kullanacağız. Seç butonuna basıldığında Resim seçme işlemini gerçekleştirecek olan bir Dialog penceresi açılacak. Resmimizin yolunu bu şekilde elde ettikten sonra Kaydetme ve Güncelleme işlemlerinde kullanacağız. Silme işlemini datagridView’ de seçili olan satıra göre yapacağız. Bağlantımızda Ekleme, Silme ve Güncelleme işlemlerini Parametreli Sorgu Kullanarak gerçekleştireceğiz. Parametre kullanımında eğer Access bağlantısı kullanıyorsak özellikle güncelleme sorunu yaşamamak için Parametre sırasına dikkat etmek gerektiğini hatırlatalım.

Kodlarımızda göreceğimiz diğer bir husus Datagrid’de tıklanan satıra ait verilerin ilgili textBox‘ larda görüntülenmesini sağlamak amacıyla ;

vt_4
d
atagridView CellEnter olayına yazmak olacaktır. Verilerimizin datagridview üzerinde görüntülenmesi işlemi Form yüklendiğinde, Ekleme yapıldığında, Güncelleme yapıldığında ve Silme işlemi gerçekleştiğinde olacağından tekrar tekrar yazmamak için KisiListele isminde  Metot oluşturacağız. Bu metodu ne zaman ihtiyaç duyarsak çağıracağız. Metot kullanımı hakkında yeterli bilgiye sahip değilseniz daha önceki metotlarla ilgili yazılarımıza bakabilirsiniz.

Kodlarımız aşağıdaki gibi olacaktır.

 

Kodlarımızı yazıp programımızı çalıştırarak test edelim.
resim_ekleme_3

 

Ayrıca C# dilinde yazılmış daha fazla örnek ve konular için C# Dersleri yazısını yada sağ üstte bulunan site içinde arama panelini kullanabilirsiniz.

20 Yorum

    • OpenFileDialog dosya = new OpenFileDialog();
      dosya.Filter = “Resim Dosyası |*.jpg;*.nef;*.png | Tüm Dosyalar |*.*”;
      dosya.ShowDialog();
      string dosyayolu = dosya.FileName;
      string yeniyol = (System.IO.Directory.GetCurrentDirectory())+”\\images\\” +Guid.NewGuid().ToString() + “.jpg”;
      File.Copy(dosyayolu, yeniyol);

      Resim Seçme bölümüne yukarıdaki gibi kodları eklerseniz otomatik olarak benzersiz isim vererek proje içinde önceden oluşturmuş olduğunuz bin/debug içindeki “images” klasörüne kopyalayacaktır.

      Yarın konuyla ilgili daha detaylı bir örnek oluşturacağım.

      • Hocam çok teşekkür ederim oldu ama bir sorun var gibi.Dosyayı projemdeki belittiğim klasöre kopyaladı yalnız dosya yolu olarak projemdeki yolu değilde başka bir yerden seçtiğim dosyayı baz almış bu kodda.Yani bu verdiğiniz kod sadece resmi projeme kopyalama görevi görmüş

        • Evet yolladığım kodlar resmi proje içine kopyalama ile ilgili. Veritabanına kaydetme kısmını Kaydet butonunda yapacaksınız. Onu yapmak için ise yukarıda yazmış olduğum kodlarda bulunan dosyayolu ve yeniyol değişkenlerinden yeniyol değişkenini kullanacaksız. Birde Bu değişkeni public olarak tanımlamalısınız ki kaydederken kullanabilesiniz.

          • Hocam Dosya yolu değilde application.startuppath ile yapılamaz mı.Dosya yolu ile yapıldıgı zaman proje baska bır dızıne tasındıgı aman proje içindeki resimleri bile görmüyor.

          • Sorununuzu şimdi daha net anladım. Çözüm için şunları yapmak gerekiyor.Klasör içine resmi attıktan sonra sizin için önemli olan kısım sadece dosya adını veritabanına kaydetmek olacak. Sadece Dosya adını almak için ise örnek olarak Ekle butonu için;

            komut.Parameters.AddWithValue(“@Resim”, Path.GetFileName(yeniyol));
            şeklinde resim dosyasının sadece adını alıp accesse kaydetmek gerekiyor. Daha sonra çağırıken zaten aktif klasör içine kopyaladığımız için
            Datagrid Cell Enter bölümünde;
            pictureBox1.ImageLocation = Application.StartupPath + “\\images\\” + dataGridView1.CurrentRow.Cells[3].Value.ToString();
            bu şekilde çağırmak gerekiyor. Kaydetme haricinde Güncelleme içinde
            Path.GetFileName(yeniyol) yi kullanmak gerekiyor.

          • Bu konuyla ilgili eklediğiniz dosyayı açamadım. Kodları buraya ekleme şansınız var mı?

      • Hocam Süpersiniz tam olarak istediğim buydu.Allah razı olsun büyük bir dertten kurtardınız beni 🙂

  • Aktif çalışan klasör içine atabilirsiniz.
    Örnek :MessageBox.Show(Directory.GetCurrentDirectory());
    şeklinde aktif dizini öğrenip kayıt işlemini ona göre yapabilirsiniz.

  • hocam merhabalar. elimde şablon olarak kullandığım bir word dosyası var. hasta sorgulama ekranında hastanın bilgilerini textboxlara çektikten sonra “bilgileri worde aktar” butonuyla bu bilgileri şablon dosyamdaki boş alanlara çekiyorum. yani taslak bir sayfaya farklı hastaların bilgilerini yazdırıyorum.

    sorun şu ki bu word dosyasının yolu benim bilgisayarımda ve program başka bilgisayarda çalıştığında bu dosyayı göremeyecek, dolayısıyla problem yaşanacak. ben dosyayı resources’a eklemeye çalıştım ama sanırım word dosyası olduğu için dosya tipini tanımadı. bu sorunu nasıl halledebilirim? şimdiden teşekkürler.

Yorum yap

Web Tasarım & Programlama sitesinden daha fazla şey keşfedin

Okumaya devam etmek ve tüm arşive erişim kazanmak için hemen abone olun.

Okumaya Devam Edin