VB.NET'TE VERİTABANI İŞLEMLERİ

Merhabalar, bugün size VB.Net'te veritabanı işleminin nasıl yapılacağını anlatacağım.



Formumuz bu şekilde. Listele butonuna tıkladığımızda Listbox'ta, veritabanından çekeceğimiz kayıtları listeleyeceğiz. Toplam butonuna tıkladığımızda ise toplam kayıt sayımız textbox'a yazılacak. 

Öncelikle veritabanımızı oluşturuyoruz. SQL Server Management Studio kullanarak veritabanımızı ve tablolarımızı oluşturup, kayıtları giriyoruz. Öncelikle ilk işimiz, veritabanımıza erişim sağlamak olacak. Erişimi sağlamadan, bağlantıyı hazırlamadan veritabanında silme, güncelleme, ekleme, listeleme işlemleri yaptıramayız. 

Kodlar şu şekilde;


Gördüğünüz gibi, veritabanına erişim için bir adet bağlantı, SQL komutlarımızı çalıştırmak yani veritabanı işlemleri yaptırmak için ise bir adet komut oluşturuyoruz. "As New" ile, SqlConnection ve SqlCommand sınıflarından nesneler oluşturuyoruz. 

"Listele" butonumuzun altına girip, listeleme ile ilgili kodları ve komutu yazacağız. Veritabanımız ile ilgili bir sorun olduğunda programımızın donmaması için, Try-Catch bloklarının arasına kodlarımızı yazacağız.

Try bloğunun içine yazdığımız kodlar, kontrol edilmesi gereken, sorun olur mu olmaz mı diye yürütülen kodlardır. Burada sorun çıkarsa (mesela veritabanına bağlanma sorunu, sorgunun yanlış yazılması gibi) Catch bloğunun içerisindeki kodlar yürütülür. Yani Try sorunu yakalar, Catch ne yapılması gerektiğine karar verir. Catch'e genelde MsgBox yazılır, kullanıcıya bilgilenmesi için mesaj verilir.

Öncelikle, bağlantıyı kurması için oluşturduğumuz "baglanti"nin ConnectionString özelliğine bir değer girmemiz gereklidir. ConnectionString ile, erişimi yapacağımız veritabanı ile ilgili kimlik bilgisi, hangi server, hangi veritabanı olacağı girilir. Böylece, baglanti nesnemiz adresi alıp, gerekli yere erişir.

baglanti nesnemize girilen değeri bu şekilde alıyoruz;


Veritabanımıza girip en üst klasöre sağ tık yapıyoruz. Properties seçeneğine tıklıyoruz.


Çıkan pencerede "Name" kısmını kopyalıyoruz.


Visual Studio'da View menüsüne tıklanıp, Server Explorer penceresi açılır. O pencerede "Connect to Database" seçeneğine tıklanır.


Add Connection penceresi açılır. Orada, Server Name kısmına kopyaladığınız isim yapıştırılır. Sonra Connect to a database kısmından combobox'a tıklayıp veritabanı listesi açılır. Erişmek istediğiniz veritabanına tıklanır. "OK" a tıklanır.


Veritabanı seçildiğinde, bağlantıda eğer bir sorun olmazsa "Data Connections" bölümüne veritabanı bağlantınız eklenir. Bu bağlantıya tıklanır.


Properties penceresinden Connection String özelliğini kopyalanır. Sonra baglanti.ConnectionString'e çift tırnak içerisine yapıştırılır.

komut.CommandText, veritabanı üzerinde hangi sorguyu yaptıracağımızı belirlediğimiz satırdır. Biz listeleme işlemi yaptıracağımız için Select sorgusu yazıyoruz. Bu kodların arasında SQL kullanıldığı için, SQL sorguları yazmayı bilmeniz gerekmektedir.

"Select * from ogrenciler" sorgusu, ogrenciler tablosundaki tüm alanları ve kayıtları listelememizi sağlayan sorgudur.

Sonrasında, komuta hangi bağlantıyı kullanması gerektiğini söyleriz. Artık komut o bağlantıyı kullanmaya başlar. 

Şimdi, eğer bir sorgudan geriye dönecek değerler birden çok ise bir SqlDataReader nesnesi oluşturmamız gerekmektedir. Bu, bir dizi görevi görüyor denebilir. Nesneyi oluşturduktan sonra, bağlantıyı kesinlikle açmamız gerekmektedir. Bağlantının nerede açılacağı, nerede kapanacağı büyük önem taşımaktadır, aksi halde program çalışmaz, hata verir.

Bağlantıyı açtıktan sonra, oluşturduğumuz SqlDataReader nesnesinin içerisine komut yolu ile geri dönen kayıtları atıyoruz.

"komut.ExecuteReader" : Eğer geriye dönen birden çok kayıt ve alan varsa kullanılır.
"komut.ExecuteScalar" : Eğer geriye bir değer dönüyorsa (mesela işçilerin toplam maaşı, İstanbul'da doğan kaç kişi olduğu gibi...) kullanılır.
"komut.ExecuteNonQuery" : Eğer geriye bir değer dönmeyecekse, veritabanı üzerinde kayıt ekleme(insert), silme(delete), güncelleme(update) işlemleri yapılacaksa kullanılır.

Bu programda geriye birden çok kayıt döneceği için executereader kullanıyoruz. Nesnenin içine attık, artık kayıtlar elimizde ama listeleme yapmamız yani bir şeye aktarmamız gerekmektedir. Tüm kayıtları birer birer almamız için Do While Loop döngüsünü kullanacağız. Nesnenin her bir kaydı teker teker okunmaktadır. Döngünün içerisine, kayıtları nerede görüntüleyeceksek onu yazıyoruz. Listbox'ta görüntüleyeceğimiz için Listbox'a ekleme kodunu yazıyoruz. 

İçerisine yazdığımız dr("ogr_no"), dr("ogr_adi")... tablodaki alan adlarımızdır. Öğrenci no, adı, soyadı ve kayıt tarihlerini, aralarında tab boşluğu bırakarak (VbTab) listbox'a yan yana yazıyoruz. Her kayıt, farklı satırda oluyor.

Döngüden çıkıp, artık listeleme işimiz bittiği için nesneyi ve bağlantıyı kapatıyoruz. En son olarak, Catch içerisine, hatayla karşılaşıldığında neler yapılacağını yazıyoruz. Biz sadece MessageBox ile bir bilgi veriyoruz.


Gördüğünüz gibi listeleme yapıldı. Toplam butonunun altında ise toplam öğrenci sayısını bulacağız. 


Burada, isterseniz tek bir connectionstring ile işlem yapabilirsiniz. Yani, butonların dışında, Public Class From1'in hemen altında bu tanımlama yapılabilir. Eğer farklı iki veritabanına erişilecekse, farklı ConnectionStringler, bağlantılar ve komutlar olabilir. 

CommandText ile sorgu yazılır. Count ile kayıtlar saydırılır. Komut ile bağlantı bağlanır, bağlantı tekrardan açılır. Buradaki işimiz daha kolaydır, TextBox'ın içerisine geri dönen değeri atıyoruz. Geriye sadece bir değer döndüğü için (toplam kayıt sayısı) ExecuteScalar kullanıyoruz. Sonra bağlantıyı kapatıyoruz. Böylece program tamamlanıyor.

Hangi kod satırını, nerede kullanmayı bilmeniz için bununla ilgili çok fazla örnek yapıp, farklı şekildeki örnekleri denemeniz gerekmektedir. Mesela birden fazla veritabanına, tabloya erişebilmenizi, nasıl işlem yapmanız gerektiğini, hangi durumlarda hangi özelliği kullanmanız gerektiğini, görsel kontrollere nasıl veritabanından çekilen verilerin bağlanabildiğini araştırarak ve bol örnek yaparak anlayabilirsiniz. 

İyi günler dilerim...


Bu blogdaki popüler yayınlar

C# - WPF APPLICATION - LISTBOX KULLANIMI

VB.NET'TE VERİTABANINA KAYIT EKLEME İŞLEMİ