17 Şubat 2014 Pazartesi

Veritabanı Ders Uygulamaları - 8

Vizyondaki filmleri gösteren ve onlar üzerinde kayıt yapabilen bir program yapacağız... Bu program ile birlikte bilgi girişi yaparken parametre kullanımı hakkında bilgi sahibi olacağız... Bilgi girişlerinin tamamında parametre kullanmakta fayda vardır...

1 - Aşağıdaki form tasarımını yapınız...
2 - Bu form tasarımından sonra kod kısmına doğru geçelim... Ama öncelikle form tasarımı sırasında label5 yazan labelların textlerini silelim ve comboboxın içerisine aşağıdaki başlıkları ekleyelim...
Komedi
Aksiyon
Dram
Bilim Kurgu

Bunlar bizim filmlerimiz için tür seçimlerinde kullanacağımız başlıklar olacak...

3 - Buradaki en önemli buton şu anda kayıt butonudur... Formun genel değişken kısmına baglan ve komut değişkenlerini tanımladıktan sonra kayıt butonunun içerisine aşağıdaki parametre ekleyen komutları yazalım...
string Sorgu = "INSERT INTO vizyon ([FilmAdı], [VizyonTarih], [Tur], [Konu]) VALUES (@FilmAd, @Tarih, @Tur, @Konu)";
komut = new OleDbCommand(Sorgu, baglan);
komut.Parameters.AddWithValue("@FilmAd",textBox1.Text.ToUpper() );   
komut.Parameters.AddWithValue("@Tarih", dateTimePicker1.Value.ToShortDateString());
// @tur ve @konu parametrelerini de siz yazınız... 
komut.ExecuteNonQuery(); // 

Parametre işlemlerinde öncelikle sorgu yazılır daha sonra sorgu içerisinde kullanılan parametrelere değer gönderilir... Parametrelerin başında @ işareti kullanılır ve parametrelere değer atanırken Add.WithValue kullanılır... 

4 - Yukarıdaki parametre işlemlerini buton içerisinde yaparken bağlantıyı açıp kapamayı unutmayınız...

5 - Geriye kalan işlemi bir metod üzerinden yapacağız... bu metodu aşağıdaki gibi tanımlayınız... 
void listele(string durum, string sorgu)

6 - Bu metod içerisinde veritabanından değerleri okuma işlemi yaptıracağız... durum adındaki parametreye iki değer göndereceğiz... 
  • Eğer "listekle" değerini gönderirsek girilmiş olan filmin adını listboxa ekleyecek... Unutmadan her kayıt sonunda bu metodu çağırarak listboxa film adını eklemeyi unutmayalım... Tabii bu durumda her kayıt sonunda film adı eklemeden listboxı temizleyeceğiz... 
  • Eğer "listgoster" değerini gönderirsek listboxda seçilmiş olan film adının diğer bilgilerini labellar da göstereceğiz... Tabii bu işlemi siz while (oku.Read()) döngüsünün içerisinde kontrol edeceğiniz bir if şartı ile yapacaksınız... Eğer "listekle" gönderilmişse listboxa film isimleri eklenecek, yok "listgoster" gönderilmişse labellar da bilgiler gözükecek...
7 - Bu metodun diğer parametresi ise sorgudur... Sql sorgusunu bu parametreye göndereceğiz... Eğer listboxa eklemeye yapıyorsak bütün tabloyu okuyacak olan bir sorgu yazmamız da bir mahsur yok... Ama seçili olan film ile ilgili bilgileri görmek istiyorsak o zaman bütün tablo yerine sadece seçili olan filmi göstermek daha iyi olacaktır... Bu durumda bir Where ifadesi kullanmalıyız... Aşağıdakine benzer bir ifade ile listboxın seçili olan elemanını kontrol ettirebiliriz... 
Select * From bilsay Where Ad = ' " + listbox1.items[listbox1.selectedindex]+ " ' ";


8 - Goster butonuna tıklandığı anda listboxda seçim yapıldı ise film bilgilerini labellarda göstereceğiz... Ama burada bir kontrol daha yapmalıyız... Eğer listboxda seçim yapılmadı ise bu durumda seçim yap diye uyarmalıyız... Bir kontrol nesnesinde seçim yapılıp yapılmadığını nasıl anlarız... Çok basit... C# daki bütün kontrol nesnelerinin Selectedindex özelliklerinde seçim yapılmadıysa değer olarak -1 geriye döner... Bu durumda buton içerisinde kuracağımız bir if şartı ile seçim -1 ise uyarı mesajı verdirmeliyiz... 

9 - Bu arada formun girişinde de film isimlerini yine listele metodu ile listboxa eklemeyi unutmayalım... 

Şimdi çalışan programdan bir kaç görüntü verelim... Daha önceden veri girilen formun açılışı...
Her hangi bir filmin gösterimi ve seçim yapılmadı ise uyarı mesajı verilmesi...



Bir film ile kayıt eklenmesi... 
Son olarak kayıt işleminden sonra yapılacak olan bir temizle metodu da eklenebilir... Bu kadar...