« Geri
Yorumlar
Makaleyi Sakla
Arkadaşıma Gönder
Yazdır
| Yazar |
: Timur Gündoğdu |
| Okunma Sayısı |
: 3374 |
| Tarih |
: 20.12.2004 21:16:00 |
| Kategori |
: ASP.NET |
| Konu |
: Microsoft.ApplicationBlocks.Data |
| Açıklama |
: VERİ ERİŞİMİ İÇİN UYGULAMA BLOKLARI |

Microsoft
Application Blocks, SQL Server'daki Stored Procedure'leri kullanmanızı
ve SQL cümleleri ile SQL Server'a bağlanmanıza yardımcı olan bir .NET Bileşenidir.Bu
bileşen SQL Server'dan Dataset, XMLReader ve SQLDataReader nesneleri döndürür.Uygulamalarınızda
veritabanı ile ilgili işlemlerdeki kod miktarını azaltmak için bu bileşeni kullanabilirsiniz.
Microsoft
Application Blocks ile neler yapabiliriz?
-SQL Server'daki Stored Procedure' ları ve SQL text command'ları çalıştırabiliriz.
-Parametre detaylarının belirleyebiliriz.
-SQLDataReader, DataSet, XMLReader nesneleri ve tek değer döndürebiliriz.
-Parametre Caching ' i desteklemesi sayesinde performansta ciddi kazanımlar
elde edebiliriz.
-DataSet 'i kullanıcı tanımlı bir update komutu ile güncelleyebiliriz.
-SqlCommand nesneleri yaratabiliriz.
Tabi tüm bunları yaparken tek satır kod kullandığımızı unutmamak gerekir.
Örneğin, Microsoft Application Blocks ' un referans edildiği bir uygulama içerisinde,
bir Stored Procedure çağırabilir ve DataSet olarak verileri döndürebilirsiniz.Tüm
bu işlemleri tek satır kodla yapabilirsiniz.
[Visual Basic]
Dim ds As DataSet = SqlHelper.ExecuteDataset( _
connectionString, _
CommandType.StoredProcedure, _
"getProductsByCategory", _
new SqlParameter("@CategoryID", categoryID))
[C#]
DataSet ds = SqlHelper.ExecuteDataset(
connectionString,
CommandType.StoredProcedure,
"getProductsByCategory",
new SqlParameter("@CategoryID", categoryID)); |
Visual Basic ve
C# Microsoft.ApplicationBlocks.Data projelerinin her ikisi birden Microsoft.ApplicationBlocks.Data.dll
assembly dosyasını üretmek için derlenebilirler.Bu dosya iki tane sınıf içermektedir.Bunlardan
ilki SqlHelper ( veritabanı ile ilgili çalıştırılacak olan metotları içeren
sınıf ) , ikincisi ise SqlhelperParameterCache ( Parametrelerin kullanımı ve
hafızada saklanması ile ilgili metodları içeren sınıf ) sınıfıdır.
Neden Microsoft.ApplicationBlocks.Data
' yı Kullanmalıyım?
Microsoft.ApplicationBlocks.Data yazılım geliştiricilere geçmişte veritabanı
ile yaptıkları hemen hemen tüm işlemleri metodik olarak sunmaktadır.Bu da uygulamanın
kod kalitesinin artmasına ve uygulama için harcanan sürenin kısalmasına neden
olmaktadır.
Veri Erişimi Uygulama Bloklarının Şematik Anlatımı

SqlHelper
Metotları
| 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 |
Senaryo
Veritabanındaki Personel tablosundan verileri SQL Server'daki bir Stored Procedure
yardımıyla çekmek isteyelim.Tabi bunu yaparken de ApplicationBlocks'u kullanalım.
İlk önce yeni bir ASP.NET projesi yaratalım ve Microsoft.ApplicationBlocks.Data.dll
assembly'sini Add Reference diyerek ekleyelim.Bundan böyle SqlHelper ' ı kullanmak
istediğimiz her yerde;
| using Microsoft.ApplicationBlocks.Data; |
Diyerek belirtmemiz
yeterli olacaktır.
Personel Tablosu
| PERSONEL |
| personel_ID |
| isim |
| dog_tarih |
| adres |
| cep |
| ev |
SQL Server'daki Stored Procedure
| CREATE PROCEDURE
dbo.PersonelBilgiGetir
@personel_id
nvarchar(3)
AS
SELECT * FROM Personel WHERE personel_ID=@personel_id
RETURN
GO
|
Bu SP'de basitçe dışardan
gelen personel_id'sine göre Personel tablosundan seçim yapılıyor.
Personel.cs
public DataSet
PersonelBilgisi(params object[] pers_id)
{
DataSet ds = new DataSet();
SqlHelper.FillDataset("Server=Localhost;database=Deneme;uid=sa;pwd=123456;","PersonelBilgiGetir",ds,new
string[] {"tablom"},pers_id);
// public static void FillDataset ( System.String
connectionString , System.String spName , System.Data.DataSet dataSet ,
string[] tableNames , params object[] parameterValues )
return ds;
}
|
PersonelBilgisi
metodu ile ilk önce bir DataSet nesnesi oluşturuluyor ve bu nesne içersine SqlHelper.FillDataset
metodu yardımıyla tablom adlı bir DataTable içerisine yukarıdaki SP'den
gelen kayıt dolduruluyor.Daha sonrasında da DataSet nesnesi döndürülüyor.
sayfa.aspx.cs
Personel
personel = new Personel();
DataSet ds;
ds = personel.PersonelBilgisi(3);
|
Sayfa kodlarımızda
ise Personel sınıfındaki PersonelBilgisi metodu parametre bilgisi gönderilerek
çağırılıyor.Böylelikle üç katmanlı bir yapı içersinde projemizi inşa etmiş bulunuyoruz.Bunlar;
1.Veritabanı
2.Veriye Erişim
3.Arayüz
Bu yapıyı kullanmak bize hem güvenlik hem de performans açısından çok büyük
kazanımlar getiriyor.Yapılacak hatalar en aza indirgenerek projeye harcanan
zaman da kısalıyor.
Microsoft.ApplicationBlocks.Data'yı
Nerden İndirebilirim?
Data
Access Application Block for .NET v2
Kaynak: msdn.microsoft.com
Timur Gündoğdu
NCS Web Developer