2 Ocak 2014 Perşembe

Veritabanı Ders Uygulamaları - 11... Structın Veritabanı Bağlantılarında Kullanımı...

Yaptığımız uygulamalarda veritabanı bağlantılarını metodlar kullanarak yapabiliyoruz... İşlem kolaylığı açısından metodlar her zaman kullanışlı olmaktadır... Ama unutmamak lazım ki struct kullanarak bilgisayarımızın performansını artırabiliriz... 100 - 200 satırın olduğu bir veritabanı için çok bir farklılık göremeyebilirsiniz... Ama 10000 - 20000 verinin olduğu bir programda performans önemlidir... Struct tam da veritabanı bağlantıları için istediğimiz olay değildir aslında... Classları kullanmak daha mantıklı olacaktır... Kod kalabalıklığını kaldırmak ve erişilebilirliği daha rahat sağlamak için Classları daha sonraki örneklerimizde kullanacağız... 
Bu örneğimizde ise struct kullanımına bir örnek daha vermiş olacağız... Dosya açma, kapatma, silme gibi temel işlemleri struct üzerinden yapacağımız gibi, aynı zamanda struct içerisinde metodları kullanacağız... 

1 - Öncelikle okul adında aşağıdaki veritabanımızı hazırlıyoruz... Bu veritabanını daha önce defalarca kullandık...










2 - Form tasarımımız sol taraftaki gibi olacaktır... Program çalıştığında da sağ taraftaki gibi olacaktır...

3 - Database komutlarımız için using kısmında oledb tanımlamasını yapınız...

4 - Veritaban adında bir tane struct tanımlaması yapınız... 4-9 arasındaki maddelerde yazan bütün komutları struct içerisinde yapacaksınız...  baglanti ve komut adında iki tane public erişim türünde değişkenimizi tanımlayınız... baglanti oledbconnection, komut oledbcommand sınıf türünde olacaktır... 

5 - Structımızın ilk metodu olarak ac adında veritabanını çağıracağımız ve açacağımız bir metod tanımlayacağız... Bu metodu string bir parametre alacak şekilde tanımlayınız... Bağlantıları kullandığınız değişkenlere göre ayarlanacak şekilde aşağıdaki gibi yapabilirsiniz...

baglanti = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source="+veritabanadi+".mdb");
komut  = new OleDbCommand();
baglanti.Open();

Burada daha önce kullanmadığımız bir işlem yapıyoruz... Parametre ile gelen değişkenimizin içerisinde veritabanı dosyasının adını veriyoruz ve bunu veritabanıadı parametre değişkeni ile çağırıyoruz... Bu şu anlama geliyor... Farklı veritabanı dosyalarımızı da çağırabiliriz...  

6 - Bağlantıları ac adında bir metod ile struct içerisinde açtığımız gibi kapat adında bir metod ile de kapatacağız... Aşağıdaki metodu struct içerisinde yazınız...
public void kapat()
            {
                baglanti.Close();
            }

7 - Veritabanından silmek istediğimiz kişiler için bilgisil adında bir metodu struct içerisinde hazırlayacağız... Bunun için yine bir string parametre tanımlayacağız ve bu parametreye sorguyu göndereceğiz... Bu metodun içeriği aşağıdaki gibi olacaktır... Yalnız metodun  parametre değişkenini, commandTexte atamayı unutmayın...

komut.Connection = baglanti;
komut.CommandText = // Buraya parametre değişkenini yazınız...
komut.ExecuteNonQuery();


8 - Aşağıdaki metod tanımlamasını yapınız... Bu metod bize girdiğimiz isme karşılık diğer bilgilerini verdirecek... 
public void bilgiver ( string sorgu, string gelenisim, ListBox gelenlist)
            {

            }

Bu tanımlamada önemli bir kısım vardır... O da ListBox gelenlist parametre tanımlamasıdır... Daha önce böyle bir tanımlama yapmamıştık... Metodların, Classların, Structların içerisinde C# nesnelerini direkt adları ile kullanamıyoruz... Bir metodun içerisinde listbox1.items.add yazmaya çalıştığınızda hata verecektir... Çünkü bunlar ana programın parçalarıdır ve bu kısımlar da kullanılmalarına izin verilmemektedir... Ama kullanmak istediğimiz elemanı kendi sınıfında parametre olarak tanımladıktan sonra istediğimiz gibi kullanabiliyoruz... Burada Form1 de kullanmış olduğumuz listbox1 i istediğimiz gibi çağırıp kullanabileceğiz... gelenlist aslında bizim listbox1 nesnemiz olacaktır... 

9 - bilgiver metodumuzun içerisinde girilen ismi arattırıp veritabanından gelen isimler ile kıyaslayacağız... Eğer isim var ise gelenlist adındaki listbox parametremize ekleyeceğiz... Bu sayede ismin bilgileri listbox1 in içerisinde gözükmüş olacaktır...  Bunu daha önceki örneklerimizde defalarca yaptık... Yinede aşağıdakine benzer bir örnek ile işlemimizi yapabiliriz... 

komut.CommandText = // Buraya veritabanını sorgulayacak olan parametreyi yazın; 
komut.Connection = baglanti;
OleDbDataReader oku = komut.ExecuteReader();
while (oku.Read())
{
         if (// Buraya gelenisim ile veritabanındaki ismi kıyaslayacak komutu yazınız...)
        {  
               // gelenisim veritabanında var ise buraya listboxa eklenecek bilgileri sırası ile ekleyin...
               // ad, soyad, yas, numara bilgileri sırası ile eklensin...

        }
}
oku.Close();


10 - Structımızın içeriği bu metodla beraber bitmiş oldu... Şimdi sıra ara ve sil butonlarımızın içeriğini hazırlamakta... Bunun içinde ilk olarak ara butonumuzu hazırlayacağız... Veritaban adındaki structımızı bir değişken ile çağıralım... 
Örneğin veritaban veri = new veritaban();

11 - Veritabanımızı açmak için aşağıdaki komutu kullanalım... Benim veritabanı dosyamın adı okul olduğu için aşağıdaki komut ile bağlantıları açıyorum... 
veri.ac("okul");

12 - Aşağıdaki sorguyu bilgiver adındaki struct metoduna gönderelim... bilgiver isimli metoda 3 tane parametre tanımlamıştık... 
* Select * From ogrenci sorgusu ilk parametre olacaktır... 
* İsmi girdiğimiz textbox ikinci parametre olacaktır... İsmi büyük harfler ile gönderelim ki küçük - büyük harf karışımı olmasın...
* listbox1 de üçüncü parametremiz olacaktır... 

13 - Aşağıdaki komut ile de veritabanımızı kapatalım...
veri.kapat();

14 - Sil butonumuzu hazırlayalım... 10, 11 ve 13. maddelerdeki komutlar aynen bu buton içinde geçerli olacaktır... Yalnız 12. maddedeki gibi sorgumuzu göndermemiz gerekecektir... Bunun içinde textboxa girilen ismi silecek olan bir sorgu gönderiniz... 

15 - Uygulama bu işlem ile birlikte bitmiştir... Sizde bu uygulamaya veri ekleyecek ve veri düzenleyecek bir çalışma yapınız...