![]() | ||||||||||
Microsoft Visual Basic.NET ve ADO.NET ile SQL Server İşlemleri / 4 | 29.01.2005 | |||||||||
| Kategori : .NET Framework Özet : Bu bölümde windows uygulamalarında DataSet nesnesinin kullanımı ve kullanıcılara DataSet nesnesi aracılığıyla veri üzerinde nasıl işlem işlem yaptırabileceğimiz üzerinde durcağız. Sql Server verilerinin windows form kontrollerine bağlanmasını ele alıyor olacağız. Bu bölümde öncelikle verilerin textbox, combobox ve datagrid gibi kontrollere bağlanmasını, parent-child ilişkilerinin programatik olarak kurulmasını ele alıyor olacağız ve bölümü, bölüm boyunca verdiğimiz örnekleri içeren geniş kapsamlı bir örnek ile sonlandıracağız. | ||||||||||
| 4 - DataAdapter,
DataSet, Form ve Form Kontrolleri Bu bölümde windows uygulamalarında DataSet nesnesinin kullanımı ve kullanıcılara DataSet nesnesi aracılığıyla veri üzerinde nasıl işlem işlem yaptırabileceğimiz üzerinde durcağız. Sql Server verilerinin windows form kontrollerine bağlanmasını ele alıyor olacağız. Bu bölümde öncelikle verilerin textbox, combobox ve datagrid gibi kontrollere bağlanmasını, parent-child ilişkilerinin programatik olarak kurulmasını ele alıyor olacağız ve bölümü, bölüm boyunca verdiğimiz örnekleri içeren geniş kapsamlı bir örnek ile sonlandıracağız.
Form’a
DataSet Eklemek
DataSet local bir veri kaynağı olarak görülebilir ancak kullanılacak verilerin DataSet’e aktarılması gerekmektedir. Bu işlem için, SQL Server üzerindeki verileri, DataSet’e aktarmak için köprü görevi gören DataAdapter nesnesini kullanırız. Sunucu üzerindeki veri kaynağını bir SQL ifadesi, tablo adı, view veya stored procedure adı ile belirtebiliriz. DataAdapter nesnesinin iki ana görevi vardır. Birincisi, veri kaynağındaki verileri DataSet’e aktarır. Bu bölümde ilk olarak bu rolün üzerinde duracağız. İkinci olarakta local DataSet’teki güncellemeleri veri kaynağı ile senkronize etmek. Bu rolün üzerinde ise bu bölümün ikinci yarısında duracağız.
Veri kaynağından seçilecek verileri belirlemek için DataAdapter nesnesinin SelectCommand özelliğine ilgili SQL ifadesini yazarız. Veri kaynağındaki verileri DataSet’e DataAdapter nesnesinin Fill metodunu kullanarak aktarırız. Bu metod iki arguman kullanır. Birincisi verilerin aktarılacak DataSet’in adı, ikinci olarak kullanılacak DataSet’te verilerin kopyalanacağı tablo adı. DataSet içindeki tablolara, belirttiğiniz isimler ile erişebileceğiniz gibi index değerleriyle de (ilk eklenen tablo çin 0, sonraki her tablo için 1 artar) erişebilirsiniz.
Aşağıdaki örnek prosedür, DataAdapter nesnesi ve Command nesnesi kullanarak bir DataSet’in nasıl kullanılabileceğini göstermektedir.
Bu noktadan sonra ds adlı DataSet form üzerindeki her noktadan erişilebilir hale gelecektir. DataSet içindeki Categories adlı tablo kullanılarak veri üzerinde işlemler yapılabilir. Şimdi oluşturulan bir DataSet içindeki verilerin form üzerindeki kontrollere bağlanmasını görelim..
Verinin
Form Kontrollerine Bağlanması
İlk olarak Form yüklenirken Populate adlı prosedürü çağırarak DataSet’in oluşturulmasını ve Form üzerindeki kontrollerin DataSet içindeki DataTable nesnesinin sütunlarına bağlanmasını sağlayacak kodları yazıyoruz...
Daha sonra Combobox’ta yapılan seçim değiştiğinde Form üzerindeki kontrollerin, seçilen Kategorinin indexine göre görüntüledikleri verilerin güncellenmesini sağlayacak kodları yazıyoruz..
Karışık formlarla çalışırken simple data binding kullandığımız durumlarda (özellikle bizim hazırlamadığımız formlar üzerinde çalışmamız gerektiğinde) DataBinding raporu almak formu analiz etmemizi son derece kolaylaştıracaktır. Örneğimizdeki button bizim form’un databinding kolleksiyonunun raporunu almamızı sağlayacak kodları içerecek.
Aşağıdaki prosedür (PrintBindingMemberInfo) parametre olarak bir formun referansını alır ve iki adet döngü çalıştırır. Birinci döngüde form üzerindeki kontrolleri, ikinci döngüde ise birincei döngüden dönen kontrollerin DataBinding özelliğini sırayla kontrol eder ve rapor için hazırlar.
Bu kodları ekledikten sonra Button1 tıklandığında karşımız gelecek rapor aşağıdaki gibi olacaktır.
Şekil 4:2 – DataBinding Raporu
Bu prosedür aynı zamanda aktif olmayan formlar içind de kullanılabilir. Aşağıdaki prosedür Form1 üzerinden Form2’ye ait DataBinding raporu alabilmemizi sağlamaktadır.
DataSet’in Parent-Child İlişkili Tablolar ile Birlikte Kullanımı Tek bir tablo ile çalışabileceğimiz gibi DataSet içinde birden çok sayıda DataTable’da oluşturabiliriz. ADO.NET, ado gibi tüm kayıtları tek bir sonuç kümesinde birleştirmek yerinde birden çok DataTable arasındaki ilişkiyi hiyerarşik olarak tanımlamanıza olanak sağlıyor. Bu bölümde iki DataTable nesnesi içeren bir DataSet ile çalışma konusunu ele alacağız. Ek olarak DataGrid’de görüntülenen kayıtların kontrol edilmesi için bir ComboBox kontrolünün kullanımını görüyor olacağız. DataGrid’de görüntülenecek kayıtların ComboBox’a göre filtrelenmesi işlemini gerçekleştirebilmek için DataView kullanacağız. DataView nesnesi, Datagrid için DataSource olacaktır.
Aşağıdaki grafiklerde örneğimizin form tasarımını ve çalışma zamanı görüntülerini görebilirsiniz.
Şekil 4:4 – Çalışma Zamanı Görünümü
Bu örnekte kullandığımız DataSet nesnesi Products ve Categories DataTable nesneleri arasında bir ilişki tanımlar. Aşağıda, örneğin adım adım kodlarını açıklamalarıyla birlikte görebilirsiniz:
Buraya kadar tek bir form üzerinde veri işlemleri gerçekleştirdik. Bölümün sonunda birden çok form içeren uygulamalarda veritabanı işlemlerini nasıl gerçekleştirebileceğimizi gösteren bir uygulama geliştireceğiz.
Çoklu
Formlarda Veritabanı İşlemleri
Bu bölümdeki uygulama ayrı ayrı gerçekleştirdiğimiz bazı işlemlerin bir arada kullanımına örnek teşkil etmesi açısındanda önemlidir. Uygulamamızın birinci formunda bir il seçimi gerçekleştiriliyor. Birinci formda comboboxtan yapılan bu seçim button’un tıklanması ile ikinci forma gönderiliyor. İkinci form gelen parametreye bağlı olarak iki DataTable nesnesi oluşturuyor. Birinci DataTable’da gönderilen değer bir stored procedure’un çalıştırılması için parametre olarak kullanılıyor. İkinci DataTable ise yine gönderilen parametreye göre oluşturulan bir SQL ifadesine bağlı olarak çalıştırılıyor. Bu tablo ikinci formda bulunan textboxları doğrudan güncellemez, bunun yerine metin kutularını ikinci DataTable nesnesine dayanan DataView nesnesine bağlıyoruz ancak comboboxta yapılan seçime bağlı olarak filtreliyoruz.
Örneği geliştirmeye başlamadan önce kullanacağımız stored procedure’u hazırlamamız gerekiyor. Kodlar aşağıdaki gibi..
Formlarımızın tasarım aşamasındaki görünümleri ise aşağıdaki gibidir.
Birinci formun kodları ve açıklamaları aşağıdaki gibidir.
İkinci formun (örnek projemde Form4 adlı form) kodları ve açıklamalar aşağıdaki gibidir:
Uygulamanın çalışma zamanındaki görünümü ise şu şekilde;
Bir sonraki bölümde,
ADO.NET ile verileri silme, düzenleme ve yeni veri ekleme konularını ele alıyor
olacağız.. | ||||||||||
Yazgelistir.com | ||||||||||