C# ve SQL İç İçe Select Kullanımı & Windows Combobox Doldurmak
Merhabalar arkadaşlar.
Simdi de ic ice select kullanimina bir bakalim
Arkadaslar simdi sorabilirsiniz bunu nerde kullanacaz diye
Orn 3 adet tablomuz olsun
1 personeller
1 1 personel_kodu
1 2 personel_adi
2 musteriler
2 1 musteri_kodu
2 2 musteri_adi
3 satislar
3 1 s_musteri_kodu
3 2 s_temsilci_kodu
3 3 satis_miktari
Bu sekilde tablolarimiz tamamlanmis oldu simdi sorgumuza gecelim ama once biraz aciklama yapalim
Şimdi arkadaşlar, sql de kayıt yada güncelleme yaparken " Kod " kullanmanız her zaman daha performanslıdır. Daha da açacak olursak.
Yukarıdaki örnek tablolarda görüyorsunuz. Hem Adı stunu var hem Kodu stunu var. Program içerisinde bu kodları ve adları combobox'a doldurursunuz.(onu da anlatacağım birazdan.) görünen kısım adı olur değeri ise kodu olur. sql. insert yada update içerisinde de değerini kaydedersiniz. Bunun amacı performans kazanımı ve Database boyutunda kazanım sağlamaktır.
Şimdi düşünün;
SQL de "Mustafa BÜKÜLMEZ" mi daha fazla kaplar, daha zor çağırılır yoksa "R01" yada "1" mi?
(int her zaman daha çok performans sağlar mümkünse int olarak tutun değilse mümkün mertebe kısa kodlar kullanın).
Şimdi bu konu üzerinde de iç içe select konusu ortaya çıkıyor.
Burada da bir handikap var tabi. İç İçe Select te de birden fazla sorgu çalışacak. Doğrudur. E o zaman nerde kaldı performans? diye düşünebilirsiniz ki çok haklısınız. Bende öle düşünüyorum ama yine de çok aşırı bir fark olmasada bu yöntem daha performanslıdır. Ek olarak boyutsal bir kazanımımız da var.
Devam edelim..
Tablomuzda personel kodu ile musteri kodu kaydedildi fakat kullanici nerden bilecek kodlarin kime ait oldugunuİç İçe Select ile kullaniciya isimleri gosterecegiz
Simdi sorgumuzu yazalim
Select
(Select personel_adi from personeller where personel_kodu = s_temsilci_kodu) as temsilci_adi
,(Select musteri_kodu from musteriler where musteri_kodu=s_musteri_kodu) as musteri_adi
,satis_miktari as miktar
Su anda personel kodunu gordugu yere personel tablosunda bulunan adi getirecektir
Şimdi de yukarıda bahsettiğimiz combobox doldurma işlemine de bakalım.
Datatable dt = sql.ShowTable("Select personel_adi , personel_kodu from personeller ");
//sorgumuzu yazdık.
//combobox doldurma işlemi
combobox1.DataSource = dt; // datatable yi datasource ye atadık
combobox1.DisplayMember = "personel_adi "; //görünecek adı
combobox1.ValueMember = "personel_kodu "; // görünen adın değeri
İnsert yada Update içerisinde de şu şekilde kullanılır
combobox1.SelectedValue; // seçili satırın değerini alır kaydeder
combobox1.SelectedText; // seçili satırın text ini alır kaydeder
combobox1.SelectedIndex; // seçili satırın sıra sayısını alır kaydeder (0,1,2, olarak devam eder.)
Bu arada arkadaşlar Datatable dt = sql.ShowTable.... daki sql.ShowTable kısmı kendi SQLConnectionClass' ımla ilgilidir. Yani her sql işleminde bir dünya kod yazmak yerine kendime ait SQLConnectionClass hazırladım ve onu kullanarak işlemlerimi yapıyorum. Adına takılmayın istediğiniz ismi verebilirsiniz. sqlclass, sqlconnection vs. vs. vs. ama arkadaşlar bu classı veremem bu classı kendinize göre hazırlamalısınız.
Saygılarımla
Mustafa BÜKÜLMEZ
http://mustafabukulmez.com/
0 Yorum: