Linq ile veritabanından listview e veri çekme


Deprecated: Function create_function() is deprecated in /var/www/vhosts/digitaldunyam.net/coder.digitaldunyam.net/wp-content/plugins/codecolorer/lib/geshi.php on line 4698

Linq to Sql ile veritabanımızdaki tabloyu sorgulayarak windows form mumuzdaki listview kontrolüne nasıl veri çekip göstereceğimizi bu örnek ile öğrenelim.

Öncelikle Linq to Sql den birz bahsedecek olursak; bu teknoloji, ORM aracını kullanarak bağlanılan veritabanındaki tabloları sınıf, kolonları da özellik(property) olacak şekilde üretir. Bu sayede oluşturulan sınıf içinde sql join işlemi yapmadan nesnelerle ilişkilendirme yaparak özelliklerine yani kolonlarına erişile bilmekte. Bunu söylemeden geçmek istemiyorum, nesneler hakkında temel bilgisi olmayan arkadaşlar linq e başlamadan önce nesneler(OOP) konusunda biraz bilgi sahibi bir kaç örnek yapmış olmaları gerekir.

Bu örneğimizde linq’e yeni başlayanların kafası karışmaması için basit bir okuma işlemi yaptık. Daha önce örneklerim de de kullandığım coder isimli veritabanımı(“tblkisi” tablo adında id, adi, soyadi olarak 3 kolondan oluşmakta) projemize tanıtmak için Solution Explorer penceresinden projemize sağ tıklayıp Add New Item deyip LINQ to SQL Classes .dbml dosyasını ekliyoruz. Burada dosya ismini dcoder ismi ile ekledim. Veritabanına yapılan bağlantı dosyasının adı(dcoderDataContext) ile işlemlerimize devam edeceğimiz için burası önemli. Kodlara bakarak neden isim verdiğimi öğrenebilirsiniz.

Soldaki server explorer yardımı ile veritabanımıza bağlantıyı gerçekleştiriyoruz. Ardından resimdeki gibi kullanacağımız tabloyu ortaya sürüklüyoruz. Kayıt edip form ekranımıza geçiyoruz.

Bundan sonra yapılacak iş form arayüzüne bir buton ve listview atıp butona clik olayına alttaki kodları yazmak;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void button1_Click(object sender, EventArgs e)
{
dcoderDataContext ctx = new dcoderDataContext();

var x = from kisiler in ctx.tblkisis where kisiler.id < 10 select kisiler;

foreach (tblkisi k in x)
{
ListViewItem li = new ListViewItem();
li.Text = k.id.ToString();
li.SubItems.Add(k.adi.ToString());
li.SubItems.Add(k.soyadi.ToString());
listView1.Items.Add(li);
}
}

[stextbox id=”info”]

Projemize eklediğimiz LINQ to SQL Classes dosyayı sizde dcoder olarak kayıt ettiyseniz kod kısmında Visual Studio intellisense hatırlatma özelliğinden otomatik dcoderDataContext isminde gelecektir. var x değişkenine, linq ile yaptığımız sorgu sonucunu(sorgumuz id’si 10 dan küçük olan kayıtları getirmek) atadık. Bu kayıtları göstermek için foreach ile döngüye girdik buradaki değerleri listview de gösterdik. [/stextbox]

Görüldüğü gibi 2 satır kod ile kolayca veriyi ekrana yansıttık. Bu sonucu Ado.net ile yapılan örnekle de alabilirsiniz. Fakat aradaki kod kolaylığı dişe değecek kadar büyük. Sql connection listview örneği bağlantısına tıklayarak Ado.net ile yapılmış haliyle karşılaştırabilirsiniz.