C# Veritabanı Nesneleri

C# üzerinde veritabanı işlemlerini gerçekleştirebilmek için .NET çatısı altındaki veritabanı sınıfları ve bunlardan türetilen nesneler kullanılmaktadır. Her bir nesnenin kendine özgü bir kullanım alanı olmakla birlikte neredeyse her nesne, bir veya birkaç nesne ile bağlantılı çalışmaktadır.

C# işlemlerini gerçekleştirirken öncelikle kullandığımız veritabanına uygun sınıfın seçilmesi gerekmektedir.

OleDbConnection ve SqlConnection Nedir?

Her iki sınıf da veritabanı bağlantısı sağlamak için kullanılır. Ancak OleDb sınıfları, tüm veritabanları ile uyumluyken SqlClient sınıfları Microsoft SQL Server (MSSQL) ile uyumludur. SqlClient sınıfları bu yüzden MSSQL üzerinde oldukça hızlı bir şekilde çalışır ve MSSQL’in tüm faydalarından yararlanmamızı sağlar.

Tüm veritabanları ile uyumluluğun sağlanması açısından OleDb nesneleri üzerinde örnekler geliştirilecektir. Yine de OleDb ve SqlClient arasında, temel konular üzerinde hiçbir fark yoktur, nesne isimlerini değiştirmek yeterli olacaktır.

Bağlantı Nesnesi: OleDbConnection

Veritabanı ile çalışmanın ilk koşulu, çalışılan veritabanına bağlantı sağlamaktır. Bunun için OleDbConnection sınıfı kullanılacaktır. Bu sınıf, bağlantı cümlesi dediğimiz, veritabanı programı veya bağlanmak istediğimiz sunucunun bilgilerini içermektedir.

Ancak bağlandığımız sunucunun bazı gereksinimleri doğrultusunda bu bağlantı cümleleri değişecektir. Bu bağlantı cümlelerinin nasıl oluşturulacağını ezberlemek yerine Visual Studio üzerinde bağlantı cümlesini elde etmek en kolay yöntemdir. Bağlantı cümlesinin nasıl oluşturulacağı … başlıklı yazıda anlatılmıştır.

OleDbConnection sınıfından baglanti adında bir nesne türetilmek istenirse;

Burada bağlantı cümlesi, Visual Studio içinde elde edilen bağlantı bilgileri olacağından aşağıdakine benzer şekilde bir kod yazılması gerekmektedir:

OleDbDataAdaptor ve OleDbCommand

Her iki sınıftan türetilen nesne de veritabanı üzerinde komut çalıştırmak için kullanılır. Ancak kullanılan komutlar ve verilerin getirilme şekline göre OleDbDataAdaptor veya OleDbCommand nesnelerinden uygun olanlar kullanılır.

Kullanım Türleri

Kullanılan veritabanı komutu ve verilerin döndürülme şekline göre olası durumlar aşağıdaki gibidir:

  1. SELECT ile tablo şeklinde veri elde etme
  2. SELECT ile tek bir veri elde etme (kişi sayısı, öğrencinin adı vb.)
  3. INSERT, DELETE veya UPDATE ile tablolarda değişiklik yapma

Bu 3 durum için farklı nesneler ve nesnelerin farklı metotları kullanılmaktadır.

1. SELECT ile Tablo Şeklinde Veri Elde Etme

Personel tablosundaki veriler, bir sınıftaki öğrencilerin ad ve soyad bilgileri, bir markette hiç satılmayan ürünler gibi bilgiler, tablo yapısı şeklinde elde edilir. Bu sebeple, veritabanından gelen verileri karşılayabilecek veri tiplerine ihtiyaç duyulur. Bu iş için DataTable sınıfından yararlanılabilir.

Tablo tipinde veri elde etmek için OleDbDataAdaptor sınıfından nesne türetmek gerekir.

Bu örnekte türetilen komut nesnesi, SQL cümlesi ve bağlantı nesnesini parametre olarak kabul etmektedir. Buradan gelen tablo şeklinde veriyi, DataTable nesnesinde tutabiliriz.

Ardından, OleDbDataAdaptor içindeki Fill() metodu ile oluşturulan DataTable nesnesi doldurulur.

Buradan dönen verinin Form nesneleri üzerinde kullanılabilmesi için veri kabul eden nesnelerin DataSource özelliği kullanılır. DataGridView nesnesine dönen verilerin aktarılabilmesi için aşağıdaki komut kullanılabilir:

2. SELECT ile Tek Veri Elde Etme

Eğer bir sınıftaki öğrenci sayısı, bir öğrencinin adı, marketin toplam cirosu gibi tek bir değer elde edilmek isteniyorsa OleDbCommand nesnesi kullanılabilir.

Örnekten de anlaşılabildiği gibi OleDbCommand sınıfından türetilen komut nesnesine SELECT, INSERT, UPDATE veya DELETE komutları gönderilebilir. Aynen OleDbDataAdaptor nesnesinde olduğu gibi, baglanti nesnesini kabul eder.

SELECT komutu ile elde edilen tek bir veriyi kullanmak için ExecutScalar() metoduna başvurulur. Bu metot, object tipinde veri döndürdüğünden tip dönüşümü yapılarak kullanılabilir.

3. INSERT, DELETE veya UPDATE ile Değişiklik Yapma

Tablo üzerindeki veriler üzerinde değişiklik yapmak için yine OleDbCommand sınıfından türetilen nesneye başvurulur. Komutu veritabanına gönderebilmek için ExecuteNonQuery() metodu kullanılır. Bu metot, INT tipinde veri döndürür. Bu veri, veritabanında etkilenen kayıt sayısını göstermektedir. Buradan dönen değer ile verinin silinip silinmediği, kaç adet kayıt eklendiği veya değiştirildiği gibi durumlar kontrol edilebilir.

Buradan dönen değer, sonuc adında bir değişkende tutulabilir.

 

About Hürkal HÜSEM

2010 yılından bu yana Bilişim Teknolojileri Öğretmeni olarak meslek liselerinde görev yapmaktayım.

View all posts by Hürkal HÜSEM →

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.