Asp.net veri tabanı işlemlerimizi gerçekten çok kolay bir hale getirmektedir. Klasik yöntemlerin dışında veriye erişmemiz ve düzenlememiz için bir çok kolay araç sunmakta olan visual studio ne yazıkki bir çok yazılımcı tarafından tam anlamıyla bilinmemektedir. Vakit buldukça birbirini takip eden derslerle, bildiğim ve elimden geldiği kadarıyla visual studionun ve asp.net teknolojisinin faydalarını aktarmaya çalışacağım
İlk önce bu dersleri takip etmeniz için gerekli olanlardan bahsedeyim. Visual Studio 2005-2008 (framework 2.0 kullanacağımızdan 2005’de kullanabilirsiniz ancak ben 2008 üzerinden dersleri anlatacağım, isterseniz ayrıca Web Developer Express ürünlerinide kullanabilirsiniz), SQL Server 2005 Express Edition (Eğer express edition kullanıyorsanız biliyorsunuz ki içinde malesef bir veri tabanı yönetici bir program bulunmamaktadır, bunun için “Microsoft SQL Server Management Studio Express” yüklemeniz gerekmektedir.), Northwind veri tabanı ki bunu googleda arama yaptığınızda kolayca bulup yükleyebilirsiniz. Şimdilik gerekli olanlar sadece bunlar.
İlk yazıda Data Access Layer (DAL) teriminden ve kullanım yerinden bahsedeceğiz. Bir sonraki yazımızda bunun devamı olarak Business Access Layer(BAL)-İş Mantığı Katmanı anlatılacaktır.
1- Yeni bir web projesi oluşturma ve veri tabanına bağlantı
DAL’i oluşturmadan önce yeni bir web projesi oluşturmamız gerekiyor. Bunun için programımızda File menüsünden , New > Web Site kısmını seçiyoruz. Açılan pencerede “ASP.NET Web Site” iconunu seçerek “ok” butonunu tıklıyoruz.

