C# C# Windows Form Örnekleri Programlama

C# Linq to SQL Classes Kullanarak İlişkili Tablodan Veri Çekme

Bu yazımızda C# Windows Form kullanarak Türkiye il ve ilçelerinin bulunduğu veritabanından veri çekme işlemini gerçekleştireceğiz. Örneğimizde Combobox1 ve Combobox2 kontrollerini kullanacağız.

Form açıldığında Combobox1 içine illeri yüklenmesini sağlayacağız. Daha sonra Combobox1‘ de seçilen il ismine göre ilçelerin Combobox2‘de listelenmesini sağlayacağız.
Kullanacağımız veritabanına göz atalım. Örneğimizde dbSehir isimli SQL veritabanını kullanacağız. Bu veritabanının içinde iller ve ilceler isimli 2 tablo bulunmakta. Bu tablolara ait tasarım ve ilşkilendirmeleri oluşturuyoruz.

linqtosql_il_ilce_1   linqtosql_il_ilce_2

linqtosql_il_ilce_3          linqtosql_il_ilce_4

linqtosql_il_ilce_5

Daha sonraboş bir Windows Form projesi oluşturarak projemize başlıyoruz.

linqtosql_il_ilce_6

Formumuzu yukarıdaki gibi 2 adet Combobox ekleyerek tasarladıktan sonra Solution Explorer penceresinde projemizin üzerinde sağ tıklayarak Add-New Item diyoruz ve açılan pencereden Linq to SQL Classes seçerek Tamam diyoruz.

linqtosql_il_ilce_7

Daha sonraki adımda Server Explorer penceresinden veritabanımızda bulunan iller ve ilceler tablosunu sürükle bırak yöntemiyle taşıyoruz.

linqtosql_il_ilce_8

Artık geriye en basit kısım kalıyor 🙂 .

Kodlarımızı oluşturuyoruz.

 

Form açıldığında Combobox1’de illerin gelmesini ve Combobox1’de seçili ile göre ilçelerin Combobox2’ye doldurulmasını sağlayacağız. Burada dikkat edilmesi gereken Combobox kontrollerine ait ValueMember ve DisplayMember özelliklerinin doğru bir şekilde tanımlanması ve veritabanında tablolar arası ilişkinin düzgün bir şekilde yapılması olacaktır.
Kodlarımız aşağıdaki gibi olacaktır.

Programımızı çalıştıralım.
linqtosql_il_ilce_9

Uygulamanın Videosu:

3 Yorum

  • linq to sql de tablonun tamamını çekmek yerine sadece istediğimiz sütunu çekebiliyorduk diye hatırlıyorum ama nasıl yapıldığını bilmiyorum. onunla ilgile bir ders hazırlar mısınız?

    • Evet istenen sütun çekilebiliyor. Örneğin yukarıdaki örnekte

      var sehirilceler = from i in db.ilcelers
      where i.sehir == Convert.ToInt32(comboBox1.SelectedValue)
      select i;

      “select i” den sonra “.” (nokta) ya basarsan sütun isimleri gelecektir. Yani select i.sehir yaparak sadece sehir sütununu çekebilirsin.

  • desteğin için teşekkür ederim. eline sağlık yaptım… Fakat anlayamadığım bir yer var.
    var sehirilceler = from i in db.ilcelers
    where i.sehir == Convert.ToInt32(comboBox1.SelectedValue)
    select i;

    anlamadım. 1)var sehirilceler = from i in db.ilcelers ne anlama geliyor.
    2) where i.sehir == Convert.ToInt32(comboBox1.SelectedValue) kısmında seçilen değer int. değilmi. neden kod bizden int. dönüştürmemizi istiyor.

Yorum yap