.Net ortamında uygulama geliştirirken veritabanı erişimi, prosedür ve fonksiyon çağrımları için Oledb metodlarından faydalanıyoruz. NHibernate benzeri Kalıcı katmalara geçiş yapamadıysanız, bu metodları doğrudan kod içinde yada bizdeki gibi altyapınıza gömerek kullanmanız gerekecektir.
Qledb veri erişim ve prosedür/fonksiyon çağrımlarını yaparken kullandığımız metodları özetlersek[1]:
ExecuteNonQuery Satır Döndürmeyen bir komutu çalıştırır
ExecuteDataset Dataset olarak satırlar döndürür
ExecuteReader SqlDataReader olarak satırlar döndürür
ExecuteScalar Bir nesne olarak tek bir değer döndürür
ExecuteXmlReader XmlReader içinde bir Xml döndürür
FillDataset Gönderilen parametrelere göre Dataset'i doldurur
UpdateDataset Verilen update,insert,delete komutlarına göre DataSet in satırında değişiklik yapar
CreateCommand Verilen Stored Procedure ve Parametrelere göre Command nesnesi yaratır
ExecuteNonQueryTypedParams Herhangi bir satır döndürmeyen bir komutu çalıştırır
ExecuteDatasetTypedParams DataRow'un sütun değerlerini parametre olarak kullanıp DataSet döndüren bir komut işletir.
ExecuteReaderTypedParams DataRow'un sütun değerlerini parametre olarak kullanıp SqlDataReader döndüren bir komut işletir.
ExecuteScalarTypedParams DataRow'un sütun değerlerini parametre olarak kullanıp nesnenin değerini döndüren bir komut işletir.
ExecuteXmlReaderTypedParams XMLReader içersinde DataRow'un sütun değerlerini parametre olarak kullanan bir XML döndüren bir komut işletir
İhtiyacımız olduğunda en uygun olanını seçebilmek için bu metodların aklımızda olması iyi olacaktır. Böylece verimliliği de arttırmış oluruz.
Bazı hallerde değişse de(*) genelleyecek olursak, en çok kullanılan metodlar ve kullanıldıkları durumlar şöyle:
Birden çok kayıt döndürecek SELECT cümleleri ve bunları içeren prosedür/fonksiyon lar için; örneğin sürekli değişmeyen ve/veya büyük veri kümeleri ile çalışmamız gerekiyorsa "ExecuteDataset", anlık ve küçük verilere ihtiyacımız varsa "ExecuteReader" kullanabiliriz.
Tek kayıt döndürecek SELECT cümleleri ve bunları içeren prosedür/fonksiyon lar için ExecuteScalar tercih edilir.
INSERT/UPDATE/DELETE yapacak işlemler için ExecuteNonQuery kullanılır.
Hazır altyapıları kullanan yada kendi altyapısını geliştirmiş ekiplerde bu seviyedeki bağlantı metodları genellikle Veritabanı bağlantısı için hazırlanmış sınıflar içine gömülmüş oluyor. Geliştiriciye düşen bir veritabanı nesnesi yaratıp, bağlan/çalıştır gibi metodları çağırmak oluyor.
İş hayatına yeni başlayan biri için bu tür ekiplerde işe başlamak, getirdiği avantajlar çok olsa da, işin altyapısını öğrenmeyi zorlaştırıyor. Bize sunulan çerçevenin dışına taşmaya uğraşmalıyız.
*UPDATE cümlesinin kaç kaydı etkilediğini döndürmek gerektiğinde.
Kaynaklar:
[1]http://www.aspnedir.com/Article/DisplayArticle.aspx?ID=642