Bu işlem sonucunda web sitesi projemiz oluşmuş olacak. İçerisinde App_Data, Default.aspx ve web.config dosyları olacaktır.
İkinci adımımız Northwind veri tabanımızı sql server’ımıza eklemek bunun için sql manager programımız açıyoruz. (Ben SQL Server Management Studio kullanıyorum). Açılan programda SQl servermızı bağlanıp, database klasörünü sağ tıklayı “attach” diyoruz.
Açılan ekranda “Add” butonunu tıklayarak, indirdiğimiz Northwind.mdf dosyasını seçip “Ok” butonunu basıyor ve bu basamağı bitirmiş oluyoruz.
Şimdi oluşturduğumuz web sayfasında bir “bağlantı cümlesi-connection string” oluşturmamız gerekiyor böylece, sql serverımızda bulunan northwind veri tabanınıza bağlanmış olacağız. Ancak visiual studio “DAL” oluştururken bu işlemi kendi yapacağından bu karmaşık bağlantı cümlesini “web.config” dosyamıza elle yazmamıza gerek yok.
2- Data Access Layer (DAL)
İstersek web sitemizin sayfalarından veri tabanına doğrudan bağlanabilir (örneğin ADO ile) ve işlem yapabiliriz. Ancak bu şekilde data access alanımız ve prezantasyon alanımız aynı yerde bulunmuş olacak. Önerilen yöntem data erişim bölümünü ve prezentasyon (herhangi bir sayfa .aspx) bölümünü birbirinden ayırmak. Bunu ayrılma işlemi sonucunda yeni bir katman oluşacaktır. Bunu ayrı bir class sınıfı olarak düşünebiliriz ve yazılarımız boyunca biz Data Access Layer (DAL) kullanacağız. DAL’miz veri tabanı işlemleri için gerekli cümleleri barındıracak. Örn INSERT,Select, UPDATE gibi. Böylelikle web sayfamız veri tabanına doğrudan bağlanmamakla birlikte bu obje aracılığı ile değişik işlevlere sahip olabilecek. Data access katmanları veriye ulaşmak için tipik metodlar içermektedir. Mesela Norhwind veritabanını düşünecek olursak satış için gerekli olan “Products-ürünler” ve “Categories-Kategoriler” tablosu bulunmaktadır. Bizim DAL’miz şu metodları içermelidir.
- TumKategoriler(), kategoriler ile ilgili tüm bilgileri bize döndürür.
- TumUrunler(), veritabanındaki bütün ürünlerin bilgilerini getirir.
- KategoriNumarasinaGoreUrunler(), belirli kategoriye ait ürünleri getirir.
- UrunNumarasınaGoreUrun(), belirli bir ürünün numarasına göre(ürün ID’si) ürün bilgilerini getirir
Bu metodlar çağırıldığında, DAL veri tabanına bağlanacak ve gerekli sorguları koşturacaktır. Bu metodlar bize DateSet yada Datareader objesi döndürür.
3- DataSet ve TableAdapter Oluşturmak
DAL katmanımızı oluşturmak için ilk önce projemize bir dataset eklememiz gerekmektedir. Bunu yapmak için “Solution Explorer” pencersinde projemizi sağ tıklayıp “Add New Item” dememiz gerekiyor.
Açılan pencerede “DataSet” ikonunu seçerek adını “Northwind” olarak atıyoruz. “Add” butonunu bastıktan sonra bir uyarı penceresi çıkacaktır. Bu uyarıda oluşturulacak datasetin App_Code klasörüne koymak isteyip istemediğimiz soruluyor. “Evet” diyoruz. Böylece Visual Studio “App_Code” isimli yeni bir klasör oluşturacak ve yeni datasetimizi bunun içine yerleştirecek.
Bu işlemden sonra datasetimiz otomatik olarak açılacaktır. Açılan açık mavi ekranının her hangi bir yerini sağ tıklayıp “Add >> Table Adapter” diyelim.
Açılan pencerede “New Connection” butonuna basıyoruz. Açılan yeni pencerede server adını yazıp veri tabanımızı seçiyoruz.
“Ok” butonuna basıyoruz ve bir önceki pencerede “Next” butonu aracılığı ile bi sonraki basamağa geçiyoruz.
Gördüğünüz üzere burada bağlantı cümlemizin ismi görülmektedir. Bu isimde türkçe karakter ve noktalama işareti olmamasına özen gösterin. Daha öncede dediğimiz gibi bu ekranda “Next” dediğimizde Visual Studio otomatik olarak bağlantı cümlemizi web.config dosyasına kaydetmiş olacak.
Bir sonraki ekran aşağıdaki gibi olacaktır.
Bu ekranda hiç bir değişiklik yapmadan “Next” diyoruz ve bir sonraki basamağa geçiyoruz.
Bu ekranda veritabanındaki herhangi bir tabloya bağlanmak için gerekli olan cümleyi yazabilmemiz için bir alan mevcuttur. Ancak bu işlemin güzel yanı bu cümleyi biz yazmak zorunda değiliz. “Query Builder” bu konuda bize büyük kolaylık sağlamaktadır. “Query Builder” butonuna basıyoruz. Ekrana arka arkaya açılmış iki pencere gelecektir. En üsteki aktif pencerede veri tabanımızdaki tabloları görebilmekteyiz. Burada “Products” tablosunu seçiyoruz “Add” diyoruz. Tablomuz arka plandaki pencereye eklendikten sonra “Close” diyerek bu pencereyi kapatıyorz.
Bu ekrandaki tablomuzda “All Columns” hariç diğer bütün alanlardaki checkboxları seçili hale getiriyoruz. İstersek “Excute Query” diyerek gelen sonucu görüntüleyebiliriz. Bu işlemler bittikten sonra “Ok” butonuna basıyoruz. Bir önceki ekranımızın artık boş olmadığını ve sql cümlesinin bulunduğunu göreceksiniz. “Next” diyerek bir sonraki adıma geçiyoruz.
“Return a DataTable” alanını “TumUrunler” olarak değiştiriyoruz ve “Next” butonuna basıyoruz. Bir sonraki ekranda ingilizce olarak bize select(seçme işlemi) cümlesinin yanında kayır, düzenleme ve silme cümlelerininde başarıyla oluşturulduğu söylenecek. Gördüğünüz üzere kayıt, düzenleme ve silme işlemleri için ayrı bir sql cümlesi yazmanıza gerek kalmadı.
Artık içerisinde datatable(Northwind.Products) ve dataadapter (NorthwindTableAdapters.ProductsTableAdapter) bulunmaktadır.
Table adapterımıza yeni sorgular eklemeden önce yapmamız gereken bir işlem var. Dikkat ederseniz adaptörümüzde SupplierID(Tedarikçinin IDsi) ve CategoryID (Kategori IDsi) diye iki alan var. İlerde bu bilgileri web sayfamızda görüntülemek istediğimizde, son kullanıcıya ID leri göstermek hem güvenli olmayacak hemde kullanınıcın bir işine yaramayacaktır. Bu durumu gidermek için adaptörümüzü sağ tıklayıp açılan pencerede “Configure” diyoruz. Açılan ekranda daha önce hazırladığımız sorgu görünecek, onu silip aşağıdaki sorguyu yazıyoruz.
“SELECT ProductID, ProductName, SupplierID,
CategoryID, QuantityPerUnit, UnitPrice, UnitsInStock,
UnitsOnOrder, ReorderLevel, Discontinued ,
(SELECT CategoryName FROM Categories WHERE
Categories.CategoryID = Products.CategoryID) as
CategoryName, (SELECT CompanyName FROM Suppliers
WHERE Suppliers.SupplierID = Products.SupplierID)
as SupplierName
FROM Products”
Dikkat ederseniz burda subQuery kullandık. İçi içe sorgu kullanarak kategori adı ve tedarikçinin adını ilerde kullanıcılara gösterebileceğiz.
Şimdi Products Table Adapter’ımıza yeni sorgu cümleleri ekleyelim bunun için yukarıdaki ekranda görünen adapterın başlık kısmına sağ tıklayıp açılan menüden “Add >> Query” diyoruz. Dikkat ederseniz daha önceki işlemlerle aynı ekran çıktı “Next” diyor ve bu sonraki basamağa geçiyoruz. “SELECT which returns rows” radio butonunu seçili bırakıp sonraki ekrana geçiyoruz. Açılan sorgu ekranına aşağıdakini kopyalıyoruz. (isterseniz Query Builder kullanarak bu cümleyi kendinizde oluşturabilirsiniz.)
“SELECT ProductID, ProductName, SupplierID, CategoryID,
QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder,
ReorderLevel, Discontinued , (SELECT CategoryName
FROM Categories WHERE Categories.CategoryID =
Products.CategoryID) as CategoryName,
(SELECT CompanyName FROM Suppliers WHERE
Suppliers.SupplierID = Products.SupplierID)
as SupplierName
FROM Products
WHERE CategoryID = @CategoryID“
Bunu yazdıkdak sonra bi sonraki ekrana geçiyoruz ve “GetDataBy” yazan alanı “KategoriyeGoreUrunler” adı ile değiştiriyoruz ve “Finish” diyerek bu işlemi bitiriyoruz. Aynı bu yöntemi kullanarak aşağıdaki iki sorguyuda adaptörümüze ekliyoruz.
- TedarikciyeGoreUrunler
"SELECT ProductID, ProductName, SupplierID, CategoryID,
QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder,
ReorderLevel, Discontinued , (SELECT CategoryName
FROM Categories WHERE Categories.CategoryID =
Products.CategoryID) as CategoryName,
(SELECT CompanyName FROM Suppliers WHERE
Suppliers.SupplierID = Products.SupplierID) as SupplierName
FROM Products
WHERE SupplierID = @SupplierID”
- UrunNoyaGoreUrunBilgisi
"SELECT ProductID, ProductName, SupplierID, CategoryID,
QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder,
ReorderLevel, Discontinued , (SELECT CategoryName
FROM Categories WHERE Categories.CategoryID =
Products.CategoryID) as CategoryName,
(SELECT CompanyName FROM Suppliers WHERE Suppliers.SupplierID =
Products.SupplierID)
as SupplierName
FROM Products
WHERE ProductID = @ProductID”
Böylelikle Products Table Adapterimizi tamamlamış olduk. Önceki yöntemleri izleyerek Tedarikçi(supplier) Table Adapter ve Personel(Employees) Table Adapterlerını ekleyelim. Bunun için aşağıdaki sorguları kullanabilirsiniz yada query editörü kullanabilirsiniz.
- SuppliersTableAdapter
- TumTedarikciler –“bu sorgu adi”
"SELECT SupplierID, CompanyName, Address, City, Country, Phone
FROM Suppliers”
- UlkeyeGoreTedarikciler
“SELECT SupplierID, CompanyName, Address, City, Country, Phone
FROM Suppliers WHERE Country = @Country”
- TedarikciNoyaGoreTedarikciBilgisi
“SELECT SupplierID, CompanyName, Address,City, Country, Phone
FROM Suppliers WHERE SupplierID = @SupplierID”
- EmployeesTableAdapter
- TumPersonel
“SELECT EmployeeID, LastName, FirstName, Title,HireDate, ReportsTo, Country FROM Employees”
- SefineGorePersonel
"SELECT EmployeeID, LastName, FirstName, Title, HireDate, ReportsTo, Country FROM Employees
WHERE ReportsTo = @ManagerID”
- PersonelNoyaGorePersonelBilgisi
"SELECT EmployeeID, LastName, FirstName, Title, HireDate, ReportsTo, Country FROM Employees
WHERE EmployeeID = @EmployeeID”
Bu adaptörleri ekledikten sonra ekranımız şu şekilde olmalıdır.
Şimdi ufak bir deneme yapalım. Default.aspx sayfamızı açalım. Design(dizayn) görünümündeyken araç çubuğumuzdaki data sekmesinden yeni bir gridview ekliyoruz(gridview’ı sürükleyip sayfamızda istediğimiz yere bırakarak bu işlemi yapabilirz)
GridView’ın sağ üst köşesindeki küçük oka basarak küçük ayar ekranını açalım.

Burada “Choose Data Source” kısmındaki listeyi açıp “<New Data Source>” diyoruz.
Açılan yeni pencerede “Object” seçiyoruz ve “Ok” diyoruz.
Yukarıdaki ekranda açılır menüde daha önceden oluşturduğumuz adaptörler görünmektedir. Buradan “ProductsTableAdapter” seçiyoruz. “Next” diyoruz. Aşağıdaki ekran açılacaktır.
Bu ekranda değişiklik yapmadan “Finish” diyoruz. Böylelikle oluşturduğumuz obje olan “NorthwindDataset” imize bağlanacak ve aldığı verileri gridview’e iletecek bir “ObjectDataSource” yani obje veri kaynağı oluşturmuş olduk. "F5” e basarak sayfamızı çalıştırdığımızda personel bilgilerini listedelediğinizi göreceksiniz. Dikkat ederseniz tek satır kod yazmadık. Bir sonraki derste “Business Logic” tanımına yer vereceğiz. İyi çalışmalar.